Defense in Depth
Da Security e-Book.
Spesso si continuano vendere firewall come “la soluzione” per i problemi legati alla sicurezza: “hai un problema di sicurezza? Allora inseriamo un firewall”. Il firewall come teconologia è sicuramente importante, ma non serve solo un firewall a fare una architettura intrinsecamente sicura. Bisogna cambiare mentalità, pensare ad ogni componente in maniera sicura, pensare con un'altra filosofia.
I sistemi di difesa sono sempre stati considerati un'arte sin dagli antichi Romani. Nel medioevo, i manoscritti piu preziosi erano protetti da diversi livelli (o in inglese layers) di difesa: erano conservati in castelli che erano sempre posizionati nella collina piu alta, circondati da fossati pieni di coccodrilli, nella torre piu difficile da raggiungere, e nascosti in una stanza segreta protetta da trappole mortali. Anche se un intruso riesce a penetrare nel primo livello di difesa, piu prosegue nel suo attacco, piu incontrera resistenza: in questo modo l'attaccante si stanca e potrebbe non riuscire a superare i livelli di protezione successivi.
Anche se i mezzi, gli attaccanti e le cose da proteggere sono cambiate nei secoli, le tecniche di difesa rimangono valide ancora oggi. Chiamiamo questa filosofia la Defense in Depth
Anche nell'informatica, quindi, andrebbere applicata una difesa basata su differenti livelli di protezione (security layers). Il pensiero o la filosofia del Defense in Depth, in breve, rappresenta l'uso di differenti tecniche di sicurezza per mitigare i rischi che un eventuale livello venga compromesso o scavalcato. Un classico esempio e quello di un antivirus su ogni workstation e uno sui mail/file servers. Questa filosofia dovrebbe essere applicata in ogni sistema, specialmente in quei sistemi contenenti dati critici o in ambienti ad alta sensibilita (militare/governi/finanziari/...). Tutti i sistemi, configurazioni, applicazioni e sviluppo software devono essere pensati fin dall'inizio in un ottica di sicurezza, ad esempio dando il minor privilegio possibile ad un utente su una applicazione o restringendo il raggio d'azione di una rete wireless.
Possiamo applicare la filosofia nei seguenti componenti di sicurezza di un sistema (questo si applica in special modo a Linux):
- Installazione di un sistema minimizzato
- Hardening del sistema
- Configurazione di un sistema con Mandatory Access Control (SELinux)
- Utilizzo della virtualizzazione per confinare un servizio/applicazione
- Configurazione sicura dell'applicazione
- Autenticazione degli utenti (strong authentication)
- Aggiornameto periodico delle patch di sicurezza (Red Hat Network, yum, Windows update,...)
I componenti descritti non sono esclusivi tra loro, ne devono essere necessariamente utilizzati tutti. Ovviamente maggiori saranno i componenti attivati, maggiore sara la sicurezza del sistema. Non esiste una “ricetta magica” per capire quanti layers andranno attivati, dipende dalla tipologia dell'ambiente in cui e calato il sistema.
Sicurezza non è e non deve essere sinonimo di complessità, bisogna che sia il più possibile trasparente all’utente: è possibile far convivere la sicurezza con la semplicità d’uso, ad esempio abilitando tramite policy di Active Directory l’uso di IPSec verso i sistemi principali. Con un semplice gesto, e senza che l’utente si accorga minimamente del cambiamento, abbiamo reso più sicura la nostra rete ed i nostri dati. Bisogna ricordare che, come amministratori di rete o di sistemi, o come IT manager, l’utente finale è il nostro vero valore e non bisogna farlo sentire a disagio: se applichiamo complesse procedure rischiamo che l’utente tenti di “aggirare l’ostacolo”, con gravi ripercussioni sulla sicurezza della nostra rete.