Vista la brutta esperienza che ho fatto per via di attacchi hacker ad alcuni dei miei siti web realizzati con Joomla, ho maturato un minimo di esperienza nel campo della sicurezza.
Questo è il mio punto di vista e quelli che sono secondo me i requisiti fondamentali per tenere in sicurezza un sito web fatto con Joomla!:
- conoscere PHP e MySQL
- tenere sempre aggiornato Joomla! e i suoi componenti
- fare periodicamente un saltino quì http://www.exploit-db.com/
Dopo una serie di attacchi hacker ho cercato di rendere i miei siti più sicuri e soprattutto meno vulnerabili, sia per una questione di immagine e professionalità che si dà al proprio cliente, sia per evitare di avere continue scocciature.
Allo stato attuale dei fatti Joomla! 1.5 pare abbastanza stabile e sicuro, infatti i maggiori veicoli di attacchi hacker sono le estensioni che molto spesso lasciano aperti dei varchi che gli hacker utilizzano per riuscire a ottenere informazioni delicate quali username e password di accesso al sito.
La prima regola è quella di avere sempre un backup aggiornato del sito, per questo utilizzare funzioni specifiche che il pannello di controllo del vostro service provider vi mette a disposizione in materia di backup periodico.
Quando si verifica un attacco hacker la prima operazione da compiere in teoria è quella di ripulire/ripristinare il sito, magari cambiando username e password di accesso come amministratore/super amministratore al backend del sito e anche la password relativa alla connessione al database MySQL. Spesso nella cartella /tmp della directory di installazione di Joomla! si trovano tracce dell'attacco hacker. Poi magari cercare di installare eventuali aggiornamenti per componenti, plugin e moduli e per Joomla! stesso.
In realtà quando si verifica un attacco hacker è difficile capire subito cosa hanno modificato nel sito: se hanno installato dei backdoor e quali informazioni sono state trafugate. Ma quando ciò accade vuol dire che nel nostro sito c'è una falla di sicurezza che gli hacker hanno sfruttato per entrare e se non ripariamo quella falla, saremo sempre suscettibili di attacchi.
Una buona regola può essere quella di tenere sempre sott'occhio siti come quello che vi ho indicato sopra al punto 3. In questi siti trovate buona parte degli exploit scoperti per svariati software e sistemi operativi. Date un'occhiata e vedete se risulta presente nel database una falla di sicurezza della versione Joomla! che avete installato nel vostro sito oppure dei componenti, plugin e moduli che avete installato e cercate di capire quale exploit hanno usato per attaccare il sito. Se lo trovate cercate di riprodurre l'attacco al vostro sito e vedete cosa succede. Solitamente quando trovate l'exploit giusto accade che sulla pagina web generata vi appariranno le username memorizzate sul sito e relativi hash delle password.
A questo punto dovremmo essere in grado di capire quale è la parte fallata del sito e dobbiamo cercare di porre rimedio. Se questo non si può fare applicando degli aggiornamenti o patch allora dobbiamo fare affidamento sulle nostre capacità di programmatori. E' a questo punto che conoscere PHP e MySQL può aiutarci a capire quale sia la riga di codice da correggere per evitare futuri attacchi o magari a capire se è il caso di aggiungere qualche controllo in più sulle variabili che sono spesso veicolo di stringhe maliziose che producono output a schermo che violano la nostra privacy e quella degli utenti iscritti al nostro sito.
Dopo aver applicate le dovute correzioni, rieseguite l'exploit di cui sopra e se non vi appariranno più a schermo i dati sensibili allora siete riusciti a riparare la falla.
In genere i componenti, pulgin e moduli opensource sono maggiormente bersaglio di attacchi hacker perché il loro sorgente è di pubblico dominio, quindi chiunque può scaricarli e studiarli alla caccia di possibili falle.
Un altra buona regola sarebbe quella di non usare il prefisso standard di Joomla! per le tabelle del database che è jos_ ma sceglierne uno diverso in quanto molti degli exploit che ho visto danno per scontato che venga utilizzato il prefisso jos_. L'unico problema che potrebbe verificarsi è che a volte anche le estensioni che utilizziamo danno per scontato che il prefisso delle tabelle sia quello standard di Joomla!, quindi cambiando il prefisso queste smettono di funzionare. In questo caso tocca modificare il codice PHP.
Inoltre sarebbe buono includere qualche riga al vostro file .htaccess per migliorare la sicurezza del sito come spiegato quì: htaccess examples (security)
Infine potete usare tool per testare la sicurezza del vostro sito: Joomla! Security/Vulnerability Scanner
Commenti, suggerimenti, correzioni e altre esperienze sull'argomento sono molto gradite, quindi non esitate ad usare il form dei commenti.