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 04/08/2014, 13:54]
94.23.168.216 [Script iptables] Modification du script Iptables : BeAvEr
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 1: Ligne 1:
 {{tag>​pare-feu sécurité réseau}} {{tag>​pare-feu sécurité réseau}}
 +{{ /​iptables.jpg?​340nolink| Iptables}}
 ---- ----
-====== Iptables ====== 
  
 +=====Iptables=====
  
-**Iptables** est une interface en ligne de commande permettant de configurer Netfilter((Netfilter est un module du noyau Linux qui offre la possibilité de contrôlermodifier et filtrer les paquets IPet de suivre les connexionsIl fournit ainsi les fonctions de pare-feu, de partage de connexions internet et d'​autorisation du trafic réseau. +FIXME: Depuis ​une Ubuntu 23.10le package [[apt>​iptables]] semble être maintenuvoir : https://​changelogs.ubuntu.com/​changelogs/​pool/​main/​i/​iptables/​iptables_1.8.9-2ubuntu2/​changelog -- [[utilisateurs:​BeAvEr]], en date du : ✨✨ **////​__(14/​09/​2023)__** ✨✨
-))En plus de Iptables, depuis la version ​8.04, Ubuntu est installé avec la surcouche ​[[UFW]] qui permet de contrôler simplement NetfilterUFW est toutefois moins complet que iptables.+
  
-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é 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 [[#​Documentations supplémentaires|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. +
- +
-iptables existe aussi pour ipv6, pour cela il suffit d'​utiliser la commande //​ip6tables//​ au lieu de //​iptables//​. +
- +
-Pour une bonne compréhension d'​Iptables (et des pare-feux en général) il est conseillé d'​avoir des notions en réseaux informatiques,​ au minima connaître le principe de fonctionnement des protocoles TCP et UDP.  +
- +
-===== La table filter =====+
  
-Iptables ​fonctionne selon un système ​de tables, ces tables sont composées ​de chaîne. +Iptables ​est une interface en ligne de commande permettant ​de configurer NetfilterEn plus de Iptables, depuis ​la version 8.04Ubuntu ​est installé avec la surcouche [[:​ufw|UFW]] ​qui permet de contrôler simplement Netfilter, [[:​ufw|UFW]] ​est toutefois moins complet que iptables.
-Dans le cadre de la configuration et de l'​utilisation de Netfilter comme pare-feuc'est la table **Filter** ​qui est utile, elle permet de filtrer les paquets réseaux. Tout paquet entrant ​est analysé afin de déterminer notamment sa source et sa destination.+
  
-Elle est composée de trois sortes de **chaîne** ​:+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.
  
-  * **INPUT** : Permet d'analyser ​les paquets entrantsSi le paquet est adressé au poste, il est confronté au filtre INPUT.+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'​InternetCeux 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.
  
-  * **FORWARD** : Permet d'​analyser et d'​autoriser les trames à passer d'une interface à une autreseulement dans le cadre d'une interface réseau servant ​de passerelle.+iptables existe aussi pour ipv6pour cela il suffit ​d'utiliser la commande ip6tables au lieu de iptables.
  
-  * **OUTPUT** : Permet ​d'analyser les paquets sortants. Si le paquet sort du poste, ​il passera par la chaîne OUTPUT.+Pour une bonne compréhension ​d'Iptables (et des pare-feux en général) ​il est conseillé d'​avoir des notions en réseaux informatiques,​ au minima connaître le principe de fonctionnement des protocoles TCP et UDP.
  
-À cette table, peuvent être affectées des politiques (policy) :  **DROP**, ​ **LOG**, ​ **ACCEPT** , **SNAT**, **DNAT**et **REJECT**. 
  
 ===== Configuration du pare-feu ===== ===== Configuration du pare-feu =====
  
-Nous allons configurer notre pare-feu de la manière suivante :+Nous allons configurer notre [[:pare-feu]] de la manière suivante :
   * On bloque tout le trafic entrant par défaut.   * On bloque tout le trafic entrant par défaut.
   * On autorise au cas par cas : le trafic appartenant ou lié à des connexions déjà établies et le trafic à destination des serveurs (web, ssh, etc.) que nous souhaitons mettre à disposition.   * On autorise au cas par cas : le trafic appartenant ou lié à des connexions déjà établies et le trafic à destination des serveurs (web, ssh, etc.) que nous souhaitons mettre à disposition.
Ligne 39: Ligne 28:
 Afin de ne pas avoir de problème au moment où on crée ces règles, nous allons d'​abord créer les autorisations,​ puis nous enverrons le reste en enfer. Afin de ne pas avoir de problème au moment où on crée ces règles, nous allons d'​abord créer les autorisations,​ puis nous enverrons le reste en enfer.
  
-En tapant « ''​sudo iptables -L''​ », une liste de vos règles actuelles est affichée. Si vous (ou un logiciel) n'avez encore jamais touché à //​iptables//,​ les chaines ​sont vides, et vous devriez voir :+En tapant « ''​sudo iptables -L''​ », une liste de vos règles actuelles est affichée. Si vous (ou un logiciel) n'avez encore jamais touché à //​iptables//,​ les chaînes ​sont vides, et vous devriez voir :
 <​code>​ <​code>​
 Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT)
Ligne 54: Ligne 43:
 Pour cette configuration basique, seul le trafic entrant (chaine //input//) nous intéresse. Pour cette configuration basique, seul le trafic entrant (chaine //input//) nous intéresse.
  
-Par défaut, « ''​sudo iptables -L''​ » n'​affiche que la table "​filter"​. Pour consulter les autres tables, vous devez ajouter l'​option -t suivie de "​nat",​ "​mangle"​ ou "​raw"​. Pour la configuration d'un pare-feu la table "​filter"​ est toutefois la seule nécessaire.+Par défaut, « ''​sudo iptables -L''​ » n'​affiche que la table "​filter"​. Pour consulter les autres tables, vous devez ajouter l'​option -t suivie de "​nat",​ "​mangle"​ ou "​raw"​. Pour la configuration d'​un ​[[:pare-feu]] la table "​filter"​ est toutefois la seule nécessaire.
  
 <note warning>​ATTENTION,​ si vous avez modifié la règle par défaut pour le blocage (iptables -P INPUT DROP  voir plus bas) et que vous tapez iptables -F vous bloquerez tous les accès ... y compris celui en cours. Ceci est particulièrement problématique ​ sur  une machine sur laquelle vous accédez à distance (serveur etc.).</​note>​ <note warning>​ATTENTION,​ si vous avez modifié la règle par défaut pour le blocage (iptables -P INPUT DROP  voir plus bas) et que vous tapez iptables -F vous bloquerez tous les accès ... y compris celui en cours. Ceci est particulièrement problématique ​ sur  une machine sur laquelle vous accédez à distance (serveur etc.).</​note>​
Ligne 70: Ligne 59:
 # iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT # iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
 </​code>​ </​code>​
-Si vous utilisez ​une ancienne version de iptables ​la commande ci-dessus peut ne pas fonctionnerdans ce cas utilisez celle-ci : +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''​). 
-<code+ 
-# iptables ​-A INPUT -state --state ESTABLISHED -j ACCEPT +<note warning
-</code>+Une ancienne configuration avec l'​état "--state ​RELATED"​ est toujours sur internet, or cette option peut permettre l'​ouverture de port non désirée sur votre machine par un attaquant. L'​option "​RELATED"​ est à utiliser avec prudence. Pour plus d'​information : 
 +https://​gist.github.com/​azlux/​6a70bd38bb7c525ab26efe7e3a7ea8ac 
 +</note> 
  
 === Permettre le trafic entrant sur un port spécifique === === Permettre le trafic entrant sur un port spécifique ===
Ligne 81: Ligne 73:
 # iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT # iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT
 </​code>​ </​code>​
-Cette commande ajoute une règle (''​-A''​) à la chaine ​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).
  
 Maintenant vous pouvez vérifier vos règles iptables : Maintenant vous pouvez vérifier vos règles iptables :
Ligne 88: Ligne 80:
 Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT)
 target ​    prot opt source ​              ​destination ​       ​ target ​    prot opt source ​              ​destination ​       ​
-ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​           ​state RELATED,ESTABLISHED ​ +ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​           ​ctstate ​ESTABLISHED
 ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​ssh ​ ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​ssh ​
 </​code>​ </​code>​
Ligne 102: Ligne 94:
 Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT)
 target ​    prot opt source ​              ​destination ​       ​ target ​    prot opt source ​              ​destination ​       ​
-ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​           ​state RELATED,ESTABLISHED ​ +ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​           ​ctstate ​ESTABLISHED
 ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​ssh ​ ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​ssh ​
 ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​www ​ ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​www ​
Ligne 112: Ligne 104:
  
 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 chaine ​//INPUT// : cette décision (//DROP//) s'​applique ​lorsqu'​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.
  
 <​code>​ <​code>​
Ligne 119: Ligne 111:
 Chain INPUT (policy DROP) Chain INPUT (policy DROP)
 target ​    prot opt source ​              ​destination ​       ​ target ​    prot opt source ​              ​destination ​       ​
-ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​           ​state RELATED,ESTABLISHED ​ +ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​           ​ctstate ​ESTABLISHED
 ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​ssh ​ ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​ssh ​
 ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​www ​ ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​www ​
 </​code>​ </​code>​
  
-**Un autre moyen de procéder** est l'​ajout en fin de chaine ​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.
  
 === 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 148: Ligne 140:
  
 # 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 state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT+iptables -A OUTPUT -p icmp -m conntrack ​--ctstate ​NEW,​ESTABLISHED,​RELATED -j ACCEPT
  
 # On autorise les pings  # On autorise les pings 
Ligne 158: Ligne 150:
 Si vous vous êtes trompé dans la création d'une règle et que cela vous bloque une connexion, vous pouvez supprimer une seule entrée plutôt que de tout réinitialiser. Si vous vous êtes trompé dans la création d'une règle et que cela vous bloque une connexion, vous pouvez supprimer une seule entrée plutôt que de tout réinitialiser.
  
-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 iptables -L --line-numbers
Ligne 182: Ligne 174:
 Je souhaite supprimer la ligne 2 de la chaîne OUTPUT Je souhaite supprimer la ligne 2 de la chaîne OUTPUT
  
-Syntaxe : iptables -D chaine ​numéro_de_ligne+Syntaxe : iptables -D chaîne ​numéro_de_ligne
  
 <​code>​ <​code>​
Ligne 199: Ligne 191:
 ===== Appliquer les règles au démarrage ===== ===== Appliquer les règles au démarrage =====
  
-Vous avez testé vos règles, ça marche au poil, alors il reste à les appliquer au démarrage.+==== Via iptables-persistent ====
  
 +Vous avez testé vos règles, ça marche au poil, alors il reste à les appliquer au démarrage.
  
-* Depuis au moins Ubuntu 12.04, le paquet **iptables-persistent** gère les règles au démarrage. Il 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   service iptables-persistent
Ligne 208: Ligne 201:
 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.
  
-* Si vous avez une distribution plus ancienne.+==== Via un fichier ====
  
-Commencez par éditer un fichier en root, que vous enregistrerez sous **/etc/init.d/monIptables** (variable selon la distribution utilisée). La première ligne de ce fichier doit être :+<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/​**. ​ 
 + 
 +La première ligne de ce fichier doit être :
  
   #!/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 :  
 + 
 +  iptables-restore < /​etc/​iptables.test.rules
  
 Le reste du fichier doit contenir les commandes //​iptables//​ que vous avez générées. Le reste du fichier doit contenir les commandes //​iptables//​ que vous avez générées.
  
-Déplacez le script iptables dans /etc/init.d+Déplacez le script iptables dans /etc/network/​if-pre-up.d/ :
  
-  sudo mv /​emplacement/​du/​script/​iptables /etc/init.d+  sudo mv /​emplacement/​du/​script/​iptables /etc/network/​if-pre-up.d/
  
 Rendez ce script exécutable : Rendez ce script exécutable :
  
-  sudo chmod +x /etc/init.d/monIptables+  sudo chmod +x /etc/network/​if-pre-up.d/iptables
  
-Pour indiquer à votre ordinateur de l'​utiliser au démarrage:​ +Cela devrait être bon. Au prochain redémarrage,​ vous pouvez vérifier que vos règles sont bien utilisées, en effectuant :
-  sudo update-rc.d monIptables defaults +
- +
-Ça devrait être bon. Au prochain redémarrage,​ vous pouvez vérifier que vos règles sont bien utilisées, en effectuant :+
  
   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 =====
  
-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"​.+<​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
 +
 +iptables-restore < /​etc/​iptables.test.rules
    
 ## Script iptables by BeAvEr. ## Script iptables by BeAvEr.
Ligne 246: Ligne 282:
    
 ## On flush iptables. ## On flush iptables.
- +
 iptables -F iptables -F
-  
-## On supprime toutes les chaînes utilisateurs. 
-  
 iptables -X iptables -X
- +iptables -t nat -F 
 +iptables -t nat -X 
 +iptables -t mangle -F 
 +iptables -t mangle -X 
 + 
 +## On drop les requêtes ICMP (votre machine ne répondra plus aux requêtes ping sur votre réseau local). 
 + 
 +iptables -A INPUT -p icmp --icmp-type echo-request -j DROP 
 + 
 +## On accepte le Multicast. 
 + 
 +iptables -A INPUT -m pkttype --pkt-type multicast -j ACCEPT 
 ## On drop tout le trafic entrant. ## On drop tout le trafic entrant.
    
Ligne 267: 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 281: 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 state --state 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.
    
-iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT+iptables -A OUTPUT -m conntrack ​! --ctstate ​INVALID -j ACCEPT
    
 ## On accepte la boucle locale en entrée. ## On accepte la boucle locale en entrée.
Ligne 301: 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]] 
-  * [[http://​www.fwbuilder.org/​|Firewall Builder : Un outil très performant pour configurer iptables (entre autres)]] +  * [[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 :
- 
-  * [[http://​www.admin-debian.com/​securite/​iptables-et-netfilter/​|Présentation des différentes tables et chaînes d'​Iptables]] 
   * [[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)
-  * [[http://​formation-debian.via.ecp.fr/​firewall.html | Tutoriel de Alexis Delatre (avec fichier iptables tout fait)]] +  * [[https://​memoire-grise-liberee.fr.eu.org|"​Mémoire Grise Libérée"​ : IpTables HowTo]]
-  * [[http://​memoire-grise-liberee.fr.eu.org/IpTables/|"​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.
 ===== Sources ===== ===== Sources =====
  
Ligne 330: Ligne 369:
  
  
-//​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.1407153250.txt.gz
  • Dernière modification: Le 04/08/2014, 13:54
  • par 94.23.168.216