Sicurezza in Drupal Corso Drupal 2013 Andrea Dori Cosa rende sicuro un sito Drupal? • • • • • • Password ‘forti’ Account dedicati Utilizzare il meno possibile User 1 Rendere stringenti i permessi Usare i text format per limitare l’input Evitare di usare PHP filter Password ‘forti’ Quanto tempo ci vuole per scoprire una password? Ma la password più sicura è anche quella più difficile da ricordare! Password semplici e ‘forti’ Potete usare, e Drupal le accetta, password di due o più parole. Potete leggere il resto dell’articolo su: http://www.baekdal.com/insights/password-security-usability Account dedicati • Non create account utente condivisi fra più utenti • Create ruoli • Eventualmente create ruoli multipli da stratificare per raggiungere la granularità voluta • Attenzione al ruolo Authenticated Non utilizzare User 1 • Come per tutti i sistemi, l’utilizzo diretto del superuser è fortemente sconsigliato • Ogni account Drupal è legato a un indirizzo di email. E’ un rischio anche la compromissione della casella di posta • E’ possibile creare un account utente in un ruolo di amministrazione e disabilitare user 1 (abilitandolo quando serve, eventualmente) Rendere stringenti i permessi • Concedere il meno possibile permessi non specifici, come ‘bypass view access control’, ad esempio • Come detto prima, non abbiate paura di creare troppi ruoli • Drupal consente una grande granularità, bisogna sfruttarla Usare i text format per controllare l’output • La possibilità di inserire qualsiasi sequenza di caratteri in un campo testo di Drupal porta alla vulnerabilità più diffusa: il cross-site scripting (XSS) • L’utilizzo di ‘filtered HTML’ o ‘plain text’ elimina o rompe le sequenze di caratteri ‘minacciose’ • Il modulo Security Review vi fornisce una valutazione sullo stato di sicurezza del sito • Per saperne di più su XSS: http://en.wikipedia.org/wiki/Cross-site_scripting Evitare di usare PHP filter • Anche se è comodo inserire codice PHP direttamente nell’interfaccia web è anche molto pericoloso! – È difficile eseguire il debug del codice – Il versioning diventa impossibile – Un hacker potrà iniettare qualsiasi tipo di codice se lasciate aperta la possibilità Sicurezza dei moduli • I moduli non sono sicuri tutti allo stesso modo e la sicurezza complessiva di un sito è quella del modulo meno sicuro • Come faccio a capire se un modulo o un tema sono sicuri? Moduli diffusi e mantenuti • I moduli più diffusi e con alta frequenza di aggiornamento sono anche più sicuri Moduli con minori problemi di sicurezza • Per controllare il livello di sicurezza di un modulo è utile controllare la coda degli issues Eseguite sempre gli aggiornamenti • Gli aggiornamenti della codebase e dei moduli costituiscono la pietra angolare della sicurezza complessiva del sito Sicurezza del sistema • La sicurezza del sistema sul quale Drupal è installato è ovviamente fondante del sistema di sicurezza complessivo. • Anche se il sistema ‘resiste’ agli attacchi può subire consistenti impatti sulle performance se viene continuamente attaccato. Un metodo di protezione del sistema: il .htaccess • Tramite una corretta configurazione del .htaccess è possibile evitare che gli attacchi vengano elaborati tramite PHP e Mysql. Questo ha il duplice effetto di rendere più sicuro il sistema e migliorare le performance. Un esempio: RewriteCond %{QUERY_STRING} ^.*(tag=|DFind).* [NC] RewriteRule ^(.*)$ - [F,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]