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 27/04/2020, 10:42] – [Via un fichier] beaver 116.202.112.170 | iptables [Le 16/02/2025, 06:46] (Version actuelle) – [Configuration du pare-feu] 78.121.49.7 | ||
|---|---|---|---|
| Ligne 5: | Ligne 5: | ||
| =====Iptables===== | =====Iptables===== | ||
| + | FIXME: Depuis une Ubuntu 23.10, le package [[apt> | ||
| + | |||
| + | ---- | ||
| 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 [[: | 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 [[: | ||
| Ligne 10: | Ligne 13: | ||
| 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 ipv6, pour cela il suffit d' | ||
| 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 : | ||
| < | < | ||
| - | # iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT | + | sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT |
| </ | </ | ||
| + | Cette commande ajoute une règle ('' | ||
| <note warning> | <note warning> | ||
| Ligne 67: | 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. | ||
| < | < | ||
| - | # iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT | + | sudo iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT |
| </ | </ | ||
| Cette commande ajoute une règle ('' | Cette commande ajoute une règle ('' | ||
| Ligne 73: | Ligne 77: | ||
| Maintenant vous pouvez vérifier vos règles iptables : | Maintenant vous pouvez vérifier vos règles iptables : | ||
| < | < | ||
| - | # iptables -L | + | sudo iptables -L |
| Chain INPUT (policy ACCEPT) | Chain INPUT (policy ACCEPT) | ||
| target | target | ||
| Ligne 82: | Ligne 86: | ||
| Maintenant, acceptons tout le trafic web ('' | Maintenant, acceptons tout le trafic web ('' | ||
| < | < | ||
| - | # iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT | + | sudo iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT |
| </ | </ | ||
| En regardant nos règles, nous avons : | En regardant nos règles, nous avons : | ||
| < | < | ||
| - | # iptables -L | + | sudo iptables -L |
| Chain INPUT (policy ACCEPT) | Chain INPUT (policy ACCEPT) | ||
| target | target | ||
| Ligne 101: | Ligne 105: | ||
| Maintenant que nous avons fini avec les autorisations, | Maintenant que nous avons fini avec les autorisations, | ||
| Nous allons en fait modifier la « politique par défaut » (// | Nous allons en fait modifier la « politique par défaut » (// | ||
| + | <note important> | ||
| < | < | ||
| - | # 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 | target | ||
| Ligne 111: | Ligne 115: | ||
| ACCEPT | ACCEPT | ||
| </ | </ | ||
| + | |||
| + | == Autre méthode, par exemple pour les server == | ||
| **Un autre moyen de procéder** est l' | **Un autre moyen de procéder** est l' | ||
| Ligne 116: | Ligne 122: | ||
| === Autoriser le trafic local === | === Autoriser le trafic local === | ||
| - | Un p' | + | Un petit problème de notre configuration est que même l' |
| Nous pourrions avoir écrit les règles de rejet seulement pour //eth0// en spécifiant '' | Nous pourrions avoir écrit les règles de rejet seulement pour //eth0// en spécifiant '' | ||
| < | < | ||
| - | # iptables -I INPUT 2 -i lo -j ACCEPT | + | sudo iptables -I INPUT 2 -i lo -j ACCEPT |
| </ | </ | ||
| Pour lister les règles plus en détail. | Pour lister les règles plus en détail. | ||
| < | < | ||
| - | # iptables -L -v -n | + | sudo iptables -L -v -n |
| </ | </ | ||
| Ligne 133: | Ligne 139: | ||
| < | < | ||
| # On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes " | # On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes " | ||
| - | iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW, | + | sudo iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW, |
| # Si vous utilisez une ancienne version de iptables la commande ci-dessus peut ne pas fonctionner, | # Si vous utilisez une ancienne version de iptables la commande ci-dessus peut ne pas fonctionner, | ||
| - | iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW, | + | sudo iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW, |
| # On autorise les pings | # On autorise les pings | ||
| - | iptables -A INPUT -p icmp -j ACCEPT | + | sudo iptables -A INPUT -p icmp -j ACCEPT |
| </ | </ | ||
| Ligne 148: | Ligne 154: | ||
| Tout d' | Tout d' | ||
| < | < | ||
| - | iptables -L --line-numbers | + | sudo iptables -L --line-numbers |
| </ | </ | ||
| Ce qui personnellement me retourne : | Ce qui personnellement me retourne : | ||
| Ligne 173: | Ligne 179: | ||
| < | < | ||
| - | iptables -D OUTPUT 2 | + | sudo iptables -D OUTPUT 2 |
| </ | </ | ||
| Ligne 193: | Ligne 199: | ||
| iptables-persistent propose de sauvegarder les règles dans le dossier **/ | iptables-persistent propose de sauvegarder les règles dans le dossier **/ | ||
| - | | + | |
| 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 199: | Ligne 205: | ||
| ==== Via un fichier ==== | ==== Via un fichier ==== | ||
| - | <note important> | + | <note important> |
| </ | </ | ||
| Ligne 208: | Ligne 214: | ||
| #!/bin/bash | #!/bin/bash | ||
| - | Cette ligne indique que le fichier doit être enregistré en tant que [[: | + | Cette ligne indique que le fichier doit être interprété par l' |
| Ajoutez ensuite à votre script ceci : | Ajoutez ensuite à votre script ceci : | ||
| Ligne 229: | Ligne 235: | ||
| | | ||
| === Lancer votre script iptables au démarrage via Systemd === | === Lancer votre script iptables au démarrage via Systemd === | ||
| - | |||
| - | <note important> | ||
| Pour lancer votre script iptables au démarrage de votre Ubuntu, merci d' | Pour lancer votre script iptables au démarrage de votre Ubuntu, merci d' | ||
| Ligne 236: | Ligne 240: | ||
| <code bash> | <code bash> | ||
| - | Merci d'éditer le fichier se trouvant dans **/ | + | Veuillez |
| <file bash> | <file bash> | ||
| Ligne 263: | Ligne 267: | ||
| Pour vérifier le statut de votre service **firewall.service**, | Pour vérifier le statut de votre service **firewall.service**, | ||
| - | <code bash>sudo systemctl status firewall</ | + | <code bash> |
| ===== Script iptables ===== | ===== Script iptables ===== | ||
| Ligne 269: | Ligne 273: | ||
| < | < | ||
| - | <file bash iptables> | + | <code bash iptables> |
| #!/bin/bash | #!/bin/bash | ||
| Ligne 291: | Ligne 295: | ||
| 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=$(/ | ||
| - | |||
| - | ## 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/ | ||
| - | |||
| - | iptables -A INPUT -p udp -m udp --source $ip/ | ||
| ## On accepte le Multicast. | ## On accepte le Multicast. | ||
| Ligne 325: | Ligne 314: | ||
| ## 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 |
| - | iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP | + | iptables -A INPUT -m conntrack --ctstate INVALID |
| - | iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP | + | iptables -A INPUT -m conntrack --ctstate INVALID |
| - | iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP | + | iptables -A INPUT -m conntrack --ctstate INVALID |
| ## Dropper silencieusement tous les paquets broadcastés. | ## Dropper silencieusement tous les paquets broadcastés. | ||
| Ligne 339: | Ligne 328: | ||
| ## 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, | + | 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 359: | Ligne 348: | ||
| exit 0 | exit 0 | ||
| - | </file> | + | </code> |
| ===== Documentations supplémentaires ===== | ===== Documentations supplémentaires ===== | ||
| En anglais : | En anglais : | ||
| - | * [[http:// | + | * [[https:// |
| - | * [[http:// | + | * [[https:// |
| - | * [[http:// | + | * [[https:// |
| En Français : | En Français : | ||
| Ligne 373: | Ligne 362: | ||
| * [[https:// | * [[https:// | ||
| * [[http:// | * [[http:// | ||
| - | * [[http:// | + | * [[https:// |
| * [[https:// | * [[https:// | ||
| ===== Sources ===== | ===== Sources ===== | ||
| Ligne 383: | Ligne 372: | ||
| // | // | ||
| - | |||
