Les plus courant, consulter le man pour en savoir plus.
Les tables ( -t table )
filter
table par défaut contenant les chaînes INPUT, FORWARD et OUTPUTnat
pour le routage de port contenant les chaines PREROUTING, OUTPUT et POSTROUTINGmangle
(voir doc)Les options
-A
ajoute une règle à la fin-I
insert une règle au début-D
supprimer une règle-R
remplace une règle-L
liste les règlesSuivi de la chaîne
INPUT
, FORWARD
, OUTPUT
PREROUTING
, OUTPUT
, POSTROUTING
Les paramètres
-p
le protocole : tcp, udp, icmp, all (par défaut)-s
la source : adresse ip + le masque si on veut–sport(s)
: le ou les ports source (séparé par une virgule)-d
la destination : adresse ip + le masque si on veut–dport(s)
: le ou les ports destination (séparé par une virgule)-i
interface qui reçoit le paquet-o
interface qui envoi le paquet-j
cible du paquetACCEPT
DROP
REJECT
DNAT/SNAT/MASQUERADE/REDIRECT
si on fait du nat ( –to-destination ip:port )LOG/MARK
si on veut loguer/marquer des paquetsOn peut maintenant construire facilement une ligne de commandes
Pour bloquer une adresse ip en entrée
iptables -I INPUT -s 192.168.1.2 -j DROP
Pour savoir ce qu’il y a comme règle iptables
iptables-save
Pour sauvegarder ses règles iptables
iptables-save > fichier
Pour restaurer ses règles iptables
iptables-restore < fichier
Pour voir ce qu’il se passe en temps réel sur le nat
iptables -v -L -t nat
Vérifier si le routage dans le noyau est actif
cat /proc/sys/net/ipv4/ip_forward
Si on obtient 1 c’est qu’il est actif, si on obtient 0 c’est qu’il est inactif
Activer le routage dans le noyau
sysctl -w net.ipv4.ip_forward=1
Modifiez le fichier /etc/sysctl.conf pour que cette option soit activé lors d’un redémarrage. Recherchez la ligne
net.ipv4.ip_forward = 1
Bloquer une adresse ip
iptables -I INPUT -s 111.111.111.111 -j DROP
-I place la règle au début et donc coupe la connexion, si on met -A la règle s’ajoute à la fin et ne coupe pas la connexion en cours.
Supprimer cette règle
iptables -D INPUT -s 111.111.111.111 -j DROP
Ou en affichant les numéros de règles et en supprimant via le numéro de la règle
iptables -L --line-number iptables -D [table] [numéro de la règle]
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
Rediriger ce qui rentre sur le port 25 vers une autre machine sur le port 25
iptables -A PREROUTING -t nat -p tcp --dport 25 -j DNAT --to xx.xx.xx.xx:25
Un serveur 81.81.81.81 Un serveur web A 12.12.12.12 Un serveur web B 12.12.12.34 (non visible de l’extérieur mais visible par le serveur web A)
Le but recherché, tout le monde qui va sur le serveur web A voit le site web du serveur web A. Si le serveur 81.81.81.81 va sur le serveur web A il doit voir le site web du serveur web B.
Voici le fichier généré par iptables-save, règle sur le firewall du serveur web A
# Generated by iptables-save v1.3.6 on Fri Apr 24 15:14:15 2009 *nat :PREROUTING ACCEPT [54:6109] :POSTROUTING ACCEPT [31:2383] :OUTPUT ACCEPT [31:2383] -A PREROUTING -s 81.81.81.81 -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 12.12.12.34:80 -A POSTROUTING -s 81.81.81.81 -d 12.12.12.34 -o eth0 -p tcp -m tcp --dport 80 -j MASQUERADE COMMIT # Completed on Fri Apr 24 15:14:15 2009 # Generated by iptables-save v1.3.6 on Fri Apr 24 15:14:15 2009 *filter :INPUT ACCEPT [1687:427004] :FORWARD ACCEPT [429:174368] :OUTPUT ACCEPT [1222:756966] COMMIT # Completed on Fri Apr 24 15:14:15 2009
Biensur ces règles sont données de la facon la plus simple possible, aucune sécurité n’est mis en place.
Question/réponse de forum :
http://linuxfr.org/forums/12/19544.html
http://www.commentcamarche.net/forum/affich-11350173-iptables-et-traffic-entrant
Tuto :
http://www.linux-pour-lesnuls.com/iptables.php
http://formation-debian.via.ecp.fr/firewall.html
http://www.lea-linux.org/documentations/index.php/Reseau-secu-iptables