Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
iptables [Le 14/09/2023, 21:42] 185.220.101.23 |
iptables [Le 16/02/2025, 06:46] (Version actuelle) 78.121.49.7 [Configuration du pare-feu] |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | |||
| {{tag>pare-feu sécurité réseau}} | {{tag>pare-feu sécurité réseau}} | ||
| {{ /iptables.jpg?340nolink| Iptables}} | {{ /iptables.jpg?340nolink| Iptables}} | ||
| Ligne 58: | 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 72: | 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 78: | 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 87: | 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 106: | 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 116: | 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 125: | 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 138: | 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 153: | 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 178: | Ligne 179: | ||
| <code> | <code> | ||
| - | iptables -D OUTPUT 2 | + | sudo iptables -D OUTPUT 2 |
| </code> | </code> | ||
| Ligne 198: | 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 371: | Ligne 372: | ||
| //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).// | ||
| - | |||