Différences entre versions de « Iptables »
Ligne 30 : | Ligne 30 : | ||
* Faire du NAT sur les paquets en provenance du LAN (réseau source 192.168.1.0/24): | * Faire du NAT sur les paquets en provenance du LAN (réseau source 192.168.1.0/24): | ||
<pre> | <pre> | ||
− | # iptables -t nat -A POSTROUTING - | + | # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
</pre> | </pre> | ||
* Vider la table ''FORWARD'' | * Vider la table ''FORWARD'' |
Version du 19 novembre 2018 à 16:45
Introduction
Soit une passerelle entre un LAN et Internet. Le LAN a le plan d'adressage 192.168.1.0/24 (192.168.1.254 pour la passerelle) et la passerelle a l'adresse publique 1.2.3.4.
Sur le LAN, il y a également un serveur Web à l'adresse 192.168.1.253.
Filtrage
Sur le serveur Web, on voudra autoriser le service HTTP (TCP/80)
# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT
Pourquoi insérer à la deuxième ligne (-I INPUT 2) plutôt que d'ajouter à la fin ?? Si vous regardez bien les règles d'un pare-feu Iptables sur une CentOS:
# iptables -nvL INPUT
On s'aperçoit que:
- la première règle autorise tout le trafic initié depuis la machine;
- la dernière règle drop tous les paquets
Il faut donc insérer notre règle entre les deux règles précédentes (e.g. en deuxième position).
Translation d’adresses
Pour les machines sur le LAN, il faut faire du camouflage (MASQUERADE en anglais), c'est-à-dire que les adresses du LAN (privées et donc non routables sur Internet)seront remplacées "à la volée" par l'adresse publique de la passerelle. Pour cela il faut:
- Faire du NAT sur les paquets en provenance du LAN (réseau source 192.168.1.0/24):
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- Vider la table FORWARD
# iptables -F FORWARD
- Activer le routage sur la machine...
... en positionnant le paramètre ip_forward à 1...
# vi /etc/sysctl.conf
... et en rechargant les paramètres du noyau.
# sysctl -p
Translation de port
Pour que les clients sur Internet puissent joindre le serveur Web, il faut rediriger le port TCP/80 de la passerelle sur le port TCP/80 du serveur Web (eth0 est l'interface WAN)
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.253
Un peu de sécurité
On peut limiter le nombre de requêtes pour ne pas se succomber à un déni de service (DoS) :
# iptables -I INPUT 2 -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT
On peut également limiter le scan de port :
# iptables -I INPUT 2 -p tcp —tcp-flags SYN,ACK,FIN,RST RST -m limit —limit 1/s -j RETURN
Sauvegarde
Pour rendre les règles que vous venez de rentrer persistentes, n'oubliez pas de les sauvegarder:
# service iptables save iptables : Sauvegarde des règles du pare-feu dans /etc/sysconfig/iptables : [ OK ]