Activer le NAT avec ufw

Rédigé par Nicolas Sulek Aucun commentaire
Classé dans : Réseau Mots clés : Debian, iptables, kernel, Ubuntu, ufw
ufw (uncomplicated firewall) est l'outil par défaut de configuration du pare-feu pour la distribution Ubuntu. Il est également disponible dans les paquets Debian et sans doute pour d'autres distributions.

Il permet ainsi de configurer assez facilement son pare-feu en ligne de commande. Par exemple, pour autoriser les accès à un serveur HTTP, il suffit de taper
ufw allow 80/tcp


Principe de la traduction d'adresse réseau


Le but du masquage d'IP (IP Masquerading), une forme de la traduction d'adresse réseau (NAT) dynamique, est de permettre à des machines ayant des adresses IP privées, non routables (faisant partie des blocs 10.0.0.0 à 10.255.255.255, 172.16.0.0 à 172.31.255.255, et 192.168.0.0 à 192.168.255.255) d'accéder à Internet au travers d'une machine assurant la traduction d'adresse et le masquage des adresses internes.

Le noyau Linux se charge alors de modifier l'adresse IP source pour chaque paquet et maintient ainsi dynamiquement une table de correspondance. Seule l'adresse IP externe, la publique, est alors visible par l'extérieur.

Mise en place avec ufw


Pour activer l'IP Masquerading avec ufw, il faut passer par l'édition de fichiers, il n'existe pas (encore) de commandes comme ufw allow.

On va ainsi éditer un fichier de configuration pour autoriser l'ordinateur faisant office de routeur à transmettre des paquets provenant d'autres adresses IP, un autre pour modifier la politique par défaut de ufw sur le traitement de ces paquets et, enfin, un dernier pour rajouter les règles iptables autorisant le réseau interne à communiquer avec l'extérieur.

Activation de l'IP Forward


La transmission de paquets est désactivée par défaut, ce qui est une bonne chose d'un point de vue sécurité. Il va donc falloir indiquer au noyau Linux que l'on souhaite l'activer à présent.

Pour ça, il faut éditer le fichier etc/sysctl.conf (permettant de modifier le comportement du noyau Linux) et rajouter :
net.ipv4.ip_forward=1

pour la transmission de paquets IPv4.

Au prochain redémarrage, le changement sera effectif. Pour le rendre immédiat, il suffit de taper :
sysctl -p

qui va relire le fichier /etc/sysctl.conf et appliquer ses directives.

Modification de la politique par défaut de ufw


Par défaut, ufw est configuré pour rejeter les paquets à transmettre.

Pour modifier ce comportement, il faut éditer le fichier /etc/default/ufw et modifier la directive
DEFAULT_FORWARD_POLICY= "Drop"

en
DEFAULT_FORWARD_POLICY="Accept"

Autorisation des communications avec l'extérieur


Pour le moment, la fonction de transmission de paquets est activée, ufw ne rejettera plus de paquets à transmettre, mais aucune adresse IP n'est autorisée. On va donc rajouter à ufw les règles nécessaires.

Pour ça, nous partons sur l'hypothèse que la machine faisant office de routeur a une interface eth0 reliée à Internet, une interface eth1 reliée au réseau interne et que le réseau interne a pour adresse réseau 192.168.0.0/24.

Il ne reste plus qu'à éditer le fichier /etc/ufw/before.rules et à ajouter immédiatement après les lignes d'en-têtes commençant par # :
# règles pour la table NAT
*nat
:POSTROUTING ACCEPT [0:0]

# transmission du trafic provenant de eth1 vers eth0
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

# a ne surtout pas oublier !
COMMIT

Il ne reste plus qu'à relancer ufw avec :
ufw disable && ufw enable

et nos machines internes, privées d'adresses IP publiques, ont enfin accès à internet grâce au NAT

Les commentaires sont fermés.