
Snort 3 IDS → IPS Labor auf Kali. Benutzerdefinierte Erkennungsregeln + iptables-Durchsetzung gegen ICMP-Aufklärung, Nmap-SYN-Scans, Hydra FTP Brute-Force und vsftpd 2.3.4 Hintertür (CVE-2011-2523).
Eine vollständige Bereitstellung von Snort 3 sowohl als Intrusion Detection System (passives Monitoring) als auch als Intrusion Prevention System (aktive Blockierung über iptables), validiert gegen vier Angriffsvektoren über ein Drei-Maschinen-Virtuelles-Netzwerk auf Kali Linux.
Das Labor beweist den operativen Unterschied zwischen Erkennung und Prävention, indem es eine identische Vier-Vektor-Angriffskette zweimal ausführt – zuerst gegen ein IDS, das protokolliert, aber nicht blockieren kann, dann gegen eine IDS + iptables IPS-Schicht, die Angriffe selektiv verwirft, während legitimer Datenverkehr erhalten bleibt.
| Komponente | Details |
|---|---|
| Analysator / Router | Kali Linux — 3 Adapter: eth0 WAN (192.168.10.143, NAT), eth1 LAN1 (10.10.10.1, Host-only), eth2 LAN2 (192.168.50.1, Host-only) |
| Angreifer | Kali Linux — eth0 auf VMnet9 (10.10.10.10) — Standardgateway 10.10.10.1 |
| Ziel | Metasploitable 2 — eth0 auf VMnet10 (192.168.50.10) — Standardgateway 192.168.50.1 |
| Snort-Version | Snort++ 3.12.1.0-0kali1 (installiert auf Analysator) |
| Angriffswerkzeuge | Nmap 7.99, Hydra v9.6, Metasploit Framework (msfconsole) |
| Virtualisierung | VMware — VMnet9 = 10.10.10.0/24, VMnet10 = 192.168.50.0/24 (beide Host-only) |
Der gesamte Datenverkehr zwischen Angreifer und Metasploitable wird durch den Analysator geleitet, was ihn zum natürlichen Engpass sowohl für die Überwachung als auch für die Durchsetzung macht.
┌─────────────────────────┐
│ Analysator / Router │
│ Kali + Snort 3 │
│ │
Angreifer Kali ──VMnet9──┤ eth1: 10.10.10.1 │
10.10.10.10 │ │
│ eth0: 192.168.10.143 ───┼──> WAN (NAT)
│ │
Metasploitable 2 ─VMnet10┤ eth2: 192.168.50.1 │
192.168.50.10 │ │
└─────────────────────────┘
Ersetzen Sie diese ASCII-Skizze durch
screenshots/01-network-topology.png, sobald die Abbildung vorhanden ist:Topologie
Das Labor wird in zwei Phasen mit einer identischen Vier-Vektor-Angriffskette durchgeführt:
ping zur Host-Erkennungnmap -sS zur Port-Enumeration (1000 Ports)Phase 1 (IDS) führt Snort passiv auf dem Analysator mit fünf benutzerdefinierten Regeln aus – beobachten Sie die Alarme in Echtzeit, bestätigen Sie, dass der Angriff trotzdem erfolgreich ist.
Phase 2 (IPS) kombiniert Snort mit einer iptables-Durchsetzungsschicht mittels präziser Drop-Regeln – bestätigen Sie, dass Angriffe blockiert werden, während ICMP-Ping und legitime FTP-Anmeldung funktionsfähig bleiben.
MASQUERADE + FORWARD-Regeln hinzu, damit der Analysator zwischen Subnetzen und zum WAN routet – siehe scripts/router_config.sh.scripts/ping_check.sh, bevor Sie Snort installieren.Snort wird über den Kali-Paketmanager installiert (sudo apt install snort -y) und in /etc/snort/snort.conf konfiguriert:
HOME_NET = "10.10.10.0/24,192.168.50.0/24"
EXTERNAL_NET = "any"
ips = {
enable_builtin_rules = true,
include = "/etc/snort/rules/local.rules",
variables = default_variables
}
alert_fast = { file = true, packet = false }
HOME_NET deckt beide internen Subnetze ab, sodass Snort den gesamten verkehr zwischen Subnetzen auf dem Analysator als prüfenswert betrachtet. alert_fast erzeugt kompakte einzeilige Alarme (paketweise Protokollierung würde übermäßiges Volumen erzeugen).
Konfigurationsvalidierung:
sudo snort -T -c /etc/snort/snort.conf
# Ergebnis: 652 Regeln geladen (5 benutzerdefinierte Text + 647 integrierte), 0 Warnungen
Fünf Regeln in /etc/snort/rules/local.rules (vollständige Datei in scripts/local.rules):
| SID | Name | Auslöser |
|---|---|---|
| 1000001 | ICMP Ping erkannt | Jeglicher ICMP-Verkehr in beide Richtungen – fängt Aufklärungspings |
| 1000002 | FTP-Verbindungsversuch | Jegliche TCP-Verbindung zu Port 21 – fängt legitimen und Brute-Force-Verkehr |
| 1000003 | Möglicher Nmap SYN-Scan | TCP-Pakete mit nur gesetztem SYN-Flag (flags:S) – Signatur eines halboffenen Scans |
| 1000004 | VSFTPD 2.3.4 Backdoor-Versuch | content:":)" auf FTP-Port 21 – die exakte CVE-2011-2523-Triggerzeichenfolge |
| 1000005 | Möglicher Metasploit-Shellcode | `content:" |
Snort läuft im passiven Modus auf beiden internen Schnittstellen:
sudo snort -c /etc/snort/snort.conf -i eth1 -i eth2 \
-A alert_fast -l /var/log/snort/
# Alarme in einem zweiten Terminal beobachten:
sudo tail -f /var/log/snort/alert_fast.txt
Die Startausgabe bestätigt pcap DAQ configured to passive – Snort sieht jedes Paket, kann aber keines verwerfen oder modifizieren.
Nach Ausführung von scripts/attack_simulator.sh vom Angreifer:
| Angriff | Erkennung | Ergebnis |
|---|---|---|
| ICMP-Aufklärung | ✅ SID 1000001 – bidirektionale Alarme | Ping abgeschlossen |
| Nmap SYN-Scan | ✅ SID 1000003 – tausende Alarme in <1 Sekunde | 23 offene Ports ermittelt |
| Hydra FTP-Brute-Force | ✅ SID 1000002 – wiederholte FTP-Verbindungsalarme | Zugangsdaten msfadmin:msfadmin geknackt |
| vsftpd 2.3.4 Backdoor | ✅ SID 1000004 – :)-Inhaltsübereinstimmung ausgelöst | Root-Meterpreter-Shell erhalten |
Das IDS hat alles erkannt und nichts gestoppt. Dies ist die zentrale Lehre aus Phase 1: Ein funktionierendes IDS ohne Durchsetzung ist ein Alarmsystem, kein Schloss. Wenn ein menschlicher Analyst die Alarme liest, ist der Angreifer bereits Root.
Eine sekundäre Beobachtung: Snorts integrierte Regeln (116:408, 116:414) schlagen bei DHCP-Broadcast-Verkehr an – nicht böswillig, aber in einer Produktionsumgebung bräuchte es Unterdrückungsregeln, um das Alarmprotokoll handhabbar zu halten.
Die IPS-Schicht wird mit scripts/ips_setup.sh bereitgestellt, welche:
-D) für fortlaufende Protokollierung startet