7.4. FORWARD und NAT Regeln

Den meisten Organisationen wird eine limitierte Anzahl von öffentlich routbaren IP-Adressen von ihrem ISP zugewiesen. Aufgrund dieser Einschränkungen müssen die Administratoren kreative Wege finden, den Zugang zum Internet aufzuteilen, ohne dass jedem Knoten am LAN kostbare IP-Adressen zugeteilt werden. Der normale Weg, damit alle Knoten auf einem LAN die Netzwerkdienste intern und extern nützen können, ist die Verwendung von privaten IP-Adressen. Edge Routers (wie Firewalls) können eingehende Übertragungen vom Internet empfangen und die Pakete zu den gewünschten LAN-Knoten leiten. Gleichzeitig können Firewalls/Gateways auch ausgehende Anfragen von einem LAN-Knoten zu dem entfernten Internetdienst leiten. Dieses Weiterleiten des Netzwerkverkehrs kann manchmal gefährlich werden, vor allem, wenn moderne Cracking Tools verwendet werden, die interne IP-Adressen austricksen können und den Computer des externen Angreifers wie einen Netzwerkknoten des LAN erscheinen lassen. Zur Vorbeugung bietet iptables Richtlinien zum Routing und Weiterleiten, die eingesetzt werden können, um fälschlicher Verwendung von Netzwerk-Ressourcen vorzubeugen.

Die FORWARD Richtlinie erlaubt einem Administrator zu kontrollieren, wohin die Pakete innerhalb eines LAN geroutet werden können. Wenn z.B. ein Weiterleiten an den gesamten LAN erlaubt werden soll (angenommen, die Firewall/Gateway hat eine interne IP-Adresse auf eth1), können die folgenden Regeln eingestellt werden.

iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT

Diese Regel ermöglicht Systemen hinter der Firewall/dem Gateway Zugang zum internen Netzwerk. Der Gateway leitet Pakete von einem LAN-Knoten zu dessem beabsichtigten Ziel-Knoten, indem alle Pakete durch dessen eth1-Gerät durchlaufen.

AnmerkungAnmerkung
 

Die IPv4 Richtlinie in Red Hat Enterprise Linux Kernels verhindert standardmäßig die Unterstützung von IP-Weiterleitung, was verhindert, dass Boxen, die Red Hat Enterprise Linux ausführen, als zugeordnete Edge Router fungieren. Führen Sie den folgenden Befehl aus, um IP-Weiterleitung einzuschalten:

sysctl -w net.ipv4.ip_forward=1

Wenn dieser Befehl über einen Shell-Prompt ausgeführt wird, wird die Einstellung nach einem Neustart nicht behalten. Sie können permanentes Weiterleiten einstellen, indem Sie die /etc/sysctl.conf Datei bearbeiten. Suchen Sie die folgende Zeile und ersetzen Sie 0 mit 1:

net.ipv4.ip_forward = 0

Führen Sie den folgenden Befehl aus, um die Änderung der sysctl.conf Datei zu ermöglichen:

sysctl -p /etc/sysctl.conf

Dies erlaubt LAN-Netzwerkknoten, miteinander zu kommunizieren. Es ist ihnen jedoch nicht gestattet, extern (zum Beispiel mit dem Internet) zu kommunizieren. Um LAN-Netzwerkknoten mit privaten IP-Adressen das Kommunizieren mit externen öffentlichen Netzwerken zu ermöglichen, konfigurieren Sie die Firewall für IP-Masquerading. Dies maskiert Anfragen der LAN-Netzwerkknoten mit der IP-Adresse der äußeren Einstellung der Firewall (in diesem Fall eth0):

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Die Regel benutzt die NAT-Paketverwaltungstabelle (Packet Matching) (-t nat) und legt die eingebaute POSTROUTING-Kette für NAT(-A POSTROUTING) auf dem externen Netzwerkgerät der Firewall fest (-o eth0). POSTROUTING erlaubt es Paketen abgeändert zu werden, da diese das externe Gerät der Firewall verlassen. Das -j MASQUERADE-Target-Option ist festgelegt, um die private IP-Adresse eines Knotens mit der externen IP-Adresse der Firewall/des Gateways zu maskieren.

Wenn Sie einen Server in Ihrem internen Netzwerk extern zugänglich machen möchten, können Sie die Target-Option -j DNAT der PREROUTING-Kette in NAT dazu verwenden, Ziel-IP-Adresse und Port festzulegen, wo eingehende Pakete, die um eine Verbindung mit Ihrem internen Service anfragen, weitergeleitet werden können. Wenn Sie zum Beispiel eingehende HTTP-Anfragen an Ihr Apache HTTP Server Server-System auf IP-Adresse 172.31.0.23 weiterleiten möchten, führen Sie folgenden Befehl aus:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \
      --to 172.31.0.23:80

Diese Regel legt fest, dass die NAT-Tabelle die eingebaute PREROUTING-Kette zur Weiterleitung eingehender HTTP-Anfragen ausschließlich an die gelistete Ziel-IP-Adresse von 172.31.0.23 benutzt.

AnmerkungAnmerkung
 

Wenn sich die Standardmethode DROP in Ihrer FORWARD-Kette befindet, müssen Sie eine Regel anhängen, die das Weiterleiten von eingehenden HTTP-Anfragen ermöglicht, sodass das Ziel-NAT-Routing ermöglicht wird. Führen Sie dazu folgenden Befehl aus:

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT

Die Regel erlaubt das Weiterleiten von eingehenden HTTP-Anfragen von der Firewall zu deren vorgesehenem Ziel auf dem Apache HTTP Server-Server hinter der Firewall.

7.4.1. DMZs und iptables

iptables-Regeln können dafür verwendet werden, den Verkehr zu bestimmten Maschinen zu leiten, wie zum Beispiel einem zweckbestimmten HTTP- oder FTP-Server in einer demilitarisierten Zone (DMZ) — ein spezielles lokales Subnetzwerk, das dazu bestimmt ist Dienste öffentlich, z.B. im Internet, anzubieten. Um eine Regel für das Routen von allen eingehenden HTTP-Anfragen zu einem ausgewiesenen HTTP-Server auf IP-Adresse 10.0.4.2 festzulegen (außerhalb der 192.168.1.0/24 Reichweite des LAN), ruft Network Address Translation (NAT) eine PREROUTING-Tabelle auf. Damit werden die Pakete an das richtige Ziel weitergeleitet:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \
	    --to-destination 10.0.4.2:80

Mit diesem Befehl werden alle HTTP-Verbindungen zu Port 80 von außerhalb des LAN auf den HTTP-Server in ein vom Rest des internen Netzwerks getrenntes Netzwerk geleitet. Diese Art der Netzwerksegmentierung kann sicherer sein, als wenn die HTTP-Verbindungen auf einer Maschine im Netzwerk gestattet werden. Wenn der HTTP-Server so konfiguriert ist, dass er sichere Verbindungen akzeptiert, dann muss auch Port 443 weitergeleitet werden.