Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
iptables [Le 11/09/2022, 11:30]
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
iptables [Le 16/02/2025, 06:46] (Version actuelle)
78.121.49.7 [Configuration du pare-feu]
Ligne 5: Ligne 5:
 =====Iptables===== =====Iptables=====
  
 +FIXME: Depuis une Ubuntu 23.10, le package [[apt>​iptables]] semble être maintenu, voir : https://​changelogs.ubuntu.com/​changelogs/​pool/​main/​i/​iptables/​iptables_1.8.9-2ubuntu2/​changelog -- [[utilisateurs:​BeAvEr]],​ en date du : ✨✨ **////​__(14/​09/​2023)__** ✨✨
 +
 +----
  
 Iptables est une interface en ligne de commande permettant de configurer Netfilter. En plus de Iptables, depuis la version 8.04, Ubuntu est installé avec la surcouche [[:​ufw|UFW]] qui permet de contrôler simplement Netfilter, [[:​ufw|UFW]] est toutefois moins complet que iptables. Iptables est une interface en ligne de commande permettant de configurer Netfilter. En plus de Iptables, depuis la version 8.04, Ubuntu est installé avec la surcouche [[:​ufw|UFW]] qui permet de contrôler simplement Netfilter, [[:​ufw|UFW]] est toutefois moins complet que iptables.
Ligne 54: Ligne 57:
 Pour permettre à une connexion déjà ouverte de recevoir du trafic : Pour permettre à une connexion déjà ouverte de recevoir du trafic :
 <​code>​ <​code>​
-iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT+sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
 </​code>​ </​code>​
 Cette commande ajoute une règle (''​-A''​) à la chaîne contrôlant le trafic entrant //INPUT//, pour autoriser le trafic (''​-j ACCEPT''​),​ aprés vérification que l'​état de la connexion est établie (''​-m conntrack --ctstate ESTABLISHED''​). Cette commande ajoute une règle (''​-A''​) à la chaîne contrôlant le trafic entrant //INPUT//, pour autoriser le trafic (''​-j ACCEPT''​),​ aprés vérification que l'​état de la connexion est établie (''​-m conntrack --ctstate ESTABLISHED''​).
Ligne 68: Ligne 71:
 Pour permettre le trafic entrant sur le port 22 (traditionnellement utilisé par SSH, vous devrez indiquer à iptables tout le trafic TCP sur le port 22 de votre adaptateur réseau. Pour permettre le trafic entrant sur le port 22 (traditionnellement utilisé par SSH, vous devrez indiquer à iptables tout le trafic TCP sur le port 22 de votre adaptateur réseau.
 <​code>​ <​code>​
-iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT+sudo iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT
 </​code>​ </​code>​
 Cette commande ajoute une règle (''​-A''​) à la chaîne contrôlant le trafic entrant //INPUT//, pour autoriser le trafic (''​-j ACCEPT''​),​ vers l'​interface (''​-i''​) //eth0// et à destination du port (''<​nowiki>​--dport</​nowiki>''​) //SSH// (on aurait pu mettre 22). Cette commande ajoute une règle (''​-A''​) à la chaîne contrôlant le trafic entrant //INPUT//, pour autoriser le trafic (''​-j ACCEPT''​),​ vers l'​interface (''​-i''​) //eth0// et à destination du port (''<​nowiki>​--dport</​nowiki>''​) //SSH// (on aurait pu mettre 22).
Ligne 74: Ligne 77:
 Maintenant vous pouvez vérifier vos règles iptables : Maintenant vous pouvez vérifier vos règles iptables :
 <​code>​ <​code>​
-iptables -L+sudo iptables -L
 Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT)
 target ​    prot opt source ​              ​destination ​       ​ target ​    prot opt source ​              ​destination ​       ​
Ligne 83: Ligne 86:
 Maintenant, acceptons tout le trafic web (''​www''​) entrant : Maintenant, acceptons tout le trafic web (''​www''​) entrant :
 <​code>​ <​code>​
-iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT+sudo iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
 </​code>​ </​code>​
  
 En regardant nos règles, nous avons : En regardant nos règles, nous avons :
 <​code>​ <​code>​
-iptables -L+sudo iptables -L
 Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT)
 target ​    prot opt source ​              ​destination ​       ​ target ​    prot opt source ​              ​destination ​       ​
Ligne 102: Ligne 105:
 Maintenant que nous avons fini avec les autorisations,​ il faut maintenant bloquer le reste. Maintenant que nous avons fini avec les autorisations,​ il faut maintenant bloquer le reste.
 Nous allons en fait modifier la « politique par défaut » (//​policy//​) de la chaîne //INPUT// : cette décision (//DROP//) s'​applique lorsque aucune règle n'a été appliquée à un paquet. Donc, si la tentative de connexion n'est permise par aucune des règles précédentes,​ elle sera rejetée. Nous allons en fait modifier la « politique par défaut » (//​policy//​) de la chaîne //INPUT// : cette décision (//DROP//) s'​applique lorsque aucune règle n'a été appliquée à un paquet. Donc, si la tentative de connexion n'est permise par aucune des règles précédentes,​ elle sera rejetée.
 +<note important>​warning : a ne pas utiliser sur un serveur distant !</​note>​
 <​code>​ <​code>​
-iptables -P INPUT DROP #warning : a ne pas utiliser sur un serveur distant ! +sudo iptables -P INPUT DROP #warning : a ne pas utiliser sur un serveur distant ! 
-iptables -L+sudo iptables -L
 Chain INPUT (policy DROP) Chain INPUT (policy DROP)
 target ​    prot opt source ​              ​destination ​       ​ target ​    prot opt source ​              ​destination ​       ​
Ligne 112: Ligne 115:
 ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​www ​ ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​www ​
 </​code>​ </​code>​
 +
 +== Autre méthode, par exemple pour les server ==
  
 **Un autre moyen de procéder** est l'​ajout en fin de chaîne d'une règle supprimant les paquets (les paquets autorisés par les règles précédentes n'​atteindraient pas celle-ci), //via// ''​iptables -A INPUT -j DROP'',​ mais il faudrait alors faire attention à la position des futures règles. **Un autre moyen de procéder** est l'​ajout en fin de chaîne d'une règle supprimant les paquets (les paquets autorisés par les règles précédentes n'​atteindraient pas celle-ci), //via// ''​iptables -A INPUT -j DROP'',​ mais il faudrait alors faire attention à la position des futures règles.
Ligne 121: Ligne 126:
  
 <​code>​ <​code>​
-iptables -I INPUT 2 -i lo -j ACCEPT+sudo iptables -I INPUT 2 -i lo -j ACCEPT
 </​code>​ </​code>​
  
 Pour lister les règles plus en détail. Pour lister les règles plus en détail.
 <​code>​ <​code>​
-iptables -L -v -n+sudo iptables -L -v -n
 </​code>​ </​code>​
  
Ligne 134: Ligne 139:
 <​code>​ <​code>​
 # On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes "​ping"​ # On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes "​ping"​
-iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT+sudo iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT
  
 # Si vous utilisez une ancienne version de iptables la commande ci-dessus peut ne pas fonctionner,​ dans ce cas entrez la commande suivante : # Si vous utilisez une ancienne version de iptables la commande ci-dessus peut ne pas fonctionner,​ dans ce cas entrez la commande suivante :
-iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT+sudo iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT
  
 # On autorise les pings  # On autorise les pings 
-iptables -A INPUT -p icmp -j ACCEPT+sudo iptables -A INPUT -p icmp -j ACCEPT
 </​code>​ </​code>​
  
Ligne 149: Ligne 154:
 Tout d'​abord vous listez l'​ensemble de vos règles avec l'​affichage des lignes : Tout d'​abord vous listez l'​ensemble de vos règles avec l'​affichage des lignes :
 <​code>​ <​code>​
-iptables -L --line-numbers+sudo iptables -L --line-numbers
 </​code>​ </​code>​
 Ce qui personnellement me retourne : Ce qui personnellement me retourne :
Ligne 174: Ligne 179:
  
 <​code>​ <​code>​
-iptables -D OUTPUT 2+sudo iptables -D OUTPUT 2
 </​code>​ </​code>​
  
Ligne 194: Ligne 199:
 iptables-persistent propose de sauvegarder les règles dans le dossier **/​etc/​iptables**,​ fichier **rules.v4** pour les règles IPv4 et **rules.v6** pour les règles IPv6. Le script peut s’appeler via : iptables-persistent propose de sauvegarder les règles dans le dossier **/​etc/​iptables**,​ fichier **rules.v4** pour les règles IPv4 et **rules.v6** pour les règles IPv6. Le script peut s’appeler via :
  
-  ​service ​iptables-persistent+  ​sudo iptables-save
  
 Il prend les arguments : **save** pour sauvegarder les règles, **flush** pour vider toutes les règles et **reload** pour les recharger depuis les fichiers précités. Il prend les arguments : **save** pour sauvegarder les règles, **flush** pour vider toutes les règles et **reload** pour les recharger depuis les fichiers précités.
Ligne 203: Ligne 208:
 </​note>​ </​note>​
  
-Commencez par éditer un fichier en root, que vous enregistrerez sous **/​etc/​network/​if-pre-up.d/​**.+Commencez par éditer un fichier en root, que vous enregistrerez sous **/​etc/​network/​if-pre-up.d/​**. ​
  
 La première ligne de ce fichier doit être : La première ligne de ce fichier doit être :
Ligne 211: Ligne 216:
 Cette ligne indique que le fichier doit être interprété par l'​exécutable /bin/bash (c'est donc un [[:​tutoriel:​script_shell|script bash]]). Cette ligne indique que le fichier doit être interprété par l'​exécutable /bin/bash (c'est donc un [[:​tutoriel:​script_shell|script bash]]).
  
-Ajoutez ensuite à votre script ceci :+Ajoutez ensuite à votre script ceci : 
  
   iptables-restore < /​etc/​iptables.test.rules   iptables-restore < /​etc/​iptables.test.rules
Ligne 356: Ligne 361:
   * [[http://​irp.nain-t.net/​doku.php |Bible française d'​introduction aux réseaux et à Internet]] ou [[ http://​stielec.ac-aix-marseille.fr/​electron/​cours.htm |ici]] (même auteur et contenu trés proche)   * [[http://​irp.nain-t.net/​doku.php |Bible française d'​introduction aux réseaux et à Internet]] ou [[ http://​stielec.ac-aix-marseille.fr/​electron/​cours.htm |ici]] (même auteur et contenu trés proche)
   * [[https://​memoire-grise-liberee.fr.eu.org|"​Mémoire Grise Libérée"​ : IpTables HowTo]]   * [[https://​memoire-grise-liberee.fr.eu.org|"​Mémoire Grise Libérée"​ : IpTables HowTo]]
-  * [[https://​www.inetdoc.net/​guides/​iptables-tutorial/​|iptables-tutorial de Oskar Andreasson traducteur Marc Blanc et publié par Philippe Latu]]+  * [[http://​www.inetdoc.net/​guides/​iptables-tutorial/​|iptables-tutorial de Oskar Andreasson traducteur Marc Blanc et publié par Philippe Latu]]
   * [[https://​www.it-connect.fr/​supprimer-une-regle-precise-dans-iptables/​|Supprimer une règle précise sous Iptables]] sur IT-Connect.fr   * [[https://​www.it-connect.fr/​supprimer-une-regle-precise-dans-iptables/​|Supprimer une règle précise sous Iptables]] sur IT-Connect.fr
   * [[https://​wiki.visionduweb.fr/​index.php?​title=Configurer_le_pare-feu_Iptables|Quelques notes avec des exemples ainsi que des liens valides vers des tutoriels pour utiliser Iptables]] depuis le wiki de Visionduweb.   * [[https://​wiki.visionduweb.fr/​index.php?​title=Configurer_le_pare-feu_Iptables|Quelques notes avec des exemples ainsi que des liens valides vers des tutoriels pour utiliser Iptables]] depuis le wiki de Visionduweb.
Ligne 362: Ligne 367:
  
   * Basé sur [[https://​wiki.ubuntu.com/​IptablesHowTo]]   * Basé sur [[https://​wiki.ubuntu.com/​IptablesHowTo]]
-  * Merci à Rusty Russell et son How-To, il est la base de cette page.+  * Merci à Rusty Russell et son How-To, il est la base de cette page. 
   * Et merci surtout pour son travail au sein de l'​équipe de développement de Netfilter. :-)   * Et merci surtout pour son travail au sein de l'​équipe de développement de Netfilter. :-)
  
  
 //​Contributeurs : [[utilisateurs:​Kmeleon]],​ [[utilisateurs:​eks]],​ [[utilisateurs:​BeAvEr]] (Création du script iptables et modification majeure de la documentation),​ [[utilisateurs:​maverick62]], ​ [[utilisateurs:​mydjey]] (mise à jour et refonte).// //​Contributeurs : [[utilisateurs:​Kmeleon]],​ [[utilisateurs:​eks]],​ [[utilisateurs:​BeAvEr]] (Création du script iptables et modification majeure de la documentation),​ [[utilisateurs:​maverick62]], ​ [[utilisateurs:​mydjey]] (mise à jour et refonte).//
- 
  • iptables.1662888638.txt.gz
  • Dernière modification: Le 11/09/2022, 11:30
  • par moths-art