
psad: Rilevamento delle intrusioni e analisi dei log con iptables
Il Port Scan Attack Detector psad è un demone di sistema leggero scritto in
è progettato per funzionare con il codice di firewall Linux iptables/ip6tables/firewalld per
rilevare traffico sospetto come scansioni e sweeps di porte, backdoor, comunicazioni di comando e controllo di botnet e altro ancora.
Presenta una serie di soglie di pericolo altamente configurabili (con valori predefiniti sensati), messaggi di avviso dettagliati che includono la sorgente, la destinazione, l'intervallo di porte scansionate, gli orari di inizio e fine, i flag TCP e le corrispondenti opzioni nmap, le informazioni DNS inverse, l'invio di avvisi via email e syslog, il blocco automatico degli indirizzi IP offensivi tramite la configurazione dinamica delle regole iptables, l'impronta digitale passiva del sistema operativo e la segnalazione DShield.
Inoltre, psad incorpora molte delle firme TCP, UDP e ICMP incluse nel sistema di rilevamento delle intrusioni Snort.
per rilevare scansioni altamente sospette per vari programmi backdoor (ad esempio EvilFTP, GirlFriend, SubSeven), strumenti DDoS (Mstream, Shaft) e scansioni di porte avanzate (SYN, FIN, XMAS) che possono essere facilmente sfruttate contro una macchina tramite nmap.
psad può anche segnalare le firme Snort che vengono registrate tramite
fwsnort, che fa uso dell'estensione string match di iptables per rilevare traffico che corrisponde a firme a livello applicativo.
A partire dalla versione 2.4.4, psad può anche rilevare la fase di scansione delle credenziali predefinite IoT del botnet Mirai.
L'elenco completo delle funzionalità è di seguito.
psad può generare avvisi per attacchi di buffer overflow a livello applicativo, comandi applicativi sospetti e altro traffico sospetto di livello 7.psad offre l'integrazione con gnuplot e afterglow per produrre grafici del traffico maligno.
I due grafici seguenti mostrano il worm Nachi dalla sfida Honeynet Scan30. Prima, un grafico di collegamento prodotto da afterglow dopo l'analisi dei dati di log iptables da parte di psad:
"Nachi Worm Link Graph"
Il secondo mostra il traffico del worm Nachi su base oraria dai dati iptables di Scan30:
"Nachi Worm Hourly Graph"
Le informazioni sulle parole chiave di configurazione a cui fa riferimento psad possono essere trovate sia nella pagina man psad(8), sia qui:
http://www.cipherdyne.org/psad/docs/config.html
Tutte le informazioni analizzate da psad sono raccolte dai messaggi di log di iptables. psad, per impostazione predefinita, legge il file /var/log/messages per nuovi messaggi iptables e opzionalmente li scrive in un file dedicato (/var/log/psad/fwdata). psad è quindi responsabile dell'applicazione della soglia di pericolo e della logica delle firme per determinare se una scansione di porte è avvenuta, inviare email di avviso appropriate e (opzionalmente) bloccare gli indirizzi IP offensivi. psad include un gestore di segnale tale che se viene ricevuto un segnale USR1, psad scarica il contenuto della struttura dati hash di scansione corrente in /var/log/psad/scan_hash.$$ dove "$$" rappresenta il pid del demone psad in esecuzione.
NOTA: Poiché psad si basa su iptables per generare messaggi di log appropriati per i pacchetti non autorizzati, psad è valido tanto quanto le regole di log incluse nel set di regole iptables. Quindi, se il tuo firewall non è configurato per registrare i pacchetti, allora psad NON rileverà scansioni di porte o altro. Di solito il modo migliore per configurare il firewall è con regole predefinite "drop and log" alla fine del set di regole, e includere regole sopra questa ultima regola che consentano solo il traffico che dovrebbe essere permesso. Al momento dell'esecuzione, il demone psad tenterà di determinare se esiste una tale regola di default deny, e avviserà l'utente in caso contrario. Vedi il file FW_EXAMPLE_RULES per esempi di set di regole firewall compatibili con psad.
Inoltre, una copertura estesa di psad è inclusa nel libro "Linux Firewalls: Attack Detection and Response" pubblicato da No Starch Press, e uno script di supporto in questo libro è compatibile con psad. Questo script può essere trovato qui:
http://www.cipherdyne.org/LinuxFirewalls/ch01/
A seconda della distribuzione Linux, psad potrebbe già essere disponibile nel
repository predefinito dei pacchetti. Ad esempio, su sistemi Debian o Ubuntu, l'installazione
si esegue con un semplice:
apt-get install psad
Se psad non è disponibile nel repository dei pacchetti, può essere installato con lo
script install.pl incluso nei sorgenti di psad. Lo script install.pl gestisce anche
gli aggiornamenti se psad è già installato. psad richiede diversi moduli Perl
che potrebbero o meno essere già installati sul tuo sistema Linux. Questi moduli sono
inclusi nella directory deps/ nei sorgenti di psad e vengono installati automaticamente
dallo script install.pl. L'elenco dei moduli è:
psad include anche un client whois scritto da Marco d'Itri (vedi la directory deps/whois). Questo client è migliore di altri nel raccogliere le informazioni whois corrette per un dato indirizzo IP.
Il requisito principale per una configurazione iptables compatibile con psad è semplicemente che iptables registri i pacchetti. Questo viene comunemente realizzato aggiungendo regole alle catene INPUT e FORWARD in questo modo:
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
Le regole sopra dovrebbero essere aggiunte alla fine delle catene INPUT e FORWARD dopo tutte le regole ACCEPT per il traffico legittimo e appena prima di una corrispondente regola DROP per il traffico che non deve essere permesso attraverso la policy. Nota che le policy iptables possono essere piuttosto complesse con restrizioni di protocollo, rete, porta e interfaccia, catene definite dall'utente, regole di connection tracking e molto altro. Ci sono molti software come Shorewall e Firewall Builder, che costruiscono policy iptables e sfruttano le avanzate capacità di filtraggio e logging offerte da iptables. Generalmente le policy costruite da tali software sono compatibili con psad poiché aggiungono specificamente regole che istruiscono iptables a registrare i pacchetti che non fanno parte del traffico legittimo. Psad può essere configurato per analizzare solo quei messaggi iptables che contengono prefissi di log specifici (aggiunti tramite l'opzione --log-prefix), ma l'impostazione predefinita è che psad analizzi tutti i messaggi di log iptables per prove di scansioni di porte, sonde per programmi backdoor e altro traffico sospetto.
psad generalmente funziona su sistemi Linux ed è disponibile nei repository dei pacchetti di molte distribuzioni Linux principali. Se ci sono problemi operativi con psad, apri un problema su github
psad è rilasciato come software open source secondo i termini della
GNU General Public License (GPL v2+). L'ultima versione può essere trovata
su https://github.com/mrash/psad/releases
psad utilizza molte delle firme TCP, UDP e ICMP disponibili in Snort (scritto da Marty Roesch, vedi http://www.snort.org). Snort è un marchio registrato di Sourcefire, Inc.
Tutte le richieste di funzionalità e le correzioni di bug sono gestite tramite il sistema di tracciamento delle issues di github. Tuttavia, puoi inviarmi un'email (michael.rash_AT_gmail.com) o contattarmi tramite Twitter (@michaelrash)