7.4. Règles FORWARD et NAT

La plupart des organisations possèdent un nombre limité d'adresses IP routables de l'extérieur provenant de leur ISP. De ce fait, les administrateurs doivent trouver d'autres moyens créatifs pour partager l'accès aux services Internet sans donner d'adresses IP publiques limitées à chaque noeud sur le LAN. L'utilisation d'adresses IP privées est la manière courante de permettre à tous les noeuds sur un LAN d'accéder correctement aux services du réseau de façon interne et externe. Les routeurs de bord (comme les pare-feu) peuvent recevoir des transmissions entrantes provenant de l'internet et router des paquets vers le noeud du LAN souhaité. En même temps, les pare-feu / passerelles peuvent également router les requêtes sortantes provenant d'un noeud du LAN vers le service Internet à distance. Cette retransmission de trafic réseau peut parfois devenir dangereuse, surtout avec la disponibilité d'outils de piratage modernes qui peuvent usurper les adresses IP internes et ainsi, faire en sorte que la machine de l'agresseur distant agisse en tant que noeud sur votre LAN. Afin d'éviter cette situation, iptables fournit des politiques de routage et de retransmission qui peuvent être implémentées pour empêcher l'utilisation aberrante de ressources réseau.

La politique FORWARD permet à un administrateur de contrôler où les paquets peuvent être routés au sein d'un LAN. Par exemple, pour autoriser la retransmission du LAN entier (en supposant que le pare-feu / la passerelle a une adresse IP interne sur eth1), les règles suivantes peuvent être définies :

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

Cette règle permet aux systèmes situés derrière le pare-feu / la passerelle d'accéder au réseau interne. La passerelle route des paquets depuis un noeud du LAN jusqu'au noeud de destination, tous les paquets traversant son périphérique eth1.

NoteRemarque
 

Par défaut, la politique IPv4 des noyaux Red Hat Enterprise Linux désactive la prise en charge de la redirection d'IP qui empêche les ordinateurs exécutant Red Hat Enterprise Linux de fonctionner comme des routeurs de bord dédiés. Pour activer la redirection d'IP, exécutez la commande suivante :

sysctl -w net.ipv4.ip_forward=1

Si cette commande est exécutée via une invite du shell, le paramètre est alors oublié après un redémarrage. Vous pouvez définir la retransmission de façon permanente en éditant le fichier /etc/sysctl.conf. Trouvez et modifiez la ligne suivante, en remplaçant 0 par 1 :

net.ipv4.ip_forward = 0

Exécutez la commande suivante pour activer les changements dans le fichier sysctl.conf :

sysctl -p /etc/sysctl.conf

Accepter les paquets retransmis via le périphérique d'IP interne du pare-feu permet aux noeuds du LAN de communiquer entre eux. Cependant, ils ne peuvent toujours pas communiquer vers l'extérieur (par exemple, vers l'internet). Pour permettre aux noeuds du LAN avec des adresses IP privées de communiquer avec les réseaux public externes, configurez le pare-feu pour le masquage d'IP, qui masque les requêtes provenant des noeuds du LAN avec l'adresse IP du périphérique externe du pare-feu (dans ce cas, eth0) :

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

La règle utilise la table de correspondance de paquets de NAT (-t nat) et spécifie la chaîne intégrée POSTROUTING pour NAT (-A POSTROUTING) sur le périphérique réseau externe du pare-feu (-o eth0). POSTROUTING permet aux paquets d'être modifiés lorsqu'ils quittent le périphérique externe du pare-feu. La cible -j MASQUERADE est spécifiée pour masquer l'adresse IP privée d'un noeud avec l'adresse IP externe du pare-feu / de la passerelle.

Si vous possédez un serveur sur votre réseau interne que vous souhaitez rendre disponible de manière externe, vous pouvez utiliser la cible -j DNAT de la chaîne PREROUTING dans NAT pour spécifier une adresse IP et un port de destination où les paquets entrants demandant une connexion à votre service interne peuvent être retransmis. Par exemple, si vous souhaitez retransmettre des requêtes HTTP à votre système de Serveur HTTP Apache dédié sur 172.31.0.23, exécutez la commande suivante :

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

Cette règle spécifie que la table NAT utilise la chaîne intégrée PREROUTING pour retransmettre les requêtes HTTP entrantes exclusivement à l'adresse IP de destination listée de 172.31.0.23.

NoteRemarque
 

Si vous avez une politique par défaut DROP dans votre chaîne FORWARD, vous devez ajouter une règle autorisant la retransmission de requêtes HTTP entrantes afin que le routage NAT de destination soit possible. Pour ce faire, exécutez la commande suivante :

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

Cette règle autorise la retransmission de requêtes HTTP entrantes depuis le pare-feu vers la destination souhaitée sur le Serveur HTTP Apache derrière le pare-feu.

7.4.1. DMZ et iptables

Des règles iptables peuvent être définies de façon à router le trafic vers certains ordinateurs, comme un serveur HTTP ou FTP dédié, dans une zone démilitarisée (DMZ) — un sous-réseau local spécial dédié à fournir des services sur un porteur public comme l'internet. Par exemple, pour définir une règle de façon à router toutes les requêtes HTTP entrantes vers un serveur HTTP dédié à l'adresse IP 10.0.4.2 (en dehors de la plage 192.168.1.0/24 du LAN), la traduction d'adresses réseau (NAT) fait appel à une table PREROUTING afin de rediriger les paquets vers leur correcte destination :

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

À l'aide de cette commande, toutes les connexions HTTP vers le port 80 provenant de l'extérieur du LAN sont routées vers le serveur HTTP sur un réseau séparé du reste du réseau interne. Cette forme de segmentation de réseau peut s'avérer plus sécurisée que le fait d'autoriser des connexions HTTP vers une machine sur le réseau. Si le serveur HTTP est configuré de façon à accepter des connexions sécurisées, le port 443 doit alors être également redirigé.