Ce guide tentera d’expliquer comment utiliser iptables sous Linux dans un langage facile à comprendre.
Aperçu
Iptables est un pare-feu basé sur des règles, qui traitera chaque règle dans l’ordre jusqu’à ce qu’il en trouve une qui corresponde.
Todo: inclure un exemple ici
Usage
L’utilitaire iptables est généralement pré-installé sur votre distribution Linux, mais n’exécute en fait aucune règle. Vous trouverez l’utilitaire ici sur la plupart des distributions:
/sbin/iptables
Bloquer une seule adresse IP
Vous pouvez bloquer une adresse IP en utilisant le paramètre -s, en remplaçant 10.10.10.10 par l’adresse que vous essayez de bloquer. Vous remarquerez dans cet exemple que nous avons utilisé le paramètre -I (ou –insert fonctionne également) au lieu de l’ajout, car nous voulons nous assurer que cette règle s’affiche en premier, avant toute règle d’autorisation.
/sbin/iptables -I INPUT -s 10.10.10.10 -j DROP
Autoriser tout le trafic à partir d’une adresse IP
Vous pouvez également autoriser tout le trafic à partir d’une adresse IP en utilisant la même commande que ci-dessus, mais en remplaçant DROP par ACCEPT. Vous devez vous assurer que cette règle apparaît en premier, avant toute règle DROP.
/sbin/iptables -A INPUT -s 10.10.10.10 -j ACCEPT
Bloquer un port de toutes les adresses
Vous pouvez empêcher entièrement l’accès à un port via le réseau en utilisant le commutateur –dport et en ajoutant le port du service que vous souhaitez bloquer. Dans cet exemple, nous allons bloquer le port mysql:
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP
Autoriser un seul port à partir d’une seule adresse IP
Vous pouvez ajouter la commande -s avec la commande –dport pour limiter davantage la règle à un port spécifique:
/sbin/iptables -A INPUT -p tcp -s 10.10.10.10 --dport 3306 -j ACCEPT
Affichage des règles actuelles
Vous pouvez afficher les règles actuelles à l’aide de la commande suivante:
/sbin/iptables -L
Cela devrait vous donner un résultat similaire à ce qui suit:
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 192.168.1.1/24 anywhere ACCEPT all -- 10.10.10.0/24 anywhere DROP tcp -- anywhere anywhere tcp dpt:ssh DROP tcp -- anywhere anywhere tcp dpt:mysql
La sortie réelle sera un peu plus longue, bien sûr.
Effacer les règles actuelles
Vous pouvez effacer toutes les règles actuelles à l’aide du paramètre flush. Ceci est très utile si vous devez mettre les règles dans le bon ordre ou lorsque vous effectuez un test.
/sbin/iptables --flush
Spécifique à la distribution
Alors que la plupart des distributions Linux incluent une forme d’iptables, certaines d’entre elles incluent également des wrappers qui facilitent un peu la gestion. Le plus souvent, ces «addons» prennent la forme de scripts d’initialisation qui s’occupent d’initialiser iptables au démarrage, bien que certaines distributions incluent également des applications wrapper à part entière qui tentent de simplifier le cas courant.
Gentoo
Le iptables Le script init sur Gentoo est capable de gérer de nombreux scénarios courants. Pour commencer, il vous permet de configurer iptables pour qu’il se charge au démarrage (généralement ce que vous voulez):
rc-update add iptables default
En utilisant le script init, il est possible de charger et d’effacer le pare-feu avec une commande facile à retenir:
/etc/init.d/iptables start /etc/init.d/iptables stop
Le script init gère les détails de la persistance de la configuration actuelle de votre pare-feu au démarrage / à l’arrêt. Ainsi, votre pare-feu est toujours dans l’état où vous l’avez laissé. Si vous devez enregistrer manuellement une nouvelle règle, le script init peut également gérer cela:
/etc/init.d/iptables save
De plus, vous pouvez restaurer votre pare-feu à l’état enregistré précédent (dans le cas où vous expérimentiez des règles et que vous souhaitez maintenant restaurer la configuration de travail précédente):
/etc/init.d/iptables reload
Enfin, le script init peut mettre iptables en mode «panique», où tout le trafic entrant et sortant est bloqué. Je ne sais pas pourquoi ce mode est utile, mais tous les pare-feu Linux semblent l’avoir.
/etc/init.d/iptables panic
Avertissement: Ne lancez pas le mode panique si vous êtes connecté à votre serveur via SSH; tu volonté être déconnecté! Le seul moment où vous devriez mettre iptables en mode panique est lorsque vous êtes physiquement devant l’ordinateur.