Questo snello volumetto, scritto dall'autore di un
testo sul Disaster Recovery Plan di Joomla!, introduce in meno di 250 pagine il tema della sicurezza, in generale degli applicativi informatici
web-based, in particolare quella del popolare CMS basato sul linguaggio PHP. Sebbene, in effetti, si tratti di un testo rigoroso, che pone l'accento non solo sull'uso dei tool, ma soprattutto su quello di processi strutturali e sulla stesura di buona documentazione, è un libro che si rivolge al neofita della sicurezza. È il classico testo che si può definire
utile sia al principiante che all'esperto; sicuramente in 250 pagine il tema non può essere sviscerato, ma altrettanto sicuramente l'esperto
Canavan è in grado di riassumere tutti gli argomenti fondamentali.
Spetterà poi al lettore proseguire in questo percorso, nella pratica quotidiana di chi sceglie di occuparsi di sicurezza dei sistemi informativi.
Il testo è scritto con linguaggio semplice e comprensibile dal neofita, ma non per questo lo si può definire banale. Un occhio di riguardo è riservato anche agli aspetti etici di questa particolarissima branca delle scienze/arti informatiche; ogni tipo di dato identificativo è stato cancellato con cura dal testo, dalle immagini e dagli snippet di codice, ogni codice che possa essere usato per perpetrare attacchi è volutamente incompleto, ed è stato omesso del tutto dal
codice di esempio scaricabile.
Il
primo capitolo introduce alla scelta dell'hosting per la propria installazione di Joomla!; propone un piano strutturato in undici passi per l'architettura della propria presenza web; introduce il tema delle metriche di sicurezza e propone un breve assaggio di argomenti che saranno poi oggetto di interi capitoli, come le impostazioni del
php.ini piuttosto che del file
.htaccess, o i permessi utente. Possiamo apprezzare sia la capacità di sintesi di
Canavan, che la volontà di fornire le basi per una metodologia piuttosto che ricette pronte all'uso.
Il
secondo capitolo si concentra sull'allestimento di un ambiente di test e sviluppo. Anche qui, l'accento è più sulla
ratio e sulla stesura di un piano di test e di un processo strutturato per l'applicazione di patch ed aggiornamenti che sull'uso dei tool necessari. Ciò nonostante vengono presentati due ottimi prodotti, il sistema di gestione dello sviluppo software
Artifact Lighthouse (del quale esiste una versione gratuita, monoprogetto, fornita in ASP e con una serie di altre limitazioni, fra cui quella dei 10 utenti) e il
Ravenswood Joomla! Server. Personalmente, però, per l'allestimento di un ambiente di test per Joomla! ho sempre trovato insuperabile l'uso di
XAMPP e l'installazione di Joomla! dall'ultima release stabile. Un altro argomento sul quale
Canavan spende qualche pagina è l'uso dell'ambiente di test come
hot mirror di quello di produzione, per il recovery in caso di disastro.
Per la gioia degli
smanettoni, il
terzo capitolo è interamente dedicato all'uso dei tool. Nella
cassetta degli attrezzi troviamo sia strumenti
general-purpose fra i più noti - come il port scanner
NMap (il testo è abbastanza recente da nominare la sua GUI, ovvero
Zenmap), l'analizzatore di protocollo
Wireshark, lo scanner di vulnerabilità
Nessus e quel potente quanto ambivalente strumento che è
Metasploit (un tool bloccato dalla maggior parte degli antivirus in commercio, che è illegale usare al di fuori del proprio ambiente di test senza permesso scritto) - sia prodotti specifici per Joomla!.
Fra di essi, una nota di merito va sicuramente all'accoppiata
HISA/JTS; si tratta rispettivamente di uno script PHP e del più sofisticato e completo componente per Joomla!, che costituiscono una piattaforma di
security audit per il popolare CMS. Si tratta del classico
must have per chi deve occuparsi della sicurezza di un'installazione di Joomla!, ed è davvero un peccato che il pool di sviluppo non ne abbia ancora rilasciato una versione nativa per Joomla! 1.5. Oltre a questo piccolo gioiello troviamo nominati
Joomla! Diagnostics, una creazione di
Adam von Dongen (l'autore di
YaNC), un checker di integrità dei file contenuti nella propria installazione di Joomla!
versus un database (sotto forma di file di testo) di quelli rilasciati dal team di sviluppo; e il prodotto commerciale
JCheck, che con un po' di fantasia potremmo definire il
Tripwire di Joomla!. Anche di questo componente non esiste ancora una versione 1.5-nativa; a scanso di equivoci, è bene comunque sottolineare che si tratta di un'applicazione che va installata direttamente sul Web server, e che il componente per Joomla! svolge solo le funzioni di bridge di configurazione e reportistica.
Nei successivi tre capitoli viene affrontato il problema degli attacchi alla propria installazione di Joomla!; più precisamente, nel
quarto capitolo si parla di vulnerabilità, nel
quinto si affrontano due comuni tipi di attacco, la
SQL Injection e i
Remote File Includes; e nell'impagabile
sesto capitolo vengono affrontate le modalità operative degli attaccanti
in the real world. L'attenzione è sempre sul processo, ma non difettano gli snippet (la maggior parte delle volte volutamente incompleti), che mostrano esempi di attacco reali; sono di particolare interesse, nel
quinto capitolo, la checklist di metodi per prevenire gli attacchi di
SQL Injection e la lista di riferimenti finale. Fra le varie
countermeasure, viene spesso ricordato il test di ogni input esterno onde validarne tipo, lunghezza, formato e range di valori.
Come già detto, il
sesto capitolo è una non comune, quanto ben fatta, descrizione delle modalità operative usate in attacchi reali, con una continua attenzione alla
ethic disclosure di informazioni ambivalenti. Troverete alla fine addirittura la trattazione, con delle preziose schermate ben purgate, delle più comuni shell da rootkit. In questo capitolo trovano anche spazio i tool: oltre a quelli citati nel terzo capitolo, vengono presentati
Nikto - prende il nome dal robot di
Ultimatum alla Terra di
Robert Wise -
Acunetix,
Ping Sweep,
Angry IP Scanner, ed il
fingerprinter di firewall
Firewalk. Quest'ultimo è un tool d'uso avanzato che porta scritto, in ogni linea di codice,
maneggiare con cura, il suo uso (anche consapevole) darà luogo al
triggering di allarmi nella maggior parte dei tool di monitoraggio di rete, e lo stesso
Canavan lo presenta per completezza, ma ne sconsiglia l'uso. Se l'autore pone continuamente l'accento su
NMap, il tool del quale non farei personalmente mai a meno è il formidabile scanner di vulnerabilità
Acunetix, gratuito nella versione che testa i soli attacchi XSS (ma non è poco), usato tra l'altro per i test dal team del core di Joomla!.
Il
settimo capitolo parla della configurazione dei due file fondamentali per un ambiente Apache/PHP, ovvero
.htaccess e
php.ini. La parte su
.htaccess è, per ammissione stessa dell'autore, una serie di
ricette pronte all'uso riprese da un
post di Jeff Starr e
reprinted by permission; la parte sul
php.ini è brevissima, meno di un paio di pagine, e ugualmente riporta poche e semplici impostazioni consigliate. Vi è da dire, comunque, che delle impostazioni del
php.ini si parla occasionalmente anche in altre parti del libro e che alla fine del capitolo viene riportata una serie di fonti per approfondire un argomento sul quale è obiettivamente difficile essere esaustivi.
L'analisi dei file di log, operazione talvolta noiosa ma davvero indispensabile, è l'oggetto dell'
ottavo capitolo. L'analisi dei formati e dei procedimenti di backup è intervallata da utili informazioni di riferimento, quali la tabella dei codici di stato HTTP 1.1 piuttosto che la segnalazione di
Block A Country, un utile servizio per generare file
.htaccess, che bloccano la lista di IP registrati presso un dato Paese. Il capitolo si chiude con gli strumenti per l'analisi dei log: accanto all'immancabile
AWStats troviamo due componenti per le statistiche di Joomla!,
BSQ Sitestats (che però, per scelta dello sviluppatore, non sarà mai disponibile per Joomla! 1.5) e l'interessante
JoomlaWatch, in grado di fornire statistiche in tempo reale sui visitatori (si tenga presente che dalla versione 1.2.6 mostra degli ads pubblicitari nel back-end di amministrazione).
Il
nono capitolo su SSL è molto breve e, oltre alla teoria di base, illustra praticamente solo lo snippet
.htaccess necessario per attivare SSL sull'intero sito Joomla!: un'operazione che
Canavan giudica preferibile alle modalità offerte via back-end di amministrazione da Joomla! 1.5. Il
decimo ed ultimo capitolo presenta, naturalmente non in dettaglio, il framework per la gestione degli incidenti offerto dallo standard
NIST 800-61. Un modello organizzativo così complesso, pesantemente basato su policy, è certamente ridondante per molte installazioni
one-man-gang, ma al di là delle prassi il documento ha sicuramente molti principi da insegnare. Nel
Security Handbook in appendice vengono riassunti, sotto forma di checklist, molti topic presentati più in dettaglio nel libro; ma anche presentati argomenti nuovi, come i componenti di backup per Joomla!, o l'
elenco delle porte usate dai principali
backdoor, piuttosto che quello delle estensioni di dominio o delle
well-known port.