In linea teorica il server Web dovrebbe operare nell'ambito di una
configurazione di rete e di sistema davvero minima. Il rispetto di questa
semplice regola è effettivamente in grado di produrre come risultato un
sensibile miglioramento dei livelli di sicurezza attraverso degli espedienti
quali:
- la disabilitazione di tutti i servizi di rete non essenziali ed, in particolar modo, di quelli affetti da vulnerabilità conosciute sotto il profilo della sicurezza;
- la rimozione dal sistema dei files corrispondenti ai servizi disabilitati;
- l'eliminazione delle porte TCP ed UDP in ascolto superflue;
- la rimozione o disabilitazione di tutte le risorse non richieste in relazione al ruolo dell'host (compilatori, interpreti, shell, scripts ed altri strumenti analoghi);
- la corretta gestione degli utenti e dei loro privilegi;
- la predisposizione di regole adeguate per l'accesso e l'uso delle risorse;
Le attività di cui ai punti da 1 a 4 sono particolarmente importanti non
soltanto in un ottica generale di riduzione dei rischi di compromissione del
sistema ma anche in vista di uno snellimento delle attività di amministrazione
e, quindi, della minore probabilità di commettere errori di configurazione che
possono essere prontamente sfruttati da un aggressore.
A tal fine, proprio
per evitare di commettere dimenticanze, è conveniente adottare un approccio del
tipo "deny all, then allow" che consiste prima nel disabilitare indistintamente
tutti i servizi e le porte TCP/UDP e poi nel riabilitare, dopo un attenta
valutazione, soltanto quelli veramente essenziali.
Anche per quanto
concerne la gestione degli utenti e dei privilegi vanno prefissate delle regole
improntate a criteri restrittivi dirette ad:
- impedire che il servizio http venga lanciato da un utente con privilegi amministrativi perchè questo può comportare l'acquisizione del controllo completo del sistema in caso di exploit eseguito con successo;
- disabilitare o rimuovere tutti gli account inutili, installati dal sistema operativo o da altri software, per ridurre il rischio di una impersonificazione o scalata dei privilegi nel caso di intrusione;
- modificare il nome dell'account di amministratore;
- adottare criteri di robustezza delle password sotto il profilo della lunghezza (almeno 8 caratteri), complessità (alfanumerica con un mix di caratteri maiuscoli e minuscoli e l'uso di caratteri non stampabili), riutilizzo (da evitare) e durata (mediamente 30-120 giorni);
- verificare direttamente le password, preferibilmente mediante gli stessi strumenti usati dagli hackers, per accertare che esse rispondano ai criteri voluti ;
- impostare il blocco degli utenti dopo un certo numero di tentativi falliti di login;
Il blocco degli utenti è una misura da adottare con cautela poichè
costituisce un arma a doppio taglio che può spingere l'aggressore a provocare
una situazione di D.O.S (Denial of Service) per l'utente attraverso una serie di
tentativi di connessione falliti.
I singoli processi coinvolti nella
gestione del servizio http devono comunque avere accesso soltanto ai file ed
alle directory necessari al loro funzionamento per i quali occorre specificare
delle regole di accesso (cosiddette acl o access control list) che, oltre ad
offrire una maggiore granularità nel controllo dell'uso delle risorse, sono in
grado di scongiurare o mitigare gli effetti derivanti da un eventuale attacco
D.O.S diretto a provocare una situazione di indisponibilità dell'intero sistema
proprio attraverso un esaurimento delle sue risorse. In questa
prospettiva, anzi, per ridurre significativamente gli effetti derivanti da
attacchi di questo genere, è sempre consigliato il ricorso ad ulteriori
interventi correttivi che consistono nel:
- creare una singola directory radice e da essa far derivare una gerarchia di
sottodirectory nelle quali suddividere le risorse che costituiscono il contenuto
pubblico del Web; - limitare ad una sola directory, opportunamente configurata e protetta, tutti
i programmi "esterni" eseguiti come parte integrante del servizio Web; - limitare l'uso dei file temporanei da parte dei singoli processi all'interno
di apposite directory opportunamente protette e consentirne l'accesso soltanto
ai processi stessi; - impedire che file e risorse esterne alla gerarchia di directory del server
possano essere forniti in risposta alle richieste degli utenti; - disabilitare l'uso dei link simbolici per evitare che risorse facenti parte
del contenuto del Web possano puntare a file di sistema o ad altre risorse
all'interno della LAN; - aggiustare le priorità dei vari processi di sistema;