
Dies ist eine Mini-Firewall, die ein Zielgerät vollständig vom lokalen Netzwerk isoliert.
Dies ist eine Mini-Firewall, die ein Zielgerät vollständig vom lokalen Netzwerk isoliert. Sie ermöglicht infizierten Maschinen Internetzugriff, ohne das lokale Netzwerk zu gefährden.
Dieses Projekt benötigt libpcap und natürlich einen C-Compiler.
Auf Debian sollte Folgendes funktionieren:
# apt-get install git gcc make libpcap-dev
# git clone https://github.com/robertdavidgraham/isowall
# cd isowall
# make
Dies legt die Binärdatei isowall im lokalen Verzeichnis isowall/bin ab.
Dies sollte auch unter Windows, Mac OS X, xBSD und so ziemlich jedem Betriebssystem funktionieren, das libpcap unterstützt.
Richten Sie zuerst eine Maschine mit drei Netzwerkschnittstellen ein.
Die erste Netzwerkschnittstelle (z.B. eth0) wird wie gewohnt mit einem TCP/IP-Stack konfiguriert, damit Sie per SSH darauf zugreifen können.
Die anderen beiden Netzwerkschnittstellen sollten keinen TCP/IP-Stack, keine IP-Adresse und nichts dergleichen haben. Dies ist der wichtigste Konfigurationsschritt und der häufigste Fehler. Beispielsweise kann die DHCP-Software auf der Maschine so konfiguriert sein, dass sie automatisch DHCP-Anfragen auf diesen zusätzlichen Schnittstellen sendet. Sie müssen dies korrigieren, sodass nichts an diese Schnittstellen gebunden ist.
Zum Ausführen geben Sie einfach Folgendes ein:
# ./bin/isowall --internal eth1 --external eth2 -c xxxx.conf
wobei xxxx.conf Ihre Konfiguration enthält, die unten beschrieben wird.
Das Folgende zeigt eine typische Konfigurationsdatei:
internal = eth1
internal.target.ip = 10.0.0.129
internal.target.mac = 02:60:8c:37:87:f3
external = eth2
external.router.ip = 10.0.0.1
external.router.mac = 66:55:44:33:22:11
allow = 0.0.0.0/0
block = 192.168.0.0/16
block = 10.0.0.0/8
block = 224.0.0.0-255.255.255.255
Das zu isolierende Zielgerät hat die angegebene IP- und MAC-Adresse.
Es werden nur IPv4- und ARP-Pakete durchgelassen.
Ausgehende Pakete müssen die folgenden Bedingungen erfüllen:
internal.target.macexternal.router.macinternal.target.ipallow-Bereichs, aber nicht in einem block-Bereichexternal.router.ip seinEingehende Pakete müssen die folgenden Bedingungen erfüllen:
internal.target.macexternal.router.macinternal.target.ipallow-Bereichs, aber nicht in einem block-Bereichexternal.router.ip seinEs gibt natürlich keine Garantie, aber dieses Programm bietet ziemlich gute Sicherheit.
Die Sicherheit beruht auf der Tatsache, dass kein IP-Stack an die Adapter gebunden ist. Das bedeutet, dass das infizierte Ziel die Firewall-Maschine in keiner Weise berühren kann, außer wie innerhalb der Funktion is_allowed() erlaubt. Diese Funktion stellt den Großteil der Angriffsfläche der Firewall-Maschine dar. Und wie Sie beim Lesen der Funktion erkennen können, enthält sie fast keine Funktionalität, was bedeutet, dass die Angriffsfläche in der Tat sehr klein ist.
Es gibt ein paar theoretische Angriffe, die auf der physischen Ebene stattfinden könnten, aber größtenteils müssen wir uns darüber keine Sorgen machen.