Lo strumento più comune per difendere i propri computer, che siano desktop o server, sono i firewall. Il problema è che da soli non bastano: sono utili per impedire delle connessioni, il problema è capire quali connessioni debbano essere bloccate e quali no. Per esempio, un programma come Fail2Ban è un buon modo per identificare tentativi di brute force delle password, e bloccare le connessioni che li stanno facendo. Ma quello è solo uno degli attacchi che un sistema può subire quando è esposto ad internet. Per rilevare le intrusioni è necessario un NIDS , un programma capace di analizzare il flusso di rete e scoprire in tempo reale tentativi di accesso remoto, per esempio tramite buffer overflow, shellcode, o scansione delle porte. Il più famoso in circolazione è Snort , semplice da configurare e molto leggero. Definendo alcune regole in un file di testo è possibile stabilire cosa tenere sotto controllo: il programma analizzerà poi automaticamente tutto il traffico alla ricerca di pacchetti di rete inusuali, che possano suggerire una potenziale minaccia.
Il modo più semplice per installare snort su un sistema di tipo Debian è usare il sistema dei pacchetti con il comando
sudo apt-get install snort
In alternativa è comunque possibile scaricare il codice sorgente e compilare snort, visto che spesso passa diverso tempo prima che l’ultime versione del programma venga inserita nei repository.
Durante l’installazione viene richiesto di indicare quali indirizzi considerare come parte della propria rete locale. Questo è utile per distinguere i dispositivi della LAN da tutti gli altri, nel caso si vogliano considerare i primi come più affidabili e quindi porre sotto un regime di controllo più stretto soltanto i secondi.
Il file di configurazione è /etc/snort/snort.conf
, è possibile aprirlo con un editor per modificare le impostazioni predefinite. Si possono indicare, per esempio, delle specifiche porte su cui controllare i servizi. Se il proprio server SSH non è in ascolto sulla porta 22, sarà opportuno modificare questo valore nell’apposita riga.
Dopo avere modificato la configurazione, è opportuno provare per assicurarsi che funzioni. Lo si può fare con il comando
sudo snort -T -c /etc/snort/snort.conf
Se tutto va bene, dopo una serie di test il programma dovrebbe avvisare di aver validato correttamente il file.
L’altro file da modificare è /etc/snort/rules/local.rules
, che contiene le varie regole per stabilire ciò che si vuole tenere sotto controllo. Inizialmente dovrebbe essere vuoto, ma inserendo le righe
alert tcp any any -> $HOME_NET 21 (msg:"FTP connection attempt"; sid:1000001; rev:1;)
alert icmp any any -> $HOME_NET any (msg:"ICMP connection attempt"; sid:1000002; rev:1;)
alert tcp any any -> $HOME_NET 80 (msg:"TELNET connection attempt"; sid:1000003; rev:1;)
Si impone a Snort di prendere nota per ogniconnessione verso le porte 21 e 80, e per tutte el richieste ICMP (cioè i ping inviati al sistema).
Aggiornate le regole, è necessario riavviare Snort. Lo si può fare dando il comando
sudo systemctl restart snort.service
Nel giro di 30 secondi il servizio dovrebbe essere completamente riavviato caricando le nuove regole che sono state specificate.
Nel file /var/log/snort/alert
vengono indicati tutti gli alert dovuti alle regole specificate: tenendo sotto controllo questo file è possibile vedere in tempo reale le potenziali minacce per la sicurezza. Per esempio, facendosi inviare una email appena si rileva una connessione considerata pericolosa .
Per visualizzare i file di log si deve cercare l’ultimo file del tipo /var/log/snort/snort.log
: il programma ne crea diversi, ciascuno termina con un timestamp dell’orario in cui Snort è stato avviato. Il comando più semplice per visualizzare questi file è
sudo snort -r /var/log/snort/snort.log
Ma i file possono anche essere analizzati con wireshark per avere maggiori possibilità di identificare eventuali attacchi, o comunque per chi preferisca usare una interfaccia grafica.