Joomla! viene spesso accusato, da persone disinformate e incompetenti, di non essere sicuro. Il punto è che nessun sistema è ermetico, a meno che non si faccia quanto dovuto per metterlo al sicuro. La maggior parte delle persone al solo sentir nominare la parola "sicurezza" scappa. Non fatelo! Mettere al sicuro il proprio sito è piuttosto semplice, se sai cosa, dove e come farlo.
Questo articolo ti potrà sembrare poco approfondito, ma ti fornirà consigli a sufficienza per eseguire gli aggiornamenti più importanti, relativi alla sicurezza del tuo sito, in pochi e semplici passi.
Se sei un abituale frequentatore dei forum di Joomla! sarai di certo finito in alcuni frustranti post, di utenti nel panico perché il loro sito è stato hackerato. La verità è che tutte le applicazioni web subiscono lo stesso fenomeno, non perché siano insicure di natura, ma perché la maggior parte delle persone non ha la più pallida idea di cosa debba fare per proteggere il proprio sito. Mettersi al sicuro non è difficile ma nemmeno troppo facile. E’ un po’ come un sistema anti-concezionale. E’ fondamentale, ma nessun metodo è a prova proiettile. Di conseguenza, questo articolo non vuole essere una guida completa alla sicurezza di Joomla! ma – molto similmente a Joomla! Security Checklist – è solo un insieme di linee guida che potrai facilmente seguire per dormire sogni un pò più tranquilli.
Backup
La legge di Murphy dice che si sarà colpiti da una catastrofe nel momento in cui non si hanno i mezzi per ritornare all’ultima posizione funzionante conosciuta. Non farti trovare senza un backup! Grandi compagnie falliscono poiché sprovviste di backup, o in possesso solo di uno parziale. Quando parliamo di siti Joomla!, si ha bisogno di un backup completo dei files e del database. Il modo più semplice per ottenere un backup completo del sito è utilizzando Akeeba Backup, il più conosciuto componente gratuito per i backup, in continua via di sviluppo. E’ vero, sono di parte – sono il suo più importante sviluppatore – ma puoi sempre fidarti della JED e giudicare tu stesso.
Uno dei fattori importanti è quanti backup hai e come li conservi. Conserva almeno un intero mese di backup giornalieri oppure 6 mesi di backup settimanali. Questo metodo ti darà la possibilità di ripristinare il sito, ad un momento perfettamente funzionante del passato, se pur venga compromesso. Non salvare i tuoi backup soltanto sullo stesso server del tuo sito! Scaricali sul tuo hard disk e tieni almeno due copie salvate su differenti archivi removibili come ad esempio CD-ROM, pendrive, hard disk esterni, possibilmente conservandoli in posti differenti. Ancora meglio sarebbe utilizzare un servizio di cloud storage – come Amazon S3, DropBox, Wuala, or Ubuntu One – per mettere al sicuro uno dei tuoi backup. Non si può mai essere troppo paranoici sulla protezione dei file di backup!
Aggiornare, ieri.
Il momento migliore per effettuare gli aggiornamenti a Joomla! e le sue estensioni è ieri, non domani! Certo, non puoi tornare indietro nel tempo, proprio per questo è di fondamentale importanza essere aggiornati sulle security release. Devi assolutamente sottoscriverti al news feed JSST, se non l’avessi già fatto, così come dare continuamente uno sguardo alla lista delle estensioni vulnerabili. E' ovvio che devi anche sottoscriverti ai feed relativi a tutte le estensioni che hai installato nel tuo sito. Ogni qual volta una nuova versione di un’estensione viene rilasciata, va immediatamente aggiornata! La pigrizia è un peccato mortale nel crudele ambiente web.
Potresti voler testare gli upgrade rilasciati per le tue estensioni prima di renderli attivi sul tuo sito web ufficiale. Akeeba Backup è di nuovo tuo amico, visto che puoi fare un backup – lo hai fatto vero? – per creare un “clone” del tuo sito web su un sottodominio, o server locale, approfittane per fare i dovuti test ed assicurarti che tutto funzioni alla perfezione.
Bloccare l’utente 62.
Non sai cos'è l’utente 62? Per farla breve, quando installi Joomla! sul tuo sito, esso crea un account Super Administrator con un già noto username (admin) ed un altrettanto noto ID utente (62). Questa falla è stata utilizzata in passato dai crackers per ottenere l’accesso di Super Administrator ai siti ignari di questa problematica. La cosa migliore da fare è creare un nuovo utente Super Administrator, effettuare il logout, effettuare il login con il nuovo utente Super Amministratore e retrocedere al livello Registered il vecchio Super Administrator con id 62.
Introdurre più fattori di autenticazione al back-end.
Tutti i siti Joomla! hanno una cosa in commune: l’indirizzo del back-end. E’ sempre qualcosa tipo http://esempio.com/administrator. Sai cosa mi infastidisce? Che è soggetto a brute force attacks, ovvero qualcuno prova arbitrariamente ed in maniera automatica ad inserire login e password fin quando non trova la giusta combinazione e può loggarsi come Super Administrator. Il modo migliore per attenuare questo problema è porre degli ostacoli sul loro cammino verso il cracking del tuo sito.
Una valida alternativa è quella di proteggere la directory “administrator” con una password. La maggior parte, se non tutti, dei pannelli di controllo degli hosting ti permettono di proteggere una directory con una password. Bene, fallo! Metti una password alla tua cartella administrator, in modo tale che si dovrà inserire un nome utente ed una password prima di poter accedere alla pagina d’accesso al back-end.
Il mistero, talvolta, è positivo.
Anche se non sono un sostenitore della sicurezza misteriosa, a volte è un buon metodo scoraggiare gli script kiddies o rendere la vita dei cracker semi-seri difficile, spingendoli a cercare un bersaglio più semplice. Perciò l’ideale sarebbe rendere tutto ciò che non è necessario per il corretto funzionamento del tuo sito, inaccessibile a tutti. Ho scritto un articolo a riguardo ad ottobre, che consiglio di leggere. Considerate però che, se si scegliesse di implementare queste direttive, sono intenzionalmente iperprotettive. Potrebbe essere necessario aggiungere delle eccezioni per i file PHP chiamati in causa, come ad esempio il payment gateway callback scripts di VirtueMart o il file fetchscript.php di eXtplorer
ACL per il back-end.
Fidatevi quando vi dico che i gruppi di default del back-end di Joomla non sono così sicuri come si potrebbe pensare. In particolare il gruppo Amministratore, intrinsecamente molto permissivo, non fornisce un'adeguata sicurezza da possibili violazioni interne. Non posso aggiungere altro, ma sono riuscito positivamente ad aumentare i permessi dell’Administrator a Super Administrator. Suggerisco di utilizzare una soluzione ACL di terze parti per limitare l’accesso degli utenti al back end solo a specifiche parti del core ed a componenti di terze parti, a seconda del ruolo che hanno nella gestione del sito. Grazie agli sforzi degli sviluppatori del core di Joomla! nella 1.6 sarà possibile definire i permessi ACL senza dover ricorre ad estensioni di terze parti.
Permessi di file e directory.
Qui tocchiamo un punto dolente, specialmente considerando il largo uso di hosting per Joomla! scadenti. Se il tuo hosting non utilizza suPHP – il quale effettivamente cura i permessi – conviene utilizzare una serie di permessi efficaci per i tuoi file e le tue cartelle. Se non hai idea di cosa siano permessi, proprietà, utenti, ecc potresti leggere prima la mia concisa introduzione all’amministrazione di un web server.
Prima di tutto, assicurati che ogni file del tuo sito sia stato caricato tramite FTP, rendendo il tuo account utente effettivamente il proprietario del file. Poi, assicurati che tutte le directory abbiamo permessi 0755 mentre i files 0644. Infine, abilita l’ftp nel pannello di configurazione globale di Joomla!. Questo farà in modo che la maggior parte degli script di cracking, che necessitano di PHP per modificare arbitrariamente i file, falliscano.
Log grepping
Questa è una tecnica spesso messa in discussione, ma io la trovo utile. Inoltre è fondamentale post-mortem, ad esempio, per identificare il problema se il tuo sito viene compresso. Comunque, l’idea è quella di scaricare il file log degli accessi al sito e analizzarlo utilizzando un apposito tool, alla ricerca di tutto ciò che non dovrebbe esserci. Esempi di “cosa non dovrebbe esserci” sono:
- Dati codificati Base64
- Comandi SQL
- Script tags
- Caratteri Unicode Non Stampabili
Si trovano molte informazioni in rete sul log greeping. Non impazzirci però, come ho già detto, è solo un altro strumento per monitorare lo stato di salute del tuo sito. La maggior parte delle volte non puoi farci niente per gli attacchi al tuo sito, ma puoi almeno eseguirli in una copia in locale del sito per capire il loro effetto – ed accorgerti di eventuali violazioni.
I file modificati possono essere la fine dei giochi per il tuo sito.
Questo è l’ultimo step. Non significa che ti protegga, ma almeno funge come campanello d’allarme.
Mettere controlli e restrizioni è essenziale, ma solo se non falliscono. Come disse Einstein: “Solo due cose sono infinite, l’universo e la stupidità umana, e non sono sicuro della prima”. Un cracker geniale, o anche uno stupido, potrebbero trovare casualmente un modo per bypassare i controlli di sicurezza ed ottenere accesso non autorizzato al tuo sito. Potrebbero addirittura aver bucato il tuo sito ieri e sfruttare la backdoor oggi.
Anche in questo caso, hai necessità di sapere quando sei stato crackato in modo che tu possa metterci una pezza. Una soluzione semplice (concettualmente) è quella di confrontare lo stato del tuo sito con l’ultimo backup non compromesso. Ho scritto una utility che ti può aiutare, la quale opera su due file di backup, ed un articolo su come usarla ed interpetrare i risultati. Il software adesso è stabile, si chiama Akeeba SiteDiff, ed è disponibile gratuitamente nella sezione download di Akeeba Backup.
Considerazioni finali
Sfortunatamente, abbiamo esaurito lo spazio a disposizione! Quello sulla sicurezza è un argomento molto vasto, uno di quelli che non sta dentro un libro tascabile. Quello che ci siamo detti è solo un accenno, giusto qualche buon consiglio per indirizzarvi nella giusta direzione. Ogni punto necessità di un po’ di approfondimento, seguito da sbagli e tentativi, affinchè venga implementato. Ricordati che Roma non è stata costruita in una notte. Prova ad implementare un punto per volta in modo tale che tu possa perfezionare la sicurezza del tuo sito. Ci vuole tempo, ma ne vale la pena, specialmente se stai guadagnando con il tuo sito, sia direttamente (e-commerce, pubblicità) o indirettamente (indirizzando potenziali clienti al tuo business). Nei prossimi numeri del Joomla! Community Magazine introdurrò nuove idee sulla sicurezza e consigli pratici per rinforzare i siti.
In conclusione, vi starete chiedendo se davvero avete bisogno di tutte queste misure di sicurezza. La risposta è, assolutamente si! Non crediate che solo i siti con un grande traffico sono sensibili ad essere crackati. Ho visto siti con solo 30 visitatori al mese essere hackerati. Perché? Penso che non lo sapremo mai, le motivazioni dei cracker possono essere diverse, oscure e al di là dei nostri ragionamenti. Il tuo sito può essere nel mirino di un potenziale attacco di un cracker durante un picco di adrenalina. Sei sicuro di volerlo aspettare seduto come una papera? Io non credo.
Articolo originale scritto da Nicholas K. Dionysopoulos e tradotto da Vincenzo Galliano
Articolo Prelevato dal sito di joomla.it