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 06/11/2019, 17:24]
78.224.136.31
iptables [Le 16/09/2023, 20:30] (Version actuelle)
162.247.74.206 16/09/23 20:27:36 < beaver> beaver@rpi3b:~$ dos2unix iptables-bbcode.txt 16/09/23 20:27:36 < beaver> dos2unix: conversion du fichier iptables-bbcode.txt au format Unix… (problème d'encodage résolu) # beaver
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 10: Ligne 13:
 Cette documentation est une introduction à Iptables, elle est destinée à ceux qui souhaitent mettre en place un [[:​pare-feu]] et/ou un partage de connexion, sur une machine Linux, sans passer par une interface graphique. Seule la table par défaut (Filter) d'​Iptables est présentée ici et seules les chaînes utilisées par Filter (Input, Forward et Output) y sont exposées. Cette documentation est une introduction à Iptables, elle est destinée à ceux qui souhaitent mettre en place un [[:​pare-feu]] et/ou un partage de connexion, sur une machine Linux, sans passer par une interface graphique. Seule la table par défaut (Filter) d'​Iptables est présentée ici et seules les chaînes utilisées par Filter (Input, Forward et Output) y sont exposées.
  
-Les lecteurs désirant approfondir leur recherche et aborder l'​utilisation des autres tables (Nat, Mangle, Row et Security) ainsi que des chaînes non utilisables par Filter (Prerouting et Postrouting) se tourneront vers les nombreuses documentations disponibles sur l'​Internet ​(voir notamment ici). Ceux désirant configurer un [[:​pare-feu]] par l'​intermédiaire d'une interface graphique se tourneront vers Gufw ou encore vers Shorewall pour une utilisation sur serveur.+Les lecteurs désirant approfondir leur recherche et aborder l'​utilisation des autres tables (Nat, Mangle, Row et Security) ainsi que des chaînes non utilisables par Filter (Prerouting et Postrouting) se tourneront vers les nombreuses documentations disponibles sur l'​Internet. Ceux désirant configurer un [[:​pare-feu]] par l'​intermédiaire d'une interface graphique se tourneront vers Gufw ou encore vers Shorewall pour une utilisation sur serveur.
  
 iptables existe aussi pour ipv6, pour cela il suffit d'​utiliser la commande ip6tables au lieu de iptables. iptables existe aussi pour ipv6, pour cela il suffit d'​utiliser la commande ip6tables au lieu de iptables.
Ligne 56: Ligne 59:
 # iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT # 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''​).
  
 <note warning> <note warning>
Ligne 116: Ligne 120:
 === Autoriser le trafic local === === Autoriser le trafic local ===
  
-Un p'​tit ​problème de notre configuration est que même l'​interface locale //​(loopback)//​ est bloquée.+Un petit problème de notre configuration est que même l'​interface locale //​(loopback)//​ est bloquée.
 Nous pourrions avoir écrit les règles de rejet seulement pour //eth0// en spécifiant ''​-i eth0'',​ mais nous pouvons aussi ajouter une règle pour //​loopback//​. Par exemple, nous pourrions l'​insérer en 2e position : Nous pourrions avoir écrit les règles de rejet seulement pour //eth0// en spécifiant ''​-i eth0'',​ mais nous pouvons aussi ajouter une règle pour //​loopback//​. Par exemple, nous pourrions l'​insérer en 2e position :
  
Ligne 198: Ligne 202:
  
 ==== Via un fichier ==== ==== Via un fichier ====
 +
 +<note important>​Depuis l'​utilisation du daemon **systemd-networkd**,​ il n'est plus possible de lancer votre script iptables via l'​emplacement **/​etc/​network/​if-pre-up.d/​** de votre Ubuntu. Pour vérifier si vous êtes concerné par cette note, veuillez ouvrir un [[:​terminal]],​ avec pour contenu **pidof systemd-networkd**,​ si vous avez un retour, merci de vous référer au chapitre **3.2.1**.
 +</​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/​**. ​
Ligne 205: Ligne 212:
   #!/bin/bash   #!/bin/bash
  
-Cette ligne indique que le fichier doit être enregistré en tant que [[:​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 : 
Ligne 224: Ligne 231:
  
   sudo iptables -L   sudo iptables -L
 +  ​
 +=== Lancer votre script iptables au démarrage via Systemd ===
 +
 +Pour lancer votre script iptables au démarrage de votre Ubuntu, merci d'​ouvrir un [[:​terminal]],​ avec pour contenu :
 +
 +<code bash>​sudo touch /​lib/​systemd/​system/​firewall.service</​code>​
 +
 +Veuillez éditer ensuite le fichier se trouvant dans **/​lib/​systemd/​system/​firewall.service**,​ avec votre [[:éditeur de texte]] favoris, et y coller :
 +
 +<file bash>
 +[Unit]
 +Description=Firewall
 +Requires=network-online.target
 +After=network-online.target
 +
 +[Service]
 +User=root
 +Type=oneshot
 +RemainAfterExit=yes
 +ExecStart=/​etc/​init.d/​nom_de_votre_script_iptables(modifier_le_nom!) start
 +ExecStop=/​etc/​init.d/​nom_de_votre_script_iptables(modifier_le_nom!) stop
 +
 +[Install]
 +WantedBy=multi-user.target
 +</​file>​
 +
 +Il ne vous reste plus qu'à activer le service **firewall.service**,​ au démarrage de votre Ubuntu, via la commande :
 +
 +<code bash>​sudo systemctl enable firewall.service</​code>​
 +
 +Au prochain redémarrage de votre Ubuntu, votre service **firewall.service** chargera votre script iptables se trouvant dans **/​etc/​init.d/​**.
 +
 +Pour vérifier le statut de votre service **firewall.service**,​ veuillez saisir dans un [[:​terminal]] :
 +
 +<code bash>​systemctl status firewall</​code>​
  
 ===== Script iptables ===== ===== Script iptables =====
Ligne 229: Ligne 271:
 <​note>​Ce script est un exemple, il est à adapter à vos besoins. Il peut toutefois être utilisé pour une utilisation courante, il offre une plutôt bonne "​protection"​ pour un usage desktop.</​note>​ <​note>​Ce script est un exemple, il est à adapter à vos besoins. Il peut toutefois être utilisé pour une utilisation courante, il offre une plutôt bonne "​protection"​ pour un usage desktop.</​note>​
  
-<file bash iptables>​+<code bash iptables>​
  
 #!/bin/bash #!/bin/bash
Ligne 251: Ligne 293:
  
 iptables -A INPUT -p icmp --icmp-type echo-request -j DROP iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
-iptables -A OUTPUT -p icmp --icmp-type echo-reply -j DROP 
- 
-## On récupère notre adresse internet. À utiliser seulement si vous êtes derrière un réseau local. 
- 
-export ip=$(/​sbin/​ip addr | grep 'state UP' -A2 | tail -n1 | awk '​{print $2}' | cut -f1  -d'/'​) 
- 
-## Allow Samba. 
- 
-iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns 
- 
-## Allow Avahi-daemon (seulement notre LAN. Si vous n'avez pas de LAN, supprimer la partie --source $ip/24). 
- 
-iptables -A INPUT -p udp -m udp --source $ip/​24 ​ --dport 5353 -j ACCEPT 
- 
-iptables -A INPUT -p udp -m udp --source $ip/​24 ​ --dport 427 -j ACCEPT 
  
 ## On accepte le Multicast. ## On accepte le Multicast.
Ligne 285: Ligne 312:
 ## On drop les scans XMAS et NULL. ## On drop les scans XMAS et NULL.
    
-iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP+iptables -A INPUT -m conntrack --ctstate INVALID ​-p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
  
-iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP+iptables -A INPUT -m conntrack --ctstate INVALID ​-p tcp --tcp-flags ALL ALL -j DROP
    
-iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP+iptables -A INPUT -m conntrack --ctstate INVALID ​-p tcp --tcp-flags ALL NONE -j DROP
    
-iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP+iptables -A INPUT -m conntrack --ctstate INVALID ​-p tcp --tcp-flags SYN,RST SYN,RST -j DROP
  
 ## Dropper silencieusement tous les paquets broadcastés. ## Dropper silencieusement tous les paquets broadcastés.
Ligne 299: Ligne 326:
 ## Permettre à une connexion ouverte de recevoir du trafic en entrée. ## Permettre à une connexion ouverte de recevoir du trafic en entrée.
    
-iptables -A INPUT -m conntrack --ctstate ESTABLISHED,​RELATED ​-j ACCEPT+iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
    
 ## Permettre à une connexion ouverte de recevoir du trafic en sortie. ## Permettre à une connexion ouverte de recevoir du trafic en sortie.
Ligne 319: Ligne 346:
 exit 0 exit 0
  
-</file+</code
  
 ===== Documentations supplémentaires ===== ===== Documentations supplémentaires =====
  
 En anglais : En anglais :
- +  ​* [[https://​www.netfilter.org/​documentation/​HOWTO/​packet-filtering-HOWTO.html| How To Iptables]] 
-  * <​del>​[[http://​www.fwbuilder.org/​|Firewall Builder : Un outil très performant pour configurer iptables (entre autres)]] ​ FIXME</​del>​  +  * [[https://​www.netfilter.org/​documentation/​|Documentation Multilingue de Netfilter et Iptables]] 
-  ​* [[http://​www.netfilter.org/​documentation/​HOWTO/​packet-filtering-HOWTO.html| How To Iptables]] +  * [[https://​people.netfilter.org/​rusty/​unreliable-guides/​| Rusty'​s Remarkably Unreliable Guides]]
-  * [[http://​www.netfilter.org/​documentation/​|Documentation Multilingue de Netfilter et Iptables]] +
-  * [[http://​people.netfilter.org/​rusty/​unreliable-guides/​| Rusty'​s Remarkably Unreliable Guides]] +
  
 En Français : En Français :
- 
-  * <​del>​[[http://​www.admin-debian.com/​securite/​iptables-et-netfilter/​|Présentation des différentes tables et chaînes d'​Iptables]] ​ FIXME</​del>​ 
   * [[http://​olivieraj.free.fr/​fr/​linux/​information/​firewall/​ |Bible française pour apprendre les bases de la sécurité et d'​Iptables sous Linux]]   * [[http://​olivieraj.free.fr/​fr/​linux/​information/​firewall/​ |Bible française pour apprendre les bases de la sécurité et d'​Iptables sous Linux]]
   * [[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)
-  * <​del>​[[http://​formation-debian.via.ecp.fr/​firewall.html | Tutoriel de Alexis Delatre (avec fichier iptables tout fait)]] ​ FIXME</​del>​ 
   * [[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]]
   * [[http://​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]]
-  * [[http://​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.
 ===== Sources ===== ===== Sources =====
Ligne 349: Ligne 370:
  
 //​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.1573057459.txt.gz
  • Dernière modification: Le 06/11/2019, 17:24
  • par 78.224.136.31