IP Forwarding mit iptables

Bei einer Service-Installation unter Linux/Unix versucht man meist die Services nicht mir Root-Rechten laufen zu lassen. Dies, weil das ein grosses Security-Loch sein kann, da der Service gehackt werden könnte. Wenn Root den Service direkt laufen lässt, würde ein Hacker bei erfolgreichem hacken des Services direkt Root-Rechte erhalten. Aus diesem Grunde lässt man solche Services meist nicht mir Root laufen.

Wenn man einen Application-Server wie JBoss in Betrieb nimmt, läuft der Web-Server (Tomcat) auf Port 8080. Webserver laufen aber normalerweise auf Port 80. Wenn man Tomcat auf Port 80 laufen lässt, müsste man diesen dementsprechend als Root laufen lassen, was eben ein Sicherheitsrisiko sein kann (alle Ports unter 1025 können unter Linux/Unix nur als Root in Betrieb genommen werden). Man kann nun einerseits dem JBoss einen Apache-Webserver „vorsetzen“ und diesen die Requests auf den JBoss bzw. Tomcat forwarden lassen ODER einfach ein IP Forwarding mit „iptables“ realisieren. Dabei werden alle Request auf Port 80 automatisch auf Port 8080 weitergeleitet. So kann man den Tomcat mit normalem User auf Port 8080 laufen lassen und doch die Request auf Port 80 beantworten. …Ich hoff das war jetzt nicht allzu kompliziert formuliert… 🙂

Forwarding von Port 80 auf Port 8080

Wir leiten also Port 80 auf Port 8080 (bzw. Port 443 auf Port 8443) weiter.
Regel installieren:

/sbin/iptables -t nat -A OUTPUT     --destination localhost   -p tcp --dport 80 -j REDIRECT --to-ports 8080
/sbin/iptables -t nat -A OUTPUT     --destination ${local_ip} -p tcp --dport 80 -j REDIRECT --to-ports 8080
/sbin/iptables -t nat -A PREROUTING --destination ${local_ip} -p tcp --dport 80 -j REDIRECT --to-ports 8080

/sbin/iptables -t nat -A OUTPUT     --destination localhost   -p tcp --dport 443 -j REDIRECT --to-ports 8443
/sbin/iptables -t nat -A OUTPUT     --destination ${local_ip} -p tcp --dport 443 -j REDIRECT --to-ports 8443
/sbin/iptables -t nat -A PREROUTING --destination ${local_ip} -p tcp --dport 443 -j REDIRECT --to-ports 8443

Regel deinstallieren:

/sbin/iptables --flush PREROUTING -t nat
/sbin/iptables --flush OUTPUT -t nat

Installierte Regeln anzeigen:

/sbin/iptables --list PREROUTING -t nat
/sbin/iptables --list OUTPUT -t nat

Beim System-Hochfahren aktivieren

Seit Ubuntu 10.04 LTS (Lucid) und Debian 6.0 (Squeeze) gibt es ein Paket mit dem Namen „iptables-persistent“, das das automatische Laden der gespeicherten iptables-Regeln übernimmt. Dazu müssen die Regeln in der Datei

/etc/iptables/rules.v4 für IPv4 und /etc/iptables/rules.v6 für IPv6

gespeichert werden. Möchte man einfach Regeln beim Hochfahren des Systems aktivieren, so kann man folgendes Paket installieren:

sudo apt-get install iptables-persistent

 

Doku

Eine gute Dokumentation findet man unter http://www.rrzn.uni-hannover.de/fw_debian.html