Introduzione
I sistemi di rilevamento delle intrusioni vengono utilizzati per registrare connessioni sospette e segnalare quando sembra che si stia verificando un'attività insolita.
Lo strumento PSAD (Detect Network Intrusion Attempts), che sta per rilevamento degli attacchi di port scan, è un software che monitora attivamente i log del firewall per determinare se è in corso una scansione o un evento di attacco. Può quindi avvisare gli amministratori o adottare misure attive per scoraggiare la minaccia.
In questa guida, spiegheremo come installare e configurare psad su un VPS di Ubuntu 18.04 LTS.
Installare psad
Psad è disponibile nei repository predefiniti di Ubuntu, quindi può essere facilmente installato tramite apt:
sudo apt update
sudo apt install psad
Per configurare gli avvisi tramite e-mail verso l'amministratore del server, ti verrà chiesto di configurare il server di posta postfix.
Nella maggior parte dei casi, è possibile selezionare "Sito Internet", quindi inserire il nome di dominio associato al proprio server. Questa sarà la porzione di dominio del nome utilizzato nel campo "Da" nelle e-mail generate da psad.
Configurare le regole IPTables
Psad rileva l'attività sulle porte del server monitorando i log prodotti da un firewall. Ubuntu viene fornito con il firewall iptables per impostazione predefinita.
Per vedere le regole predefinite, da terminale digitare:
sudo iptables -S
Dovreste avere queste regole:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
Se si vogliono ripristinare le regole predefinite dopo aver aggiunto quelle di cui parleremo in questa guida, dare il seguente comando:
sudo iptables -F
Possiamo iniziare a configurare iptables, quindi eliminiamo le connessioni di cui non abbiamo bisogno oppure aggiungiamo quelle che vogliamo accettare.
La prima regola consentirà tutto il traffico generato dal nostro server, diretto al nostro server:
sudo iptables -A INPUT -i lo -j ACCEPT
Successivamente, vogliamo aggiungere una regola per consentire esplicitamente tutto il traffico correlato a una connessione esistente. Ciò consentirà alle nostre sessioni in corso di continuare senza interruzioni:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Successivamente, possiamo aggiungere i servizi che desideriamo mantenere aperti come l'SSH. Per SSH, possiamo aggiungere una riga come questa, se si utilizza la porta di default 22:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Se utilizziamo un web server, la porta di default da abilitare è la 80 per le connessioni HTTP oppure la 443 per quelle HTTPS:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Se si desidera abilitare altre porte modificare il parametro protocol e num_porta con quelli necessari:
sudo iptables -A INPUT -p protocol --dport num_porta -j ACCEPT
Dopo aver terminato di aggiungere i servizi necessari, elimineremo tutte le connessioni rimanenti.
Prima di farlo, però, dobbiamo aggiungere la regola che dice a iptables di iniziare a registrare il traffico.
sudo iptables -A INPUT -j LOG
sudo iptables -A FORWARD -j LOG
Possiamo adesso bloccare tutto il traffico estraneo, non permesso dalle nostre regole:
sudo iptables -A INPUT -j DROP
Per impostazione predefinita, iptables non mantiene le sue regole se viene riavviato il server, quindi dopo aver testato la configurazione e verificato che faccia ciò che si desidera, è possibile scaricare e abilitare uno strumento che mantenga queste regole persistenti:
sudo apt install iptables-persistent
sudo service netfilter-persistent start
Configurare psad
Possiamo iniziare a configurare psad per iniziare l'analisi dei log.
Apriamo il file di configurazione principale di psad con i privilegi di root:
sudo nano /etc/psad/psad.conf
Inserire l'indirizzo e-mail al quale si desidera ricevere le e-mail di notifica da parte di psad.
Inserire anche il vostro hostname:
EMAIL_ADDRESSES [email protected], [email protected];
HOSTNAME tuodominio.com;
Assicurati di terminare ciascuna delle tue linee con un punto e virgola ;
I "livelli di pericolo" sono un modo per psad di classificare i livelli di minaccia.
Vengono determinati automaticamente dal numero di pacchetti coinvolti in un evento, ma è possibile assegnare determinati tipi di traffico anche a un determinato livello di pericolo. Le soglie predefinite per ciascun livello da raggiungere sono:
DANGER_LEVEL1 5;
DANGER_LEVEL2 15;
DANGER_LEVEL3 150;
DANGER_LEVEL4 1500;
DANGER_LEVEL5 10000;
È possibile modificare questi livelli in base al livello di sensibilità che si desidera per gli avvisi.
È inoltre possibile configurare la modalità con cui psad sarà sensibile attraverso il parametro PORT_RANGE_SCAN_THRESHOLD che determina il numero di porte in un intervallo che deve essere scansionato prima che venga generato un avviso:
PORT_RANGE_SCAN_THRESHOLD 1;
Una delle cose più importanti da configurare è il parametro IPT_SYSLOG_FILE, perché al momento non è puntato su un file che syslog usa per impostazione predefinita.
Modifica questo per puntare al file syslog, in cui psad avrà effettivamente l'opportunità di esaminare i log attivi:
IPT_SYSLOG_FILE /var/log/syslog;
Possiamo configurare psad in modo che ignori determinate porte, quindi non riceveremo avvisi relativi alle porte ignorate:
IGNORE_PORTS porte_da_ignorare;
È possibile ignorare in modo simile i messaggi in base ad altri parametri come IGNORE_PROTOCOLS, IGNORE_INTERFACES e IGNORE_LOG_PREFIXES.
Se noti che ricevi avvisi troppo spesso, puoi impostare la soglia sui messaggi di posta elettronica regolando il livello da raggiungere prima che venga inviata un'email:
MIN_DANGER_LEVEL 1;
EMAIL_ALERT_DANGER_LEVEL 1;
È possibile impostare in modo diretto il limite di email da ricevere:
EMAIL_LIMIT 0;
Zero significa che non c'è limite.
Salvare e chiudere il file.
Avviare psad
Ora che disponiamo di una configurazione di base di psad, completa di funzionalità di avviso, possiamo attivare il nostro sistema.
Prima di iniziare, dovremmo aggiornare le definizioni di firma di psad in modo che possa riconoscere correttamente i tipi di attacco conosciuti:
sudo psad --sig-update
Riavviamo psad:
sudo service psad restart
Per vedere lo stato corrente degli eventi rilevati da psad, digitare:
sudo psad -S
L'output che dovresti ricevere è simile a questo:
[-] psad: pid file /var/run/psad/psadwatchd.pid does not exist for psadwatchd on MIOIP
[+] psad_fw_read (pid: 7292) %CPU: 0.0 %MEM: 0.9
Running since: Fri May 11 18:46:54 2018
[+] psad (pid: 7289) %CPU: 0.0 %MEM: 1.0
Running since: Fri May 11 18:46:54 2018
Command line arguments: [none specified]
Alert email address(es): [email protected]
[+] Version: psad v2.4.3
[+] Top 50 signature matches:
[NONE]
[+] Top 25 attackers:
[NONE]
[+] Top 20 scanned ports:
[NONE]
[+] iptables log prefix counters:
[NONE]
Total protocol packet counters:
[+] IP Status Detail:
[NONE]
Total scan sources: 0
Total scan destinations: 0
[+] These results are available in: /var/log/psad/status.out
Non è ancora stato rilevato nulla. Possiamo anche vedere i diversi file log di psad nel seguente percorso /var/log/psad/.
Scansione di prova
Da un altro computer, dovremmo provare a scansionare le porte del nostro server. Possiamo farlo con l'utility nmap oppure utilizzando siti specifici per questa funzione.
Effettueremo una scansione della porta tcp SYN da un'altro computer:
sudo nmap -PN -sS dominio_oppure_ip
Output:
Starting Nmap 7.01 ( https://nmap.org ) at 2018-05-11 18:48 CEST
Nmap scan report for MIOIP (MIOIP)
Host is up (0.00043s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
443/tcp open https
Possiamo provare a dare nuovamente il comando per controllare lo stato di psad:
sudo psad -S
Dovresti vedere una lista molto più ampia di avvisi.
Se hai impostato avvisi via email, dovresti aver ricevuto anche un'email.
Prevenzione delle intrusioni
Eventualmente possiamo implementare un meccanismo di prevenzione in cui psad può modificare automaticamente le regole di iptables per vietare gli scanner.
Apriamo il file auto_dl:
sudo nano /etc/psad/auto_dl
Questo file specifica quale livello di pericolo dovremmo impostare per determinati indirizzi IP. Ad esempio, se abbiamo un aggressore che cerca continuamente di sondare il nostro sistema, possiamo impostare automaticamente sul livello di pericolo 5:
Indirizzo_Ip_aggressore 5;
È possibile anche esonerare certi indirizzi IP dai controlli di psad. Potremmo aggiungere il nostro indirizzo IP locale e l'IP del nostro computer di casa o dell'ufficio per evitare di essere bloccati. Basterà impostare il valore su "0".
computer_locale_ip 0;
Salvare e chiudere il file.
Apriamo il seguente file:
sudo nano /etc/psad/psad.conf
Cerca il parametro chiamato ENABLE_AUTO_IDS. Questa è la regola che consente a psad di modificare il nostro firewall per bloccare determinati indirizzi:
ENABLE_AUTO_IDS Y;
Possiamo impostare quale livello di minaccia consideriamo così grave da bloccare un indirizzo IP:
AUTO_IDS_DANGER_LEVEL 5;
Opzione fondamentale è l'AUTO_BLOCK_TIMEOUT, ovvero per quanto tempo l'indirizzo IP verrà bloccato, in secondi.
AUTO_BLOCK_TIMEOUT 3600;
Salvare e chiudere il file.
Test Di Prevenzione delle intrusioni
Possiamo testare come funziona vietando temporaneamente noi stessi. Nello stesso file di configurazione, imposteremo questi parametri:
ENABLE_AUTOIDS Y;
AUTO_IDS_DANGER_LEVEL 4;
AUTO_BLOCK_TIMEOUT 60;
Questo attiverà la configurazione automatica del firewall, imposterà la soglia al livello di pericolo 4, che attiveremo con una normale scansione SYN e imposteremo il tempo di blocco per 60 secondi.
Salvare e chiudere il file.
Apriamo il file auto_dl se hai aggiunto il tuo indirizzo IP di casa o di ufficio e commentalo temporaneamente:
sudo nano /etc/psad/auto_dl
#local_computer_ip 0;
Riavviamo psad:
sudo service psad restart
Dal proprio computer avviare lo scan:
sudo nmap -PN -sS dominio_oppure_ip
Dopo pochi secondi, se si è connessi al server con psad tramite SSH, verrete disconnessi. Non potrete accedervi per 60 secondi.
Questo perché psad ha agito quando la tua scansione ha colpito abbastanza porte per raggiungere il livello di pericolo 4. Ha modificato le regole di iptables per deviare il traffico e bloccare il tuo IP.
Una volta che riesci ad accedere nuovamente, potrai vedere che PSAD ha bloccato il traffico da te generato:
sudo iptables -S
Ora che hai testato questa funzionalità, ripristina nuovamente i parametri che desideri utilizzare. Inoltre dovresti aggiungere nuovamente gli indirizzi IP desiderati, come quello dell'ufficio o di casa:
Apriamo il file auto_dl:
sudo nano /etc/psad/auto_dl
local_computer_ip 0;
Apriamo il seguente file:
sudo nano /etc/psad/psad.conf
ENABLE_AUTOIDS Y;
AUTO_IDS_DANGER_LEVEL 5;
AUTO_BLOCK_TIMEOUT 3600;
Adesso è possibile riavviare psad:
sudo service psad restart
L'installazione e la configurazione di PSAD su Ubuntu 18.04 LTS è terminata