Linux est livré avec un pare-feu basé sur l'hôte appelé Netfilter. Le Netfilter est un ensemble de crochets à l'intérieur du noyau Linux qui permet aux modules du noyau d'enregistrer des fonctions de rappel avec la pile réseau. Une fonction de rappel enregistrée est ensuite rappelée pour chaque paquet qui traverse le crochet correspondant dans la pile réseau. Ce pare-feu basé sur Linux est contrôlé par le programme appelé iptables qui gère le filtrage pour IPv4, et ip6tables qui gère le filtrage pour IPv6. Je vous recommande vivement de lire d'abord notre tutoriel rapide qui explique comment configurer un pare-feu basé sur l'hôte appelé Netfilter (iptables) sous CentOS / RHEL / Fedora / Redhat Enterprise Linux. Si vous utilisez Ubuntu/Debian Linux, voir comment configurer UFW pour plus d'informations. Ce post liste les solutions iptables les plus simples dont un nouvel utilisateur de Linux a besoin pour sécuriser son système d'exploitation Linux contre les intrus.
Ce guide présente la commande iptables essentielle pour contrôler les règles de pare-feu de votre vie quotidienne et la sécurité du serveur Linux fonctionnant sur le serveur bare metal, le routeur ou le serveur cloud.
Niveau de difficulté | Intermédiaire |
Privilèges de la racine | Oui |
Exigences | Terminal Linux |
Catégorie | Pare-feu |
Compatibilité avec les systèmes d'exploitation | Alma-Alpine-Arch-Debian-Fedora-Linux- Mint -openSUSE- Pop!_OS -RHEL- Rocky -Stream-SUSE-Ubuntu |
Temps de lecture estimé | 16 minutes |
Linux Iptables Netfilter Firewall Exemples pour les nouveaux SysAdmins
- La plupart des actions énumérées dans ce billet sont écrites en supposant qu'elles seront exécutées par l'utilisateur root qui exécute le shell bash ou tout autre shell moderne. Ne tapez pas de commandes sur le système distant car cela déconnecterait votre accès.
- Pour les besoins de la démonstration, j'ai utilisé RHEL 6.x, mais la commande suivante devrait fonctionner avec n'importe quelle distribution Linux moderne qui utilise le netfliter.
- Il ne s'agit PAS d'un tutoriel sur la façon de configurer iptables. Voir le tutoriel ici. Il s'agit d'un aide-mémoire rapide sur les commandes courantes d'iptables.
1. Affichage de l'état de votre pare-feu Iptables Netfilter Exemples
Tapez la commande suivante en tant que root :
# iptables -L -n -v
Exemples de résultats :
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
La sortie ci-dessus indique que le pare-feu n'est pas actif. L'exemple suivant montre un pare-feu actif :
# iptables -L -n -v
Exemples de résultats :
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 394 43586 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 93 17292 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 1 142 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 0 0 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 wanin all -- vlan2 * 0.0.0.0/0 0.0.0.0/0 0 0 wanout all -- * vlan2 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 425 packets, 113K bytes) pkts bytes target prot opt in out source destination Chain wanin (1 references) pkts bytes target prot opt in out source destination Chain wanout (1 references) pkts bytes target prot opt in out source destination
Où,
- -L : Liste des règles.
- -v : Afficher des informations détaillées. Cette option permet à la commande list d'afficher le nom de l'interface, les options de la règle et les masques TOS. Les compteurs de paquets et d'octets sont également affichés, avec le suffixe 'K', 'M' ou 'G' pour les multiplicateurs 1000, 1.000.000 et 1.000.000.000 respectivement.
- -n : Affichez l'adresse IP et le port au format numérique. N'utilisez pas le DNS pour résoudre les noms. Cela accélérera l'affichage.
1.1. Pour inspecter le pare-feu iptables avec les numéros de ligne, entrez :
# iptables -n -L -v --line-numbers
Exemples de résultats :
Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID 3 TCPMSS tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 5 wanin all -- 0.0.0.0/0 0.0.0.0/0 6 wanout all -- 0.0.0.0/0 0.0.0.0/0 7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain wanin (1 references) num target prot opt source destination Chain wanout (1 references) num target prot opt source destination
Vous pouvez utiliser les numéros de ligne pour supprimer ou insérer de nouvelles règles dans le pare-feu.
1.2. Pour afficher les règles de la chaîne INPUT ou OUTPUT, entrez :
# iptables -L INPUT -n -v
# iptables -L OUTPUT -n -v --line-numbers
2. Arrêter / Démarrer / Redémarrer le Pare-feu
Si vous utilisez CentOS / RHEL / Fedora Linux, essayez la commande systemctl ou la commande service :
# service iptables stop
# service iptables start
# service iptables restart
Vous pouvez utiliser la commande iptables elle-même pour arrêter le pare-feu et supprimer toutes les règles :
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
Où,
- -F : Effacer (flushing) toutes les règles.
- -X : Supprimer la chaîne.
- -t nom_table : Table de sélection (appelée nat ou mangle) et règles de suppression/suppression.
- -P : Définir la politique par défaut (telle que DROP, REJECT, ou ACCEPT).
3. Supprimer les règles de pare-feu
Pour afficher le numéro de ligne ainsi que d'autres informations pour les règles existantes, entrez :
# iptables -L INPUT -n --line-numbers
# iptables -L OUTPUT -n --line-numbers
# iptables -L OUTPUT -n --line-numbers | less
# iptables -L OUTPUT -n --line-numbers | grep 202.54.1.1
Vous obtiendrez la liste des IP. Regardez le numéro sur la gauche, puis utilisez le numéro pour le supprimer. Par exemple, pour supprimer la ligne numéro 4, entrez :
# iptables -D INPUT 4
OU trouver l'IP source 202.54.1.1 et la supprimer de la règle :
# iptables -D INPUT -s 202.54.1.1 -j DROP
Où,
- -D : Supprimer une ou plusieurs règles de la chaîne sélectionnée
4. Insérer les règles du pare-feu
Pour insérer une ou plusieurs règles dans la chaîne sélectionnée sous le numéro de règle donné, utilisez la syntaxe suivante. Trouvez d'abord les numéros de ligne, entrez :
# iptables -L INPUT -n --line-numbers
Exemples de résultats :
Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED
Pour insérer une règle entre 1 et 2, entrez :
# iptables -I INPUT 2 -s 202.54.1.2 -j DROP
Pour afficher les règles mises à jour, entrez :
# iptables -L INPUT -n --line-numbers
Exemples de résultats :
Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 DROP all -- 202.54.1.2 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED
5. Enregistrer les règles du pare-feu
Pour enregistrer les règles du pare-feu sous CentOS / RHEL / Fedora Linux, entrez :
# service iptables save
Dans cet exemple, abandonner une IP et enregistrer les règles du pare-feu :
# iptables -A INPUT -s 202.5.4.1 -j DROP
# service iptables save
Pour toutes les autres distributions, utilisez la commande iptables-save :
# iptables-save > /root/my.active.firewall.rules
# cat /root/my.active.firewall.rules
6. Restaurer les règles du pare-feu
Pour restaurer les règles du pare-feu à partir d'un fichier appelé /root/my.active.firewall.rules, entrez :
# iptables-restore
Pour restaurer les règles du pare-feu sous CentOS / RHEL / Fedora Linux, entrez :
# service iptables restart
Voir Comment enregistrer les règles du pare-feu iptables de façon permanente sous Linux pour plus d'informations.
7. Définir les politiques de pare-feu par défaut
Pour supprimer tout le trafic :
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
# iptables -L -v -n
# ping hebergementwebgratuit.com
# wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.2-rc5.tar.bz2
7.1. Bloquer uniquement le trafic entrant
Pour supprimer tous les paquets entrants / transférés, mais autoriser le trafic sortant, entrez :
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
# iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -L -v -n
# ping hebergementwebgratuit.com
# wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.2-rc5.tar.bz2
8. Déplacer l'adresse du réseau privé sur l'interface publique
L'usurpation d'adresse IP n'est rien d'autre que d'arrêter les plages d'adresses IPv4 suivantes pour les réseaux privés sur vos interfaces publiques. Les paquets avec des adresses sources non routables doivent être rejetés en utilisant la syntaxe suivante :
# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
8.1. Plages d'adresses IPv4 pour les réseaux privés (assurez-vous de les bloquer sur l'interface publique)
- 10.0.0.0/8 -j (A)
- 172.16.0.0/12 (B)
- 192.168.0.0/16 (C)
- 224.0.0.0/4 (MULTICAST D)
- 240.0.0.0/5 (E)
- 127.0.0.0/8 (BOUCLAGE)
9. Bloquer une adresse IP (BLOCK IP)
Pour bloquer l'adresse IP d'un attaquant appelée 1.2.3.4, entrez :
# iptables -A INPUT -s 1.2.3.4 -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -j DROP
10. Bloquer les demandes de ports entrants (BLOCK PORT)
Pour bloquer toutes les demandes de service sur le port 80, entrez :
# iptables -A INPUT -p tcp --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
Pour bloquer le port 80 uniquement pour une adresse IP 1.2.3.4, entrez :
# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
11. Bloquer l'adresse IP sortante
Pour bloquer le trafic sortant vers un hôte ou un domaine particulier, tel que hebergementwebgratuit.com, utilisez la commande host ou dig :
$ host -t a hebergementwebgratuit.com
Exemples de résultats :
cyberciti.biz has address 75.126.153.206
Notez son adresse IP et tapez ce qui suit pour bloquer tout le trafic sortant vers 75.126.153.206 :
# iptables -A OUTPUT -d 75.126.153.206 -j DROP
Vous pouvez utiliser un sous-réseau comme suit :
# iptables -A OUTPUT -d 192.168.1.0/24 -j DROP
# iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -j DROP
11.1. Exemple - Bloquer le domaine Facebook.com
D'abord, trouvez toutes les adresses IP de facebook.com, entrez :
# host -t a www.facebook.com
Exemples de résultats :
www.facebook.com has address 69.171.228.40
Trouvez le CIDR pour 69.171.228.40, entrez :
# whois 69.171.228.40 | grep CIDR
Exemples de résultats :
CIDR: 69.171.224.0/19
Pour empêcher l'accès sortant à www.facebook.com, entrez :
# iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP
Vous pouvez également utiliser le nom de domaine, entrez :
# iptables -A OUTPUT -p tcp -d www.facebook.com -j DROP
# iptables -A OUTPUT -p tcp -d facebook.com -j DROP
Depuis la page de manuel iptables :
... en spécifiant un nom à résoudre avec une requête distante telle que DNS (par exemple, facebook.com est une très mauvaise idée), une adresse IP réseau (avec /mask) ou une adresse IP ordinaire ...
12. Enregistrer et abandonner des paquets
Tapez ce qui suit pour enregistrer et bloquer l'usurpation d'adresse IP sur l'interface publique appelée eth1
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix IP_SPOOF A:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Par défaut, tout est consigné dans le fichier /var/log/messages à l'aide de la commande grep/egrep et de la commande tail :
# tail -f /var/log/messages
# grep --color IP SPOOF /var/log/messages
13. Consigner et abandonner des paquets avec un nombre limité d'entrées de journal
Le module -m limit permet de limiter le nombre d'entrées de journal créées par période. Ceci est utilisé pour éviter d'inonder votre fichier journal. Pour enregistrer et supprimer l'usurpation d'identité toutes les 5 minutes, en rafales de 7 entrées au maximum .
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix IP_SPOOF A:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
14. Abandonner ou accepter le trafic provenant d'une adresse Mac
Utilisez la syntaxe suivante :
# iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP
# iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT
15. Bloquer ou autoriser la requête ICMP Ping
Tapez la commande suivante pour bloquer les requêtes ping ICMP :
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
Les réponses Ping peuvent également être limitées à certains réseaux ou hôtes :
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT
La suite n'accepte que des types limités de requêtes ICMP :
### ** assumed that default INPUT policy set to DROP ** #############
# iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
# iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
# iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
16. Gamme ouverte de ports
Utilisez la syntaxe suivante pour ouvrir une gamme de ports :
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT
17. Gamme ouverte d'adresses IP
Utilisez la syntaxe suivante pour ouvrir une plage d'adresses IP :
## only accept connection to tcp port 80 (Apache) if ip is between 192.168.1.100 and 192.168.1.200 ##
# iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT
## nat example ##
# iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25
18. Connexions établies et redémarrage du pare-feu
Lorsque vous redémarrez le service iptables, il abandonnera les connexions établies pendant qu'il décharge les modules du système sous RHEL / Fedora / CentOS Linux. Editez, /etc/sysconfig/iptables-config et définissez IPTABLES_MODULES_UNLOAD comme suit :
IPTABLES_MODULES_UNLOAD = no
19. Aide Iptables inondant l'écran de mon serveur
Utilisez le niveau de journal crit pour envoyer les messages à un fichier journal au lieu de la console :
# iptables -A INPUT -s 1.2.3.4 -p tcp --destination-port 80 -j LOG --log-level crit
20. Bloquer ou ouvrir les ports communs
Le tableau suivant présente la syntaxe d'ouverture et de fermeture des ports TCP et UDP courants :
Replace ACCEPT with DROP to block port: ## open port ssh tcp port 22 ## iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT ## open cups (printing service) udp/tcp port 631 for LAN users ## iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT ## allow time sync via NTP for lan users (open udp port 123) ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT ## open tcp port 25 (smtp) for all ## iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT # open dns server ports for all ## iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT ## open http/https (Apache) server port to all ## iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT ## open tcp port 110 (pop3) for all ## iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT ## open tcp port 143 (imap) for all ## iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT ## open access to Samba file server for lan users only ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT ## open access to proxy server for lan users only ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT ## open access to mysql server for lan users only ## iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
21. Limiter le nombre de connexions parallèles à un serveur par IP client
Vous pouvez utiliser le module connlimit pour imposer de telles restrictions. Pour autoriser 3 connexions ssh par hôte client, entrez :
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
Fixer la limite des requêtes HTTP à 20 :
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP
Où,
- --connlimit-above 3 : Match si le nombre de connexions existantes est supérieur à 3.
- --connlimit-mask 24 : Regrouper les hôtes en utilisant la longueur du préfixe. Pour IPv4, il doit s'agir d'un nombre compris entre (y compris) 0 et 32.
22. Lister les règles NAT
La syntaxe est la suivante
# iptables -t nat -L -n -v
Exemples de résultats :
Chain PREROUTING (policy ACCEPT 496K packets, 29M bytes) pkts bytes target prot opt in out source destination 43557 2613K DNAT tcp -- * * 0.0.0.0/0 192.168.184.8 tcp dpt:443 to:10.105.28.42:443 68700 4122K DNAT tcp -- * * 0.0.0.0/0 192.168.184.8 tcp dpt:80 to:10.105.28.42:80 15855 951K DNAT tcp -- * * 0.0.0.0/0 192.168.184.8 tcp dpt:444 to:10.105.28.45:444 16009 961K DNAT tcp -- * * 0.0.0.0/0 192.168.184.8 tcp dpt:81 to:10.105.28.45:81 63495 3810K DNAT tcp -- * * 0.0.0.0/0 192.168.184.8 tcp dpt:445 to:10.105.28.44:445 19615 1177K DNAT tcp -- * * 0.0.0.0/0 192.168.184.8 tcp dpt:82 to:10.105.28.44:82 Chain INPUT (policy ACCEPT 488K packets, 29M bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 3280 packets, 207K bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 231K packets, 14M bytes) pkts bytes target prot opt in out source destination 3832 230K MASQUERADE all -- * * 10.105.28.0/24 !10.105.28.0/24 /* generated for LXD network lxdbr0 */
Une autre option :
# iptables -t nat -v -L -n --line-number
23. Supprimer les règles NAT
La syntaxe est la suivante pour lister les règles NAT sous Linux :
# iptables -t nat -v -L -n --line-number
# iptables -t nat -v -L PREROUTING -n --line-number
# iptables -t nat -v -L POSTROUTING -n --line-number
Pour supprimer la règle PREROUTING, exécutez :
# iptables -t nat -D PREROUTING {number-here}
# iptables -t nat -D PREROUTING 42
Pour supprimer la règle POSTROUTING, exécutez :
# iptables -t nat -D POSTROUTING {number-here}
# iptables -t nat -D POSTROUTING 42
24. Comment rediriger le port AA vers BB
La syntaxe est la suivante :
# iptables -t nat -A PREROUTING -i $interfaceName -p tcp --dport $srcPortNumber -j REDIRECT --to-port $dstPortNumber
Pour rediriger tout le trafic entrant sur le port 80 rediriger vers le port 8080
# iptables -t nat -I PREROUTING --src 0/0 --dst 192.168.1.5 -p tcp --dport 80 -j REDIRECT --to-ports 8080
- Comment configurer ufw pour transférer le port 80/443 vers un serveur interne hébergé sur le réseau local ?
25. Comment réinitialiser les compteurs de paquets
Pour voir les compteurs d'iptables, exécutez :
# iptables -L -n -v
Pour effacer/réinitialiser les compteurs de toutes les règles :
# iptables -Z
# iptables -L -n -v
Pour remettre à zéro les compteurs de la chaîne INPUT uniquement :
# iptables -Z INPUT
Pour remettre à zéro les compteurs de la règle n° 13 dans la chaîne INPUT uniquement :
# iptables -Z INPUT 13
- Comptabilité IP du réseau Linux
26. Comment faire : Utiliser iptables comme un pro
Pour plus d'informations sur iptables, veuillez consulter la page de manuel en tapant man iptables sur la ligne de commande. Essayez la commande man :
# man iptables
Vous pouvez également consulter l'aide en utilisant la syntaxe suivante (voir la commande help) :
# iptables -h
Pour obtenir de l'aide sur des commandes et des cibles spécifiques, entrez :
# iptables -j DROP -h
27. Test de votre pare-feu
Découvrez si les ports sont ouverts ou non, entrez :
# netstat -tulpn
Voir si le port 80 de tcp est ouvert ou non, entrer :
# netstat -tulpn | grep :80
Si le port 80 n'est pas ouvert, démarrez Apache, entrez :
# service httpd start
Assurez-vous qu'iptables autorise l'accès au port 80 :
# iptables -L INPUT -v -n | grep 80
Sinon, ouvrez le port 80 en utilisant les iptables pour tous les utilisateurs :
# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
# service iptables save
Utilisez la commande telnet pour voir si le pare-feu autorise la connexion au port 80 :
$ telnet www.hebergementwebgratuit.com 80
Exemples de résultats :
Trying 75.126.153.206... Connected to www.cyberciti.biz. Escape character is '^]'. ^] telnet> quit Connection closed.
Vous pouvez utiliser la commande nmap pour sonder votre propre serveur en utilisant la syntaxe suivante :
# nmap -sS -p 80 www.hebergementwebgratuit.com
Exemples de résultats :
Starting Nmap 5.00 ( http://nmap.org ) at 2011-12-13 13:19 IST Interesting ports on www.cyberciti.biz (75.126.153.206): PORT STATE SERVICE 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 1.00 seconds
Je vous recommande également d'installer et d'utiliser un renifleur tel que tcpdupm et ngrep pour tester les paramètres de votre pare-feu.
Conclusion
Ce billet ne liste que les règles de base pour les nouveaux utilisateurs de Linux. Vous pouvez créer et construire des règles plus complexes. Cela nécessite une bonne compréhension de TCP/IP, des réglages du noyau Linux via sysctl.conf, et une bonne connaissance de votre propre configuration. Restez à l'écoute pour les prochains sujets :
- Inspection dynamique des paquets.
- Utilisation des aides au suivi des connexions.
- Traduction d'adresses réseau.
- Filtrage de la couche 2.
- Outils de test des pare-feu.
- Traitement des VPN, DNS, Web, Proxy et autres protocoles.
Lisez la page de manuel d'iptabels en utilisant la commande man ou la commande help :
$ man iptables
$ man i6ptables
Related
Consultez également tous nos tutoriels complets sur les pare-feu pour Alpine Linux Awall, CentOS 8, OpenSUSE, RHEL 8, Ubuntu Linux version 16.04 LTS/18.04 LTS/20.04 LTS, et 22.04 LTS.