Activer le NAT avec ufw
Rédigé par Nicolas Sulek
Aucun commentaire
Classé dans : Réseau
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