Firewall mit iptables
Willemers Informatik-Ecke
Eine Firewall schaut auf die ein- und ausgehenden Pakete und erlaubt die Filterung der Pakete anhand eines Regelwerks.

Die Firewall kann Pakete akzeptieren (ACCEPT), zurückweisen (REJECT) oder einfach unter den Tisch fallen lassen (DROP).

Die Kriterien, welche Pakete wie behandelt werden, können nur am Adressfeld des Pakets festgemacht werden. Die Firewall kann den Inhalt des Pakets nicht unbedingt lesen. Eindeutig ist aber

Das scheint wenig, ermöglicht aber beispielsweise, zu verhindern, dass jemand von außen die Webseiten auf den Intranet-Servern lesen kann, ohne die Mitarbeiter beim Surfen zu stören.

Wenn ein Browser einen Webserver ansteuert, verbindet er sich mit dem Port 80 unter der IP-Adresse des Servers. Um den Einbruch von außen zu verhindern, kann die Firewall prüfen, ob ein Paket als Ziel den Port 80 verwendet und die Ziel-IP-Adresse im lokalen Netzwerk liegt. Ein solches Paket würde also nicht weitergeleitet.

Will dagegen ein Mitarbeiter im Internet surfen, ist der Zielport auch 80, die Zieladresse befindet sich aber außerhalb des lokalen Netzwerks und wird darum nicht blockiert. Die Antwort des Servers wendet sich an die Portnummer des Absenders im lokalen Netzwerk, die nicht 80 ist, da es ein Client ist. Im Absenderport trägt der Server zwar eine 80, aber die wird nicht blockiert. Die Regeln werden mit dem Befehl iptables gesetzt. Es folgt in Form einer Option die Aktion und in weiteren Argumenten, weitere Parameter.

Die erste Regel

Spielen wir durch, dass Pakete an den internen Mailserver mit dem Port 25 erlaubt werden sollen, alles andere aber nicht. Bevor Regeln angelegt werden, sollten alle Regeln gelöscht werden. Dies erreicht der folgende Befehl:
iptables -F
Nun ist alle Kommunikation unterbunden. Der folgende Befehl akzeptiert alle eingehenden Pakete an den Port 25 im lokalen Netzwerk.
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
Zum Abschluss der Regel werden alle anderen Pakete von außen fallengelassen.
iptables -A INPUT -j DROP
Mit dem Befehl iptables -L wird die aktuelle Regeltabelle angezeigt.

Umleiten des Ports

Umleiten von HTTP-Standardport auf Port 8080 bzw. HTTPS-standardport 443 auf 8181:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8181

Sichern der iptables-Regeln

Die erstellten Regeln stehen im Speicher und werden einen Reboot nicht überleben. Darum müssen die Regeln gesichert werden.
iptables-save -c > /etc/iptables.rules
Sollen die Regeln wieder geladen werden, verwendet man den Befehl iptables-restore:
iptables-restore < /etc/iptables.rules
Damit das automatisch beim Booten geschieht, muss der Befehl in die Startup-Skripte von init.d bzw. systemd eingetragen werden.