Si vous utilisez Linux, vous disposez de nombreuses options pour protéger votre appareil. Il est livré avec iptables, un utilitaire de pare-feu en ligne de commande qui offre une grande flexibilité et une excellente protection.
Cependant, comme il s’agit d’un utilitaire en ligne de commande, il nécessite une légère courbe d’apprentissage.
Si vous êtes administrateur système ou si vous avez appris à utiliser Linux, vous êtes au bon endroit : nous allons passer en revue les commandes iptables les plus courantes, exemples à l’appui.
Qu’est-ce qu’iptables ?
iptables est un pare-feu intégré à Linux, basé sur un logiciel. Il permet aux utilisateurs de Linux de créer ou de définir des politiques qui ont un impact direct et indirect sur le trafic internet.
Cela signifie que vous pouvez utiliser iptables pour créer des règles bloquant ou autorisant le trafic via le port, l‘adresse IP source, les interfaces réseau, etc.
Une fois que vous avez défini les règles, tout le trafic doit passer par elles. Ainsi, par exemple, pour chaque nouvelle connexion, iptables vérifie si des règles prédéfinies correspondent à la connexion. Si c’est le cas, il appliquera la règle à la connexion. Toutefois, s’il n’y a pas de règles applicables associées, il appliquera la règle par défaut.
Pour utiliser iptables, vous devez utiliser la commande suivante.
iptables -L -n -v
Les paramètres sont les suivants :
- -L permet de lister toutes les règles.
- -n permet d’obtenir une sortie numérique plus rapide.
- -v pour afficher la sortie dans un format détaillé.
Si vous exécutez la commande iptables sans aucun paramètre, vous obtiendrez le résultat suivant :
iptables v1.8.7 (nf_tables) : aucune commande spécifiée
Essayez `iptables -h' ou 'iptables --help' pour plus d'informations.
Vous devez l’installer s’il rencontre une erreur, telle que la commande “iptables” introuvable.
Pour installer iptables dans votre distribution Linux, exécutez la commande suivante.
sudo apt-get install iptables
Vous obtiendrez le résultat suivant, car il est déjà préinstallé sur ma distribution Linux.
#Sortie
Lecture des listes de paquets... Terminé
Construction de l'arbre des dépendances... Terminé
Lecture des informations d'état... Terminé
iptables est déjà la dernière version (1.8.7-1ubuntu5).
iptables est installé manuellement.
0 mis à jour, 0 nouvellement installé, 0 à supprimer, et 35 non mis à jour.
Qu’est-ce qu’un pare-feu ?
Les pare-feu constituent la forme la plus élémentaire de protection des systèmes, des réseaux et des ordinateurs personnels. Ils peuvent être matériels ou logiciels et s’appuient sur des règles pour fonctionner correctement.
La plupart des pare-feu sont hautement personnalisables et vous permettent de créer ou de modifier des règles. Par exemple, comme les paquets provenant d’internet utilisent des ports pour pénétrer dans un système, l’analyse basée sur les ports peut vous aider à les filtrer. Par ailleurs, vous pouvez également autoriser ou bloquer des services en fonction de l’adresse IP source ou de l’interface réseau.
Si vous utilisez Linux, vous avez accès à iptables intégré. Toutefois, vous pouvez également utiliser un pare-feu Linux autonome pour vous aider à protéger votre système.
Pourquoi avez-vous besoin d’iptables pour configurer le pare-feu ?
Mais pourquoi devriez-vous utiliser iptables ? Après tout, il existe de bons utilitaires de pare-feu en ligne de commande, tels que ufw et firewalld. Vous pouvez également utiliser des pare-feu Linux autonomes qui sont simples à utiliser et offrent davantage de fonctionnalités.
Qu’est-ce qui rend iptables si intéressant lors de la configuration d’un pare-feu ? Les raisons de l’utiliser sont les suivantes :
- Il offre une excellente flexibilité dès sa sortie de l’emballage. Vous pouvez définir des règles au niveau des paquets.
- Il est relativement facile à utiliser une fois que vous savez comment il fonctionne.
- Bloquez le trafic indésirable de manière simple.
- Redirigez les paquets vers une autre adresse IP.
- Protégez vos systèmes contre les attaques par déni de service (DoS).
Et bien d’autres choses encore !
Comprendre l’architecture d’iptables et sa relation avec Netfilter
Pour bien comprendre iptables, nous devons apprendre à connaître son architecture. Tout d’abord, cela nous donnera une compréhension claire des différents composants d’iptables. Ensuite, une fois que nous connaissons chacun d’entre eux, nous pouvons les utiliser pour écrire des règles de pare-feu.
Lorsque nous parlons d’iptables, Netfilter entre également en jeu. Vous pouvez considérer Netfilter comme le grand frère d’iptables. Il s’appuie sur iptables et offre un meilleur ensemble de fonctionnalités pour gérer votre pare-feu. Cependant, il utilise iptables comme l’un des moyens d’obtenir d’excellentes capacités de pare-feu.
Iptables est une interface en ligne de commande pour les crochets de Netfilter au niveau du noyau. Ces crochets peuvent interagir avec la pile réseau de Linux, qui affecte les paquets au niveau le plus profond.
À quoi ressemble l’architecture d’Iptables ?
Tableaux
l’architecture d’iptables commence par des tables. Ces tables se chargent de l’organisation des règles. Chaque table est classée en fonction du type de décision qu’elle prend. En termes plus simples, une table simplifie le traitement global des paquets en attachant une manière spécifique de traiter les paquets.
Les différentes tables proposées par iptables sont les suivantes :
- Table de filtrage : Spécifie le type de décision pour le filtrage des paquets. En termes simples, elle détermine si un paquet doit atteindre sa destination ou non.
- Table NAT : Spécifie le type de décision pour la traduction d’adresse. Ici, le routage des paquets est déterminé en fonction des réseaux NAT. Par exemple, si un paquet ne peut pas accéder au NAT, il sautera et essaiera de rechercher un réseau non NAT.
- Table de démêlage : Gère les besoins de traitement particuliers des paquets. Par exemple, vous pouvez la configurer pour modifier les informations d’en-tête du paquet, telles que les valeurs TTL.
- Table brute : La table raw vous permet de travailler assidûment avec l’aspect stateful du pare-feu iptables. En utilisant la table, vous pouvez acheminer les paquets en fonction de leur “état” avant que le noyau Linux ne commence à suivre son état. Elle est principalement utilisée pour marquer les paquets, que le système de suivi des connexions les traite ou non. Si un paquet n’est pas suivi, il est positionné sur la cible NOTRACK.
Chaînes
Enfin, nous avons les “chaînes” à l’intérieur des “tables”
Ces chaînes gèrent l’inspection approfondie des paquets à différentes étapes de leur parcours. Par exemple, vous pouvez les inspecter lorsqu’ils atteignent un port ou une interface réseau. Ainsi, une décision peut être prise avant que le paquet ne soit transmis au processus d’un système.
Tout comme les tableaux, vous disposez également de différentes chaînes. Celles-ci comprennent
- Chaîne PREROUTING : ici, les règles gèrent les paquets qui viennent d’arriver à l’interface réseau.
- Chaîne INPUT : Les règles mentionnées dans la chaîne INPUT gèrent le comportement des connexions entrantes. Elles sont ensuite transmises au processus local.
- Chaîne OUTPUT : La chaîne OUTPUT traite les paquets produits par les processus.
- Chaîne FORWARD : La chaîne FORWARD gère les paquets qui ne sont pas destinés aux systèmes locaux. Il s’agit d’un support pour d’autres systèmes destinataires, comme un routeur.
- Chaîne POSTROUTING : Enfin, nous avons la chaîne POSTROUTING, qui gère les paquets sur le point de sortir par l’interface réseau.
Toutes les chaînes ne sont pas disponibles dans chaque table. Par exemple, la chaîne FORWARD n’est disponible que dans les tables mangle, filter et security. De même, la chaîne POSTROUTING est disponible dans les tables mangle et nat (SNAT). Seule la chaîne OUTPUT est disponible dans toutes les tables.
Cible
Nous avons maintenant une “cible” Lorsqu’un paquet arrive, il se déplace dans les chaînes pour voir quelle description de règle correspond le mieux. S’il correspond à la description d’une règle, il effectue l’action associée en fonction de celle-ci, puis le déplace vers la cible – scellant ainsi le destin du paquet.
Dans de nombreux cas, un paquet ne correspondra à aucune description ni à aucun ensemble de règles. C’est là qu’intervient la politique par défaut, la cible.
Les cibles peuvent être ACCEPT, DROP et REJECT. Ce sont des cibles finales qui décident du sort du paquet.
- ACCEPT : Accepte les paquets.
- DROP : Le paquet est abandonné, ce qui empêche l’expéditeur de savoir si le système est présent ou non.
- REJECT (REJET) : Rejette le paquet.
Il existe également des cibles non terminales qui sont principalement utilisées pour stocker des informations sur le paquet.
Les commandes iptables les plus courantes avec des exemples
Avant de vous lancer dans l’exécution de la commande iptables, assurez-vous que
- Vous disposez d’un accès administratif pour exécuter les commandes. Si la commande échoue en raison des privilèges administratifs, exécutez-la à nouveau avec la commande
sudo
devant elle. - Cet article n’est pas un tutoriel sur la façon de configurer iptables sur Ubuntu.
- Nous utiliserons la commande iptables qui fonctionne avec IPv4. Si vous avez l’intention de travailler avec IPv6, vous devrez utiliser ip6tables à la place.
Vérifier l’état d’iptables
Pour vérifier l’état actuel d’iptables, vous devez exécuter la commande suivante.
iptables -L -n -v
#sortie
Chaîne INPUT (politique ACCEPT 0 paquets, 0 octets)
pkts bytes target prot opt in out source destination
Chaîne FORWARD (politique ACCEPT 0 paquet, 0 octet)
pkts bytes target prot opt in out source destination
Chaîne OUTPUT (politique ACCEPT 0 paquet, 0 octet)
pkts bytes target prot opt in out source destination
La sortie ci-dessus contient beaucoup d’informations. Cependant, elle indique également que le pare-feu est inactif. En effet, toutes les chaînes sont actuellement définies sur ACCEPT et n’ont pas de règles.
Vous devrez commencer à ajouter des règles pour activer le pare-feu.
Ajout de règles à la chaîne
Lorsque vous ajoutez une règle, elle est toujours ajoutée à la chaîne. Vous devez donc utiliser l‘option -A (Append). La syntaxe est la suivante
sudo iptables - A
Cependant, lorsque vous l’exécutez, vous obtiendrez le résultat suivant :
iptables v1.8.7 (nf_tables) : l'option "-A" nécessite un argument
Essayez `iptables -h' ou 'iptables --help' pour plus d'informations.
Les arguments que vous pouvez utiliser pour ajouter des règles sont les suivants :
- – i : Il s’agit de l’interface. Ici, vous pouvez mentionner l’interface pour laquelle vous ajoutez des règles. Il peut s’agir de ppp0, eth0, etc.
- – p : Il s’agit du protocole. Ici, vous mentionnez la règle d’utilisation d’un protocole réseau pour filtrer les packers. Par exemple, vous pouvez dire ICMP, TCP, UDP, etc. Si vous voulez que la règle fonctionne avec tous les protocoles, mentionnez “all” comme valeur de l’argument.
- – s : Vient ensuite l’argument source, qui mentionne la source du trafic (sous la forme d’une adresse IP ou d’un nom d’hôte)
- – dport : Le dport représente le port de destination, où vous mentionnez le numéro de port auquel le paquet est destiné.
- – j : Enfin, nous avons un argument TARGET où vous pouvez mentionner le nom de la TARGET, ACCEPT, DROP, ou RETURN
Il est également essentiel d’écrire la commande dans l’ordre suivant :
sudo iptables -A <nom de la chaîne> -i <nom de l'interface> - p <nom de l'outil de protection> - s <source> --dport <n° de port> -j <cible>
Sauvegarde des modifications apportées à iptables
Une fois que vous avez ajouté une règle, vous pouvez la sauvegarder avec la commande iptables -save.
sudo iptables -save
La sortie est la suivante :
nitt@logan99:~$ sudo iptables-save
# Generated by iptables-save v1.8.7 on Sun May 14 13:37:34 2023
*filtre
:INPUT ACCEPT [0:0]
:FORWARD ACCEPTE [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 392 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Sun May 14 13:37:34 2023
Conserver les règles manuellement
Par défaut, iptables ne sauvegarde pas les règles. Ainsi, si vous redémarrez votre ordinateur, toutes les règles seront supprimées. Vous devrez utiliser les commandes suivantes pour vous assurer de ne pas avoir à reconfigurer iptables.
Pour les règles IPv4, écrivez la commande :
sudo iptables-save > /etc/iptables/rules.v4
Et pour les règles IPv6, écrivez la commande suivante : $ sudo iptables-save > /etc/iptables/rules.v4
$ sudo iptables-save > /etc/iptables/rules.v6
Persistance automatique des règles
Pour que les règles persistent même après un redémarrage, et ce automatiquement, vous devez installer le paquet iptables-presistent.
Pour ce faire, exécutez la commande suivante.
sudo apt-get install iptables-persistent
La fenêtre suivante s’ouvrira. Appuyez sur
Comme nous travaillons avec la table IPv4, seules les règles IPv4 seront affichées. Si vous travaillez sur IPv6, la fenêtre correspondante s’affichera.
Note : Le paquet ne charge que les règles iptables que vous avez sauvegardées. Ainsi, chaque fois que vous modifiez iptables, vous devez le sauvegarder avec la commande iptables -save.
Recharger les règles après le redémarrage
Une fois les règles sauvegardées, vous devez les restaurer avec la commande suivante.
sudo iptables-restore < /etc/iptables/rules.v4
Et
$ sudo iptables-restore < /etc/iptables/rules.v6
Activer le trafic sur Localhost / Activer le Loopback
Pour activer le trafic sur Localhost, utilisez la commande suivante :
sudo iptables -A INPUT -i lo -j ACCEPT
Ici, lo représente l’interface de bouclage pour toutes les communications de l’hôte local.
De même, nous pouvons autoriser les paquets à sortir par l’interface de bouclage.
sudo iptables -A OUTPUT -o lo -j ACCEPT
Pour vérifier comment les règles ont été modifiées, exécutez iptables -L -n -V
#output
Chaîne INPUT (politique ACCEPT 0 paquets, 0 octets)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
Chaîne FORWARD (politique ACCEPT 0 paquets, 0 octets)
pkts bytes target prot opt in out source destination
Chaîne OUTPUT (politique ACCEPT 0 paquet, 0 octet)
pkts bytes target prot opt in out source destination
Activation du trafic sur des ports particuliers
Vous pouvez activer l’acceptation ou le rejet du trafic sur des ports particuliers.
Par exemple, les ports SSL, HTTP et SSH sont importants pour le fonctionnement normal de vos applications. Vous pouvez ajouter des règles au paquet ACCEPT par le biais des numéros de port pour vous assurer qu’ils fonctionnent comme prévu.
Pour SSL, exécutez la commande suivante
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Pour HTTPS, exécutez la commande suivante.
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Pour autoriser tout le trafic HTTPS sur l’interface eth0.
$ iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
$ iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
Pour SSH, exécutez la commande suivante.
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Et pour accepter TOUT le trafic SSH entrant sur l’interface eth0, exécutez la commande suivante :
$ iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
$ iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Un autre exemple serait d’activer le trafic sur un port spécifique pour votre application personnalisée. Disons le port 233.
Pour ouvrir des connexions sur ce port, exécutez.
sudo iptables -A INPUT -p tcp --dport 233 -j ACCEPT
De même, vous pouvez désactiver les connexions sur un port particulier en utilisant l’option cible REJECT.
Bloquons toutes les connexions sur le port 392.
sudo iptables -A INPUT -p tcp --dport 392 -j REJECT
Pour vérifier, exécutez la commande iptables -L -n -v.
#sortie
Chaîne INPUT (politique ACCEPT 0 paquets, 0 octets)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:233
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Chaîne FORWARD (politique ACCEPT 0 paquets, 0 octets)
pkts bytes target prot opt in out source destination
Chaîne OUTPUT (politique ACCEPT 0 paquet, 0 octet)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Supprimer des règles existantes
Pour supprimer des règles existantes, vous devez exécuter la commande suivante.
iptables -F
ou
$ iptables --flush
Note : Si vous n’avez pas sauvegardé vos règles, elles sont perdues à jamais et ne peuvent pas être restaurées en utilisant iptables -restore
Supprimer des règles avec des numéros de ligne
Pour supprimer une règle spécifique, vous devez obtenir la liste des règles avec les numéros.
sudo iptables -L --line-numbers
#Sortie
Chaîne INPUT (politique ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
2 ACCEPT tcp -- anywhere anywhere tcp dpt:http
3 ACCEPT tcp -- anywhere anywhere tcp dpt:https
4 ACCEPT tcp -- anywhere anywhere tcp dpt:233
5 REJECT tcp -- anywhere anywhere tcp dpt:392 reject-with icmp-port-unreachable
Exécutez la commande suivante si vous souhaitez supprimer la règle numéro 4 pour la chaîne INPUT.
sudo iptables -D INPUT 4
Et si vous exécutez à nouveau la commande iptables -n -v -L.
#sortie
Chaîne INPUT (règle ACCEPT 0 paquets, 0 octets)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Afficher uniquement les règles de chaîne INPUT ou OUTPUT
Pour afficher uniquement les règles de la chaîne INPUT, exécutez la commande suivante.
sudo iptables -L INPUT -n -v --line-numbers
#ouput
Chaîne INPUT (politique ACCEPT 0 paquets, 0 octets)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
4 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
De même, si vous voulez voir uniquement les règles de la chaîne OUTPUT, exécutez :
sudo iptables -L OUTPUT -n -v --line-numbers
#output
Chaîne OUTPUT (politique ACCEPT 0 paquets, 0 octets)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Démarrer/arrêter/redémarrer le pare-feu
Si vous êtes sous RHEL/Fedora Linux ou CentOS, vous pouvez démarrer/arrêter ou redémarrer le pare-feu en exécutant les commandes suivantes.
service iptables stop
$ service iptables start
$ service iptables restart
Vous pouvez également utiliser la commande systemctl .
Cependant, elle ne fonctionnera pas sur Ubuntu.
Insérer des règles à un endroit spécifique
Si vous souhaitez insérer des règles à un endroit précis, vous devez utiliser les commandes suivantes.
Tout d’abord, vérifiez les règles.
sudo iptables -L INPUT -n --numéro de ligne
#sortie
Chaîne INPUT (politique ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
4 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Exécutez la commande suivante si vous souhaitez insérer des règles entre 2 et 3.
sudo iptables -I INPUT 3 -s 252.32.1.2 -j DROP
Maintenant, vérifiez les règles mises à jour.
#Sortie
Chaîne INPUT (politique ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 DROP all -- 252.32.1.2 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
5 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Bloquer le trafic entrant mais autoriser le trafic sortant
Vous devrez entrer la commande suivante pour bloquer tout le trafic entrant.
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
De cette façon, vous pouvez faire des ping ou télécharger des paquets, mais vous bloquez tout trafic entrant inconnu.
Bloquer une adresse IP particulière
Pour bloquer une adresse IP spécifique, exécutez la commande suivante.
iptables -A INPUT -s 14.23.59.9 -J DROP
Vous pouvez également définir une variable pour stocker l’adresse IP bloquée, puis exécuter la commande.
BLOCK_THE_IP = "a.b.c.d"
Ensuite, exécutez la commande :
iptables -A INPUT -s "BLOCK_THE_IP" -j DROP
Remarque : remplacez “a.b.c.d” par votre adresse IP préférée.
Autoriser le ping du système depuis l’extérieur
Vous pouvez permettre à des utilisateurs extérieurs d’envoyer des signaux ping à votre serveur afin de rendre votre réseau détectable.
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$ sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
Autoriser le réseau interne à communiquer avec le réseau externe
Exécutez la commande suivante pour autoriser le réseau interne (disons eth0) à communiquer avec le réseau externe (disons eth1).
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
Autoriser les DNS sortants
Pour autoriser les connexions DNS vers votre serveur, exécutez la commande suivante.
$ iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
$ iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
Autoriser Rsycn à partir d’un réseau spécifique
Si vous utilisez la commande Rsync et que vous souhaitez l’activer sur un réseau spécifique, exécutez la commande suivante.
iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT
Bloquer un port
Exécutez la commande suivante pour bloquer un port spécifique et toutes les requêtes entrantes.
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
Bloquer le trafic sortant vers une adresse IP particulière
Vous pouvez bloquer le trafic vers n’importe quelle adresse IP en exécutant la commande suivante.
$ host -t a geekflare.com/fr
#output
geekflare.com/fr a une adresse 172.66.40.93
Pour bloquer le trafic sortant vers cette adresse IP particulière, exécutez la commande suivante.
iptables -A OUTPUT -d 72.66.40.93 -j DROP
Bloquer les plateformes de médias sociaux
De la même manière, vous pouvez également bloquer les plateformes de médias sociaux telles qu’Instagram, Twitter et Facebook.
Trouvez l’adresse IP des médias sociaux en exécutant la commande suivante :
$ host -t a social-media-web-adrress.com
Par exemple, pour Instagram, ce serait :
$ host -t a www.instagram.com
Vous devez maintenant trouver le CIDR de l’adresse IP de cette plateforme de médias sociaux particulière.
$ whois 185.89.219.11 | grep CIDR
Remarque : vous devrez peut-être installer le paquetage whois en exécutant sudo apt-get install whois
Maintenant, entrez la valeur CIDR de la manière suivante :
iptables - A OUTPUT -p tcp -d CIDR-value -j DROP
Remarque : Veillez à modifier la valeur CIDR en conséquence.
Autoriser ou bloquer les demandes de ping ICMP
Pour autoriser ou bloquer les demandes de ping ICMP, exécutez les commandes suivantes.
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
Ouvrir une plage de ports particulière
Pour ouvrir une série de ports, exécutez la commande suivante.
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8933 : 8500 -j ACCEPT
Liste des règles NAT
Pour lister les règles NAT, exécutez la commande suivante :
sudo iptables -t nat -L -n -v
Ou bien
$ sudo iptables -t nat -v -L -n --numéro de ligne
Réinitialisation des compteurs de paquets
Pour vérifier le compteur actuel d’iptables :
$ sudo iptables -L -n -v
Pour réinitialiser ou effacer les compteurs, procédez comme suit :
sudo iptables -Z
sudo iptables -L -n -v
Pour réinitialiser uniquement le compteur de la chaîne INPUT, exécutez :
$ iptables -Z INPUT
Pour réinitialiser le compteur d’une règle particulière, exécutez ce qui suit :
$ iptables -z INPUT RULE-NUMBER
Veillez à remplacer RULE-NUMBER par cette règle particulière.
Derniers mots
iptables est un puissant utilitaire de ligne de commande pour pare-feu. Vous pouvez configurer presque tout ce qui concerne les ressources du réseau, les paquets, les interfaces et les scénarios particuliers.
De plus, iptables offre de nombreuses options. Consultez sa page principale à l’aide de la commande man pour obtenir une vue d’ensemble.
$ man iptables
$ man ip6tables
Ensuite, découvrez un pare-feu réseau et la manière dont il permet d’arrêter les attaques.