3. Activer le routage
Nous allons activer le routage sur Debian. J’édite donc le fichier « vim /etc/sysctl.conf »
vim /etc/sysctl.conf
Sur la première partie de mon fichier j’ai ceci (en bas du screenshot):
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
Comme expliquer clairement dans la le commentaire du fichier de conf je vais décommenter « net.ipv4.ip_forward=1 » comme ceci :
J’enregistre mon fichier. Puis pour que ma modification soit prise en compte je lance la commande :
root@DEBIAN-ROUTEUR:~# sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 1
J’essaye de pinger depuis ma Lubuntu (10.10.20.10) ma Lubuntu 2(10.10.30.10)
Donc le routage fonctionne bien entre mes 2 sous réseaux 😀 !
Une fois que la partie routage est validé il va faloir que je puisse sortir sur internet ….
4. Activer le NAT
Nous allons configurer dans un premier temps la règle qui va permettre à mes machines Lubuntu d’aller sur internet. Une fois la règle créer en ligne de commande nous allons faire en sorte que cette règle soit persistante
Remarque: Je suis derrière mon routeur Debian qui est lui même derrière ma box internet donc pour sortir sur internet(depuis mes lubuntu) je vais une fois être nater sur l’IP 192.168.1.195 (IP « WAN »de mon routeur DEBIAN) puis nater par ma boxe internet avec une ip publique.
Pour activer le NAT je tape donc la commande suivante :
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
Explications de la règles :
-t : table . En l’occurence nous avons sélectionnés la table NAT (par défaut c’est la table filter)
POSTROUTING : C’est une chain qui va manipuler les adresses réseaux juste avant d’émettre le paquet physiquement.
-o : out. L’interface publique pour aller sur internet(enp0s3).
MASQUERADE : Remplace l’ip privé par l’ip publique du routeur. Va remplacer (masquer) mon ip privé par mon ip publique.
Pour lister mes règles de NAT :
root@DEBIAN-ROUTEUR:~# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Je vérifie que sur ma Lubuntu j’ai bien accès à internet :
Génial on accès à internet 😆
En revanche si je redémarre ma machine je perd ma règle de NAT … 🙁
💡 C’est pour cela que l’on va faire en sortes que cette règles soit persistantes et la mettre en dur dans un fichier.
Pour cela on va installer le paquet suivant :
apt install iptables-persistent
Il me demande si je souhaite sauvegarder mes règles IPv4 je mets oui
N’ayant pas de règles ipV6 non
J’édite ensuite le fichier ou vons être stockés toutes mes règles (persistantes)iptables
vim /etc/iptables/rules.v4
# Generated by xtables-save v1.8.2 on Sat Jan 23 00:05:44 2021
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o enp0s3 -j MASQUERADE
COMMIT
# Completed on Sat Jan 23 00:05:44 2021
# Generated by xtables-save v1.8.2 on Sat Jan 23 00:05:44 2021
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Sat Jan 23 00:05:44 2021
On observe bien ma règle créer précédemment qui a été sauvegardés dans le fichier.
Si je fait une nouvelle règle pour quels soit persistantes il faudra la taper en CLI (ou la mettre directement dans le fichier)puis utiliser la commandes suivantes :
iptables-save > /etc/iptables/rules.v4
5. Sécuriser son routeur
Nous allons présenter quelques règles simples iptables pour sécuriser l’accès à son routeur. (On détaillera iptables, les policy ect … dans un autre tuto)
ATTENTION : en règle général il faut bien réfléchir et bien configurer ses règles iptables pour ne pas se bloquer soit même ça m’est déjà arriver … 😐
Pour l’exemple on va juste sécuriser l’accès au routeur en SSH. Donc je vais autoriser l’accès à mon routeur depuis l’ip de mon PC(physique) sur la pate WAN de mon routeur.
iptables -A INPUT -s 192.168.1.253 -p tcp --dport ssh -j ACCEPT
Explications :
-A : pour ajouter la règle
Chain INPUT : c’est l’endroit où les paquets qui arrivent rentrent dans la carte réseau et sont à destination d’un des programmes qui tournent sur la machine.
Exemple une connexion ssh qui arrive sur la machine. La demande de connexion va passer par cette chaîne INPUT. En gros les paquets destinés à mon routeur.
-p : le protocole ici tcp
–dport : destination port(ici le port 22 pour ssh)
-j : jump, l’action à faire(ici nous allons l’accepter).
Je vais maintenant bloquer tout les IPs qui souhaiteraient se connecter à mon routeur Debian.
iptables -I INPUT 2 -p tcp --dport ssh -j DROP
-I : pour que j’insère cette règle à une certaines position car mes règles sont lues de la première à dernière et si je la mets en premier alors je bloquerais mon accès.
INPUT 2 : en deuxième position sur la châine INPUT.
Si j’essaie de me connecter avec ma lubuntu à mon routeur Debian je n’y parviens pas.
Je rend ensuite mes règles persistentes :
iptables-save > /etc/iptables/rules.v4
root@DEBIAN-ROUTEUR:~# cat /etc/iptables/rules.v4
# Generated by xtables-save v1.8.2 on Sat Jan 23 00:49:11 2021
*nat
:PREROUTING ACCEPT [42:8199]
:INPUT ACCEPT [31:6833]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [11:811]
-A POSTROUTING -o enp0s3 -j MASQUERADE
COMMIT
# Completed on Sat Jan 23 00:49:11 2021
# Generated by xtables-save v1.8.2 on Sat Jan 23 00:49:11 2021
*filter
:INPUT ACCEPT [688:56838]
:FORWARD ACCEPT [2364:198544]
:OUTPUT ACCEPT [1023:117084]
-A INPUT -s 192.168.1.253/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
COMMIT
# Completed on Sat Jan 23 00:49:11 2021
Mes règles sont bien enregistrés dans mon fichier et seront toujours présentes lors du redémarrage de la machine.
C’est la fin de ce tuto j’espère qu’ils vous a plu et qu’il vous a permis de voir par mal de notions réseaux sur Debian et qu’ils vous sera utile pour la suite.
A bientôt 😀 !