La messa in sicurezza di un dispositivo di rete va dalla protezione fisica del dispositivo stesso alla disattivazione di servizi non necessari, oltre all’impiego di funzionalità di sicurezza avanzate messe a disposizione dal sistema operativo del dispositivo. Di seguito alcuni punti chiave:
-
Sicurezza fisica: posizionare i dispositivi di rete in una stanza sicura, accessibile solo al personale autorizzato. È molto importante che all’interno della stanza siano presenti condizioni ambientali ottimali per i dispositivi elettronici, ossia assenza di interferenze magnetiche ed elettrostatiche, temperatura ed umidità a bassi livelli. Inoltre, è fondamentale garantire una stabilità elettrica con l’utilizzo di gruppi di continuità.
-
Sicurezza dei sistemi operativi: utilizzare sempre l’ultima versione disponibile del sistema operativo, nella sua versione dichiarata stabile dal produttore. E’ buona norma installare i dispositivi con un quantitativo di memoria RAM elevato. La disponibilità di memoria è di aiuto contro gli attacchi di tipo DoS. Da sottovalutare l’importanza di avere una copia dei file di configurazione, o un’immagine del sistema operativo quando possibile.
-
Hardening: con il temine “hardening” si intende la messa in sicurezza di un dispositivo con l’abilitazione di funzionalità di sicurezza avanzate, allo scopo di ridurre al minimo la possibilità di attacco (superficie di attacco). E' necessario infatti accertarsi che solo le persone autorizzate riescano ad accedere alle interfacce di gestione degli apparati, siano esse da riga di comando che in modalità grafica. Bisogna disabilitare porte (porte fisiche, ma anche porte di ascolto TCP!) e interfacce inutilizzate, e tutti quei servizi che, pur essendo attivi di default, non sono necessari.
Dando per scontati i primi 2 punti, la cui mancata soddisfazione renderebbe inutili gli accorgimenti previsti dall'hardening puro, ci concentreremo ora sulla configurazione degli accessi amministrativi sui router.
Le password
Impostare la password del router (in chiaro):
Router(config)#enable password password
Il comando “enable password” imposta la password di “enable”, ossia una password per l'accesso alla modalità privilegiata (privileged exec mode). Questa verrà richiesta quando si digita il comando enable per il passaggio dalla modalità utente a quella privilegiata. La password rimane tuttavia visibile nella configurazione (show run). Pertanto è preferibile l'uso del comando "enable secret" descritto di seguito, che cifra la password con l'algoritmo MD5. In tal modo, visualizzando la configurazione del router, la password verrà mostrata sotto forma di hash (stringa da cui non si può risalire alla password).
Impostare la password del router (cifrata con MD5):
Router(config)#enable secret password
Impostare una password per l’accesso tramite console:
Di default, l'accesso in console non richiede una password. In ottica di hardening, è preferibile impostarla con i comandi seguenti:
Router(config)#line console 0
Router(config-line)#password password
Router(config-line)#login
Impostare le password per l’accesso via rete (telnet, ssh) su tutti i terminali virtuali (da 0 a 4):
Router(config)#line vty 0 4
Router(config-line)#password password
Router(config-line)#login
Lunghezza minima delle password:
Per impostare una politica che imponga una lunghezza minima (da 0 a 16 caratteri) delle password, utilizzare il comando seguente:
Router(config)#security passwords min-lenght n°caratteri
Sessioni aperte, tempo di inattività e ritardi tra login
Modifica dei tempi per la disconnessione automatica
In maniera predefinita, un'interfaccia amministrativa rimane attiva e collegata per 10 minuti dopo l'ultima attività; allo scadere di questo tempo, la sessione viene chiusa. Questo tempo consentirebbe ad un malintenzionato di agire con livelli amministrativi nel momento in cui l'amministratore dovesse allontanarsi dalla sua postazione. Per ridurre al minimo questo rischio, occorre ridurre il tempo di inattività dopo il quale una sessione viene chiusa. Il comando da utilizzare è il seguente:
Router(config-line)#exec-timeout n° minuti
Protezione dei login
La sicurezza dei processi di login e autenticazione deve prevedere possibili attacchi DoS, attacchi a dizionario o a forza bruta. I metodi di difesa consistono nell'impostare un certo ritardo tra successivi login, chiusura del processo di autenticazione nel caso in cui venga rilevato un attacco DoS e generazione di un messaggio di log per ogni login effettuato.
Router(config)#login block-for secondi attempts tentativi within second
Router(config)#login quiet-mode access-class {acl-name | acl-number}
Router(config)#login delay secondi
Il primo comando effettua un blocco del processo di login per un certo numero di secondi se falliscono più di N tentativi all'interno di un intervallo di tempo stabilito. Ad esempio, il comando "login block-for 100 attempts 2 within 100" blocca il processo per 100 secondi se falliscono due login effettuati all'interno di un intervallo di 100 secondi. Il periodo di blocco è chiamato "Quiet Mode".
Il secondo comando consente l'accesso ad una lista (ACL) di host o reti anche nel caso in cui il router sia in "Quiet Mode".
ll terzo comando imposta semplicemente un ritardo forzato tra due login successivi.
Cifrare tutte le password
Per fare in modo che ogni password impostata sul router venga sempre cifrata, è possibile abilitare il servizio di password encryption.
Router(config)# service password-encryption
Va sottolineato tuttavia che l'algoritmo utilizzato in questo caso non è robusto quanto MD5, offerto con il comando “enable secret”. Pertanto, utilizziamo sempre “enable secret”.
Autenticazione con nome utente
Sui router Cisco, la configurazione degli accessi utilizzando solo la password per la modalità utente (user exec) o quella per la privileged mode è un metodo limitato, non scalabile e poco sicuro. E’ preferibile utilizzare una modalità basata su database che crei singoli account utente, ognuno con una specifica password. La sicurezza aumenta sia perché viene tracciato il log-in degli utenti, sia perché un eventuale attaccante dovrebbe conoscere, oltre alla password, anche il nome utente.
L’autenticazione basata su database locale si configura con i comandi seguenti:
Router(config)#username nome_utente password password
Router(config)#username nome_utente secret password
Bisogna poi indicare al router di effettuare la verifica delle credenziali sul database locale, credenziali necessarie per gli accessi aux, console, tty e vty:
Router(config-line)#login local
Con la combinazione username password, la password viene visualizzata in chiaro nel file di configurazione (se il comando service password-encryption non è configurato). Con la combinazione username secret, la password viene cifrata con l’algoritmo MD5. Pertanto, è consigliabile utilizzare solo la combinazione username secret e dimenticare l’altra.
Ricordiamo che il comando login senza la parola chiave "local" configura le linee di accesso (aux, console, tty e vty) per un’autenticazione basata sulla sola password, ossia quella impostata per ogni linea di accesso con il comando “password mia_password”.
Un metodo ancora più robusto e scalabile è quello offerto dal sistema di autenticazione AAA, che tratteremo in un articolo a parte.