Linux Firewall mit ipchains

Webproxy auf der Firewall

Falls dem Intranet ein Webproxy auf der Firewall zur Verfügung stehen soll, muss auch die Verbindung von intern zu diesem erlaubt sein. Nach Festlegen des definierten Ports (3128, 8080 oder 8000) helfen hier folgende Regeln:

# intern -> Webproxy auf Firewall + Antwort
ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d 192.168.1.1 3128 -j ACCEPT
ipchains -A output -i eth0 -p tcp -s 192.168.1.1 3128 -d 192.168.1.0/24 1024: ! -y -j ACCEPT

Damit der Webproxy nun allerdings selbst die geforderten Inhalte aus dem Internet holen kann, sind dessen Zugriffe ebenfalls freizuschalten. Das Beispiel geht von folgenden Annahmen aus:

  • Die äußere Schnittstelle ist ppp0

  • Die IPv4-Adresse ist nicht bekannt (etwa wegen dynamischer Zuweisung per PPP-Dial-up) Nur Verbindungen zu Port 80 (HTTP) und 443 (HTTPS) sowie passives FTP sind erlaubt.

Bei Bedarf fügen Sie ähnliche Filter mit anderen Ports hinzu. Wie schon im ersten Teil erwähnt, soll die Firewall für abgehende Verbindungen nur Ports aus dem Bereich 32768 bis 60999 benutzen. Also sind auch nur diese zugelassen.

# Webproxy -> Internet (Port 80/HTTP) + Antwort
ipchains -A output -i ppp0 -p tcp --sport 32768:60999 --dport 80 -j ACCEPT
ipchains -A input -i ppp0 -p tcp --sport 80 --dport 32768:60999 ! -y -j ACCEPT
# Webproxy -> Internet (Port 443/HTTPS) + Antwort
ipchains -A output -i ppp0 -p tcp --sport 32768:60999 --dport 443 -j ACCEPT
ipchains -A input -i ppp0 -p tcp --sport 443 --dport 32768:60999 ! -y -j ACCEPT
# Webproxy -> Internet (FTP:Kommandokanal) + Antwort
ipchains -A output -i ppp0 -p tcp --sport 32768:60999 --dport 21 -j ACCEPT
ipchains -A input -i ppp0 -p tcp --sport 21 --dport 32768:60999 ! -y -j ACCEPT
# Webproxy -> Internet (FTP: passiver Datentransfer) + Antwort
ipchains -A output -i ppp0 -p tcp --sport 32768:60999 --dport 1024: -j ACCEPT
ipchains -A input -i ppp0 -p tcp --sport 1024: --dport 32768:60999 ! -y -j ACCEPT

Wichtig ist hier, dass die Regeln in der input-Liste unbedingt mit "! -y" definiert sind. Andernfalls kann jeder aus dem Internet eine Verbindung zu Ports zwischen 32768 und 60999 aufbauen. Dort könnten noch Dienste aktiv sein wie etwa Netzwerk-Backup-Software.

Falls die Firewall auf der externen Schnittstelle eine feste IPv4-Adresse hat, sollte diese in den Regeln auch dediziert konfiguriert sein, als Beispiel hier für 1.2.3.4 und HTTP:

# # Webproxy -> Internet (Port 80/HTTP), ausgehende Adresse bekannt + Antwort
ipchains -A output -i ppp0 -p tcp -s 1.2.3.4 32768:60999 --dport 80 -j ACCEPT
ipchains -I input -i ppp0 -p tcp --sport 80 -d 1.2.3.4 32768:60999 ! -y -j ACCEPT