
psad: Intrusion Detection und Log-Analyse mit iptables
Der Port Scan Attack Detector psad ist ein leichtgewichtiger System-Daemon, der in Perl geschrieben ist und mit den Linux-Firewall-Komponenten iptables/ip6tables/firewalld zusammenarbeitet, um verdächtigen Datenverkehr wie Port-Scans und -Sweeps, Backdoors, Botnet-Kommandos und -Steuerungskommunikation und mehr zu erkennen. Er verfügt über eine Reihe hochgradig konfigurierbarer Gefahrenschwellen (mit sinnvollen Standardwerten), ausführliche Alarmmeldungen, die Quelle, Ziel, gescannten Portbereich, Anfangs- und Endzeiten, TCP-Flags und entsprechende nmap-Optionen, Reverse-DNS-Informationen, E-Mail- und Syslog-Benachrichtigungen, automatische Blockierung angreifender IP-Adressen durch dynamische Konfiguration von iptables-Regelsätzen, passives Betriebssystem-Fingerprinting und DShield-Meldungen umfassen. Darüber hinaus integriert psad viele der TCP-, UDP- und ICMP-Signaturen des Snort-Intrusion-Detection-Systems, um hochverdächtige Scans auf verschiedene Backdoor-Programme (z. B. EvilFTP, GirlFriend, SubSeven), DDoS-Tools (Mstream, Shaft) und fortgeschrittene Port-Scans (SYN, FIN, XMAS) zu erkennen, die leicht mit nmap gegen einen Rechner eingesetzt werden können. psad kann auch auf Snort-Signaturen alarmieren, die über fwsnort protokolliert werden, das die iptables-string-match-Erweiterung nutzt, um Datenverkehr zu erkennen, der Anwendungsschichtsignaturen entspricht. Ab Version 2.4.4 kann psad auch die Scanphase der Standard-Anmeldedaten des Mirai-Botnets erkennen.
Die vollständige Feature-Liste folgt unten.
--log-tcp-options), und eine TOS-basierte Strategie.psad Alarme für Pufferüberlauf-Angriffe auf der Anwendungsschicht, verdächtige Anwendungsbefehle und anderen verdächtigen Layer-7-Verkehr erzeugen.psad bietet eine Integration mit gnuplot und afterglow zur Erstellung von Graphen bösartigen Datenverkehrs. Die folgenden beiden Graphen stammen vom Nachi-Wurm aus der Honeynet Scan30-Challenge. Zunächst ein von afterglow nach der Analyse der iptables-Logdaten durch psad erstellter Link-Graph:
"Nachi Worm Link Graph"
Der zweite zeigt den Nachi-Wurm-Datenverkehr auf stündlicher Basis aus den Scan30-iptables-Daten:
"Nachi Worm Hourly Graph"
Informationen zu den von psad referenzierten Konfigurationsschlüsselwörtern finden Sie sowohl in der Handbuchseite psad(8) als auch hier:
http://www.cipherdyne.org/psad/docs/config.html
Alle von psad analysierten Informationen stammen aus iptables-Logmeldungen. Standardmäßig liest psad die Datei /var/log/messages auf neue iptables-Meldungen und schreibt sie optional in eine dedizierte Datei (/var/log/psad/fwdata). psad ist dann dafür verantwortlich, die Gefahrenschwellen- und Signaturlogik anzuwenden, um festzustellen, ob ein Portscan stattgefunden hat, entsprechende Alarm-E-Mails zu senden und (optional) angreifende IP-Adressen zu blockieren. psad enthält einen Signalhandler, sodass er bei Empfang eines USR1-Signals den Inhalt der aktuellen Scan-Hash-Datenstruktur in /var/log/psad/scan_hash.$$ ausgibt, wobei "$$" die PID des laufenden psad-Daemons darstellt.
HINWEIS: Da psad auf iptables angewiesen ist, um entsprechende Logmeldungen für unbefugte Pakete zu erzeugen, ist psad nur so gut wie die im iptables-Regelsatz enthaltenen Logging-Regeln. Wenn Ihre Firewall nicht so konfiguriert ist, dass sie Pakete protokolliert, erkennt psad KEINE Portscans oder irgendetwas anderes. Üblicherweise ist der beste Weg, die Firewall einzurichten, mit Standardregeln "Drop and Log" am Ende des Regelsatzes und darüberliegenden Regeln, die nur den Verkehr erlauben, der durchgelassen werden soll. Bei der Ausführung versucht der psad-Daemon festzustellen, ob eine solche Standardverweigerungsregel existiert, und warnt den Benutzer, wenn dies nicht der Fall ist. Siehe die Datei FW_EXAMPLE_RULES für Beispiel-Firewall-Regelsätze, die mit psad kompatibel sind.
Darüber hinaus wird psad umfassend im Buch "Linux Firewalls: Attack Detection and Response" (erschienen bei No Starch Press) behandelt, und ein zugehöriges Skript aus diesem Buch ist mit psad kompatibel. Dieses Skript finden Sie hier:
http://www.cipherdyne.org/LinuxFirewalls/ch01/
Abhängig von der Linux-Distribution kann psad bereits im Standard-Paket-Repository verfügbar sein. Zum Beispiel auf Debian- oder Ubuntu-Systemen erfolgt die Installation mit einem einfachen:
apt-get install psad
Wenn psad nicht im Paket-Repository verfügbar ist, kann es mit dem Skript install.pl aus dem psad-Quellcode installiert werden. Das Skript install.pl verwaltet auch Upgrades, wenn psad bereits installiert ist. psad benötigt mehrere Perl-Module, die möglicherweise bereits auf Ihrem Linux-System installiert sind oder nicht. Diese Module sind im Verzeichnis deps/ des psad-Quellcodes enthalten und werden vom Skript install.pl automatisch installiert. Die Liste der Module lautet:
psad enthält auch einen Whois-Client, der von Marco d'Itri geschrieben wurde (siehe Verzeichnis deps/whois). Dieser Client ist besser als andere darin, die korrekten Whois-Informationen für eine bestimmte IP-Adresse zu sammeln.
Die Hauptanforderung für eine mit psad kompatible iptables-Konfiguration ist einfach, dass iptables Pakete protokolliert. Dies wird üblicherweise erreicht, indem Regeln zu den Ketten INPUT und FORWARD wie folgt hinzugefügt werden: