Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| iptables [Le 19/07/2026, 14:20] – BeAvEr | iptables [Le 20/07/2026, 10:45] (Version actuelle) – niveau titre (h1) | pas de maj à iptables | liens wpfr | icône | mise en forme krodelabestiole | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| {{tag> | {{tag> | ||
| - | {{ / | ||
| - | ---- | ||
| - | =====Iptables===== | + | {{ : |
| + | ====== iptables ====== | ||
| FIXME: Depuis une Ubuntu 23.10, le package [[apt> | FIXME: Depuis une Ubuntu 23.10, le package [[apt> | ||
| Ligne 9: | Ligne 8: | ||
| ---- | ---- | ||
| - | Iptables | + | **[[wpfr> |
| - | Cette documentation est une introduction à Iptables, elle est destinée à ceux qui souhaitent mettre en place un [[: | + | Cette documentation est une introduction à **iptables**, elle est destinée à ceux qui souhaitent mettre en place un [[: |
| Les lecteurs désirant approfondir leur recherche et aborder l' | Les lecteurs désirant approfondir leur recherche et aborder l' | ||
| - | iptables existe aussi pour ipv6, pour cela il suffit d' | + | **iptables** existe aussi pour l'IPv6, pour cela il suffit d' |
| - | + | ||
| - | 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, | + | |
| + | Pour une bonne compréhension d' | ||
| ===== Configuration du pare-feu ===== | ===== Configuration du pare-feu ===== | ||
| Ligne 28: | Ligne 26: | ||
| Afin de ne pas avoir de problème au moment où on crée ces règles, nous allons d' | Afin de ne pas avoir de problème au moment où on crée ces règles, nous allons d' | ||
| - | En tapant « '' | + | En tapant « '' |
| < | < | ||
| Chain INPUT (policy ACCEPT) | Chain INPUT (policy ACCEPT) | ||
| Ligne 45: | Ligne 43: | ||
| Par défaut, « '' | Par défaut, « '' | ||
| - | <note warning> | + | <note warning> |
| Si vous avez déjà modifié la configuration et que vous voulez la réinitialiser, | Si vous avez déjà modifié la configuration et que vous voulez la réinitialiser, | ||
| Ligne 69: | Ligne 67: | ||
| === Permettre le trafic entrant sur un port spécifique === | === Permettre le trafic entrant sur un port spécifique === | ||
| - | 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. |
| < | < | ||
| sudo iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT | sudo iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT | ||
| Ligne 197: | Ligne 195: | ||
| Vous avez testé vos règles, ça marche au poil, alors il reste à les appliquer au démarrage. | Vous avez testé vos règles, ça marche au poil, alors il reste à les appliquer au démarrage. | ||
| - | iptables-persistent propose de sauvegarder les règles dans le dossier **/ | + | iptables-persistent propose de sauvegarder les règles dans le répertoire '' |
| sudo iptables-save | sudo iptables-save | ||
| - | Il prend les arguments : **save** pour sauvegarder les règles, | + | Il prend les arguments : '' |
| ==== Via un fichier ==== | ==== Via un fichier ==== | ||
| - | <note important> | + | <note important> |
| </ | </ | ||
| - | Commencez par éditer un fichier en root, que vous enregistrerez sous **/ | + | Commencez par éditer un fichier en root, que vous enregistrerez sous '' |
| La première ligne de ce fichier doit être : | La première ligne de ce fichier doit être : | ||
| Ligne 220: | Ligne 218: | ||
| iptables-restore < / | iptables-restore < / | ||
| - | Le reste du fichier doit contenir les commandes | + | Le reste du fichier doit contenir les commandes |
| Déplacez le script iptables dans / | Déplacez le script iptables dans / | ||
| Ligne 252: | Ligne 250: | ||
| Type=oneshot | Type=oneshot | ||
| RemainAfterExit=yes | RemainAfterExit=yes | ||
| - | ExecStart=/etc/init.d/nom_de_votre_script_iptables(modifier_le_nom!) | + | ExecStart=/usr/local/sbin/ |
| - | ExecStop=/etc/init.d/nom_de_votre_script_iptables(modifier_le_nom!) | + | ExecStop=/usr/local/sbin/ |
| [Install] | [Install] | ||
| Ligne 277: | Ligne 275: | ||
| #!/bin/bash | #!/bin/bash | ||
| - | iptables-restore < / | ||
| - | |||
| ## Script iptables by BeAvEr. | ## Script iptables by BeAvEr. | ||
| Ligne 284: | Ligne 280: | ||
| ## On flush iptables. | ## On flush iptables. | ||
| - | |||
| iptables -F | iptables -F | ||
| iptables -X | iptables -X | ||
| Ligne 292: | Ligne 287: | ||
| iptables -t mangle -X | 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). | + | ## On drop tout le trafic entrant. |
| + | iptables -P INPUT DROP | ||
| + | |||
| + | ## On drop tout le trafic sortant. | ||
| + | iptables -P OUTPUT DROP | ||
| + | |||
| + | ## On drop le forward. | ||
| + | iptables -P FORWARD DROP | ||
| + | ## 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 | iptables -A INPUT -p icmp --icmp-type echo-request -j DROP | ||
| Ligne 299: | Ligne 303: | ||
| # Nécessaire pour recevoir les erreurs liées à nos propres connexions | # Nécessaire pour recevoir les erreurs liées à nos propres connexions | ||
| # sortantes (ex: PMTUD - découverte du MTU du chemin), sans quoi les | # sortantes (ex: PMTUD - découverte du MTU du chemin), sans quoi les | ||
| - | # connexions TCP/UDP peuvent se bloquer silencieusement (ex: HTTPS/QUIC) | + | # connexions TCP/UDP peuvent se bloquer silencieusement (ex: HTTPS/QUIC). |
| iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT | iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT | ||
| Ligne 305: | Ligne 309: | ||
| # Utilisé notamment par traceroute et signalé quand un paquet expire | # Utilisé notamment par traceroute et signalé quand un paquet expire | ||
| # en transit (TTL=0) ; utile pour le diagnostic réseau et pour éviter | # en transit (TTL=0) ; utile pour le diagnostic réseau et pour éviter | ||
| - | # que des erreurs de routage légitimes soient bloquées | + | # que des erreurs de routage légitimes soient bloquées. |
| iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT | iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT | ||
| - | ## On accepte le Multicast. | + | ## On accepte le Multicast |
| iptables -A INPUT -m pkttype --pkt-type multicast -j ACCEPT | iptables -A INPUT -m pkttype --pkt-type multicast -j ACCEPT | ||
| - | ## On drop tout le trafic entrant. | + | ## DHCP client : indispensable pour obtenir/ |
| - | + | ## sudo ss -tulnpa |grep :68 | |
| - | iptables | + | ## -> udp |
| - | + | ## -> 192.168.1.254: | |
| - | ## On drop tout le trafic sortant. | + | iptables -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT |
| - | + | ||
| - | iptables -P OUTPUT DROP | + | |
| - | + | ||
| - | ## On drop le forward. | + | |
| - | + | ||
| - | iptables -P FORWARD DROP | + | |
| - | + | ||
| - | ## On drop les scans XMAS et NULL. | + | |
| - | iptables -A INPUT -m conntrack --ctstate | + | ## Rejette les paquets dans un état de connexion invalide (INVALID). |
| - | + | # Il s'agit généralement de paquets malformés, incohérents, hors contexte | |
| - | iptables -A INPUT -m conntrack | + | # ou ne correspondant à aucune connexion suivie par conntrack. Cette règle |
| - | + | # permet d' | |
| - | iptables -A INPUT -m conntrack --ctstate INVALID | + | iptables -A INPUT -m conntrack --ctstate INVALID -j DROP |
| - | + | ||
| - | iptables -A INPUT -m conntrack --ctstate INVALID -p tcp --tcp-flags SYN,RST SYN, | + | |
| ## Dropper silencieusement tous les paquets broadcastés. | ## Dropper silencieusement tous les paquets broadcastés. | ||
| - | |||
| iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP | iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP | ||
| | | ||
| ## 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 -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 conntrack ! --ctstate 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. | ||
| - | |||
| iptables -I INPUT -i lo -j ACCEPT | iptables -I INPUT -i lo -j ACCEPT | ||
| ## On log les paquets en entrée. | ## On log les paquets en entrée. | ||
| - | |||
| iptables -A INPUT -j LOG | iptables -A INPUT -j LOG | ||
| ## On log les paquets forward. | ## On log les paquets forward. | ||
| - | |||
| iptables -A FORWARD -j LOG | iptables -A FORWARD -j LOG | ||
| Ligne 362: | Ligne 349: | ||
| </ | </ | ||
| - | ===== Documentations supplémentaires | + | ===== Voir aussi ===== |
| + | |||
| + | ==== Documentations supplémentaires ==== | ||
| En anglais : | En anglais : | ||
| Ligne 376: | Ligne 365: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| - | ===== Sources | + | |
| + | ==== Sources ==== | ||
| * Basé sur [[https:// | * Basé sur [[https:// | ||
| - | * 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' | * Et merci surtout pour son travail au sein de l' | ||
| - | + | ---- | |
| - | // | + | //[[:Contributeurs]] : [[:utilisateurs: |
