Outils pour utilisateurs

Outils du site


Panneau latéral

linux:iptables (lu 58663 fois)

iptables

Liens utiles

Commandes

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 OUTPUT
  • nat pour le routage de port contenant les chaines PREROUTING, OUTPUT et POSTROUTING
  • mangle (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ègles

Suivi 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 paquet
    • ACCEPT
    • DROP
    • REJECT
    • DNAT/SNAT/MASQUERADE/REDIRECT si on fait du nat ( –to-destination ip:port )
    • LOG/MARK si on veut loguer/marquer des paquets

On 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

Commande utile

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

Commande pratique

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]

Exemple simple d'une redirection d'un port

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

Exemple

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.

Liens utiles

linux/iptables.txt · Dernière modification: 29-03-2016 11:08 de edmc73