Généralités système Linux

iptables : quelques trucs utiles

Table des matières


Présentation



iptables est un logiciel libre de l'espace utilisateur Linux grâce auquel l'administrateur système peut configurer les chaînes et règles dans le pare-feu.
Je liste ici quelques commandes qui me sont utiles.

Les commandes



Vidage des tables et des règles



Bien souvent, en début de script c'est intéressant de supprimer toutes les éventuelles entrées déjà créées :
Code BASH :
iptables -F # Nettoie la chaîne sélectionnée. Ceci équivaut à effacer toutes les règles une par une.
iptables -X # Efface la chaîne spécifiée définie par l'utilisateur. 
iptables -t nat -F #Efface toutes les règles une par une de la table nat.
iptables -t nat -X # Efface la chaîne spécifiée définie par l'utilisateur de la table nat. 


Lister les règles



Pour lister les règles :
Code BASH :
iptables -L

Le retour donné est :
Code TEXT :
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
f2b-SSH    tcp  --  anywhere             anywhere            tcp dpt:italk 
DROP       all  --  46.161.9.0/24        anywhere            
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
Chain f2b-SSH (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere  

Avec un niveau de détail plus élevé, utiliser -v en plus :
Code BASH :
iptables -vL

Ce qui donne :
Code TEXT :
Chain INPUT (policy ACCEPT 15600 packets, 1272K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  18M 1583M f2b-SSH    tcp  --  any    any     anywhere             anywhere            tcp dpt:italk 
  973 58380 DROP       all  --  any    any     46.161.9.0/24        anywhere            
    0     0 DROP       all  --  any    any     46.161.9.32          anywhere            
    0     0 DROP       all  --  any    any     46.161.9.31          anywhere            
 
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 
Chain OUTPUT (policy ACCEPT 17629 packets, 10M bytes)
 pkts bytes target     prot opt in     out     source               destination         
 
Chain f2b-SSH (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  18M 1583M RETURN     all  --  any    any     anywhere             anywhere  

Bloquer un réseau



Pour bloquer un réseau (DROPPER les paquets) :
Code BASH :
iptables -A INPUT -s 46.161.9.0/24 -j DROP


Autoriser un prot et un protocole sur une interface



Autoriser par exemple le trafic web (HTTP) sur l'interface eth0 :
Code BASH :
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT

Redirection de port



Si on a un serveur en frontal qui sert de proxy ou routeur, il peut être utile de rediriger un port sur un serveur en interne, ou sur la même machine si on a un Proxmox ou des conteneurs LXC :
Code BASH :
#Rediriger le port 80 en entrée sur enp0s3 sur la machine 192.168.122.2, port 80
iptables -t nat -A PREROUTING -j DNAT -i enp0s3 -p tcp --dport 80 --to-destination 192.168.122.2:80
 


Faire du NAT



Le serveur linux en sortie de réseau est un proxy ? Vous avez besoin de NATER ? Voici la solution :
Code BASH :
#NATER tout ce qui sort par enp0s3 (cas d'un routeur avec enp0s3 sur l'Internet)
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
 


Ajouter une règle à un endroit donné



Au lieu d'ajouter une règle comme vu ci-dessus à la suite, on peut l'insérer à une position donnée. Exemple en position 1 :
Code BASH :
iptables -I INPUT 1 -s 46.161.9.0/24 -j DROP


Supprimer une règle



Pour supprimer une règle, par exemple la troisième de la liste du iptables -L de la chaine INPUT, saisir :
Code BASH :
iptables -D INPUT 3
Cette page a été vue 30942 fois