Firewalling und IDS (Intrusion Detection System) sind eigentlich zwei gut abgegrenzte Bereiche: Ersteres lässt nur bestimmte Pakete und Verbindungen zu, Letzteres erkennt Angriffsversuche und informiert die Admins. Da ein IDS nur bekannte Angriffe bemerkt, sollte der Admin die jeweilige Sicherheitslücke bereits geschlossen haben. Dennoch gibt es Situationen, in denen das nicht möglich ist: Hier helfen IDS-Varianten, die beim Erkennen eines Angriffs ihn auch gleich unterbinden.
Diese Funktion ist in Hogwash[1] implementiert. Wie es zu diesem Gateway-IDS kam, fasst der Kasten "Historie" zusammen - im Folgenden stehen Installation, Konfiguration und Einsatz von Hogwash im Mittelpunkt.
Vielseitiger Paketschrubber
Hogwash unterstützt drei verschiedene Modi: IDS, Scrubber und Bait\'n\'Switch. Im IDS-Modus überwacht Hogwash den Netzwerkverkehr und alarmiert bei bösartigen Paketen die Admins. Es ist dabei zwar nicht in der Lage, die Pakete abzufangen, kann die Verbindungen aber mit gefälschten TCP-Resets abbrechen. Bei entsprechender Konfiguration überwacht Hogwash den Verkehr auf mehreren Schnittstellen.
Im Paketschrubber-Modus (Scrub) filtert Hogwash die Pakete. Es fälscht dafür TCP-Resets, verwirft die Pakete oder modifiziert sie und vereitelt damit wirkungsvoll Angriffe. Hogwash nutzt bis zu 16 Netzwerkkarten und leitet bei Bedarf die Pakete zwischen diesen Devices weiter - allerdings nicht als Router, sondern als Bridge. Die Software arbeitet transparent auf dem Link-Layer im Promiscuous-Modus. Der Admin kann sogar den IP-Stack des Betriebssystems deaktivierten. Ein IP-Forwarding muss er sogar abschalten, da Hogwash nun das Weiterleiten übernimmt.
Im experimentellen Bait\'n\'Switch-Modus schützt Hogwash ein Produktionssystem, vereitelt aber keine Angriffe. Vielmehr leitet es die suspekten Verbindungen auf einen Honeypot zur genaueren Analyse um: Ein Einbruch auf dieser Maschine hat keine negativen Folgen.
01 <system>
02 Name=Hogwash IDS Gateway
03 ID=1001
04 Threads=1
05 </system>
06
07 <interface eth0>
08 Type=linux_raw
09 Proto=Ethernet
10 Role=External
11 </interface>
12
13 <interface eth1>
14 Type=linux_raw
15 Proto=Ethernet
16 Role=Internal
17 </interface>
18
19 <IPList WebServers>
20 5.0.0.1/32
21 </list>
22
23 <action log>
24 response=alert console
25 response=alert file(/var/log/hogwash/hogwash.alert)
26 response=dump packet(/var/log/hogwash/packet.log)
27 </action>
28
29 <action drop>
30 response=alert console
31 response=alert file(hogwash.alert)
32 response=dump packet(packet.log)
33 response=drop
34 </action>
35
36 <routing>
37 MacFilter(eth0, eth1)
38 </routing>
|
Installation
Hogwash lässt sich recht einfach installieren. Nach dem Herunterladen und Auspacken folgt der übliche Configure-Make-Aufruf:
./configure
make
Hogwash arbeitet auf jeder beliebigen Linux-Distribution. Es bietet sich jedoch an, den IP-Stack des Betriebssystems zu entfernen (siehe Abbildung 1): Damit ist der Host selbst hervorragend vor Angriffen geschützt. Allerdings kann selbst der Administrator nicht mehr mit TCP/IP auf den Hogwash-Rechner zugreifen, er muss das System lokal administrieren.
Abbildung 1: Beim Einsatz von Hogwash benötigt der Kernel keinen IP-Stack, man kann ihn komplett deaktivieren. Hogwash analysiert die Pakete selbst.