GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Tutoriel Iptables :Guide ultime du pare-feu Linux

Présentation

Tous les systèmes d'exploitation modernes sont équipés d'un pare-feu - une application logicielle qui régule le trafic réseau vers un ordinateur. Les pare-feu créent une barrière entre un réseau de confiance (comme un réseau de bureau) et un réseau non fiable (comme Internet). Les pare-feu fonctionnent en définissant des règles qui régissent quel trafic est autorisé et lequel est bloqué. Le pare-feu utilitaire développé pour les systèmes Linux est iptables .

Dans ce didacticiel, découvrez comment installer iptables, configurer et utiliser iptables sous Linux.

Prérequis

  • Un compte utilisateur avec sudo privilèges
  • Accès à une fenêtre de terminal/ligne de commande (Ctrl-Alt-T, Ctrl-Alt-F2)

Comment fonctionne iptables

Le trafic réseau est constitué de paquets. Les données sont divisées en éléments plus petits (appelés paquets), envoyés sur un réseau, puis reconstitués. Iptables identifie les paquets reçus et utilise ensuite un ensemble de règles pour décider quoi en faire.

Iptables filtre les paquets en fonction de :

  • Tableaux : Les tableaux sont des fichiers qui joignent des actions similaires. Une table se compose de plusieurs chaînes .
  • Chaînes : Une chaîne est une chaîne de règles . Lorsqu'un paquet est reçu, iptables trouve la table appropriée, puis la parcourt à travers la chaîne de règles jusqu'à ce qu'il trouve une correspondance.
  • Règles : Une règle est une instruction qui indique au système quoi faire avec un paquet. Les règles peuvent bloquer un type de paquet ou transférer un autre type de paquet. Le résultat, où un paquet est envoyé, est appelé une cible .
  • Cibles : Une cible est une décision sur ce qu'il faut faire avec un paquet. En règle générale, il s'agit de l'accepter, de le supprimer ou de le rejeter (ce qui renvoie une erreur à l'expéditeur).

Tableaux et chaînes

Le pare-feu Linux iptables a quatre tables par défaut. Nous énumérerons les quatre avec les chaînes que chaque table contient.

1. Filtre

Le Filtre table est la plus utilisée. Il agit comme un videur, décidant qui entre et sort de votre réseau. Il a les chaînes par défaut suivantes :

  • Entrée – les règles de cette chaîne contrôlent les paquets reçus par le serveur.
  • Sortie – cette chaîne contrôle les paquets pour le trafic sortant.
  • Transférer – cet ensemble de règles contrôle les paquets qui sont acheminés via le serveur.

2. Traduction d'adresses réseau (NAT)

Ce tableau contient les règles NAT (Network Address Translation) pour le routage des paquets vers des réseaux qui ne sont pas accessibles directement. Lorsque la destination ou la source du paquet doit être modifiée, la table NAT est utilisée. Il comprend les chaînes suivantes :

  • Pré-acheminement – ​​ cette chaîne attribue les paquets dès que le serveur les reçoit.
  • Sortie – fonctionne de la même manière que la chaîne de sortie que nous avons décrite dans le filtre tableau.
  • Post-routage – les règles de cette chaîne permettent d'apporter des modifications aux paquets après leur sortie de la chaîne de sortie.

3. Mutilation

Le Mangle table ajuste les propriétés d'en-tête IP des paquets. Le tableau contient toutes les chaînes suivantes décrites ci-dessus :

  • Pré-acheminement
  • Post-routage
  • Sortie
  • Entrée
  • Transférer

4. Brut

Le cru table est utilisée pour exempter les paquets du suivi de connexion. La table brute a deux des chaînes que nous avons mentionnées précédemment :

  • Pré-acheminement
  • Sortie

5. Sécurité (facultatif)

Certaines versions de Linux utilisent également une sécurité table pour gérer les règles d'accès spéciales. Ce tableau inclut l'entrée, la sortie, et en avant chaînes, un peu comme la table de filtrage.

Cibles

Une cible est ce qui se passe après qu'un paquet corresponde à un critère de règle. Non résiliable les cibles continuent de faire correspondre les paquets aux règles d'une chaîne même lorsque le paquet correspond à une règle.

Avec résiliation cibles, un paquet est évalué immédiatement et n'est pas mis en correspondance avec une autre chaîne. Les cibles de terminaison dans Linux iptables sont :

  • Accepter – cette règle accepte que les paquets traversent le pare-feu iptables.
  • Déposez – le paquet abandonné n'est mis en correspondance avec aucune autre chaîne. Lorsque Linux iptables supprime une connexion entrante sur votre serveur, la personne essayant de se connecter ne reçoit pas d'erreur. Il semble qu'ils essaient de se connecter à une machine inexistante.
  • Retourner – cette règle renvoie le paquet à la chaîne d'origine afin que vous puissiez le comparer à d'autres règles.
  • Rejeter – le pare-feu iptables rejette un paquet et envoie une erreur à l'appareil qui se connecte.

Comment installer et configurer iptables du pare-feu Linux

Installer Iptables Ubuntu

Iptables sont installés par défaut sur la plupart des systèmes Linux. Pour confirmer qu'iptables est installé, utilisez la commande suivante :

sudo apt-get install iptables

L'exemple de sortie dans Ubuntu confirme que la dernière version d'iptables est déjà présente :

Si vous souhaitez conserver les règles du pare-feu iptables lorsque vous redémarrez le système, installez le package persistant :

sudo apt-get install iptables-persistent

Installer Iptables CentOS

Dans CentOS 7 , iptables a été remplacé par firewalld .

Pour installer iptables, vous devez d'abord arrêter firewalld. Saisissez les commandes suivantes :

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld

Les commandes arrêtent et empêchent firewalld de démarrer au démarrage, et ne laissent pas les autres services démarrer firewalld.

Ensuite, installez et activez iptables. Tout d'abord, installez le package de services iptables avec la commande suivante :

sudo yum -y install iptables-services

Ce package préserve vos règles après un redémarrage du système. Les informations affichées ci-dessous confirment que l'installation est terminée :

Entrez les commandes suivantes pour activer et démarrer iptables dans CentOS 7 :

sudo systemctl enable iptables
sudo systemctl start iptables

La commande status confirme l'état de l'application :

sudo systemctl status iptables

Syntaxe de base pour les commandes et options iptables

En général, une commande iptables ressemble à ceci :

sudo iptables [option] CHAIN_rule [-j target]

Voici une liste de quelques options courantes d'iptables :

  • -A --append – Ajouter une règle à une chaîne (à la fin).
  • -C --check – Recherchez une règle qui correspond aux exigences de la chaîne.
  • -D --delete – Supprimer les règles spécifiées d'une chaîne.
  • -F --flush – Supprimer toutes les règles.
  • -I --insert – Ajouter une règle à une chaîne à une position donnée.
  • -L --list – Afficher toutes les règles d'une chaîne.
  • -N -new-chain – Créer une nouvelle chaîne.
  • -v --verbose – Afficher plus d'informations lors de l'utilisation d'une option de liste.
  • -X --delete-chain – Supprimer la chaîne fournie.

Iptables est sensible à la casse, alors assurez-vous d'utiliser les bonnes options.

Configurer iptables sous Linux

Par défaut, ces commandes affectent les filtres table. Si vous devez spécifier une table différente, utilisez le –t option, suivi du nom de la table.

Vérifier l'état actuel d'iptables

Pour afficher l'ensemble de règles actuel sur votre serveur, saisissez ce qui suit dans la fenêtre du terminal :

sudo iptables -L

Le système affiche l'état de vos chaînes. La sortie listera trois chaînes :

Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)

Activer le trafic en boucle

Il est prudent d'autoriser le trafic depuis votre propre système (l'hôte local). Ajoutez l'entrée chaîne en saisissant ce qui suit :

sudo iptables -A INPUT -i lo -j ACCEPT

Cette commande configure le pare-feu pour accepter le trafic pour l'hôte local (lo ) interface (-i ). Désormais, tout ce qui provient de votre système passera par votre pare-feu. Vous devez définir cette règle pour autoriser les applications à communiquer avec l'interface localhost.

Autoriser le trafic sur des ports spécifiques

Ces règles autorisent le trafic sur différents ports vous spécifiez à l'aide des commandes répertoriées ci-dessous. Un port est un point de terminaison de communication spécifié pour un type spécifique de données.

Pour autoriser le trafic Web HTTP, saisissez la commande suivante :

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Pour autoriser uniquement le trafic SSH (Secure Shell) entrant, saisissez ce qui suit :

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Pour autoriser le trafic Internet HTTPS, saisissez la commande suivante :

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Les options fonctionnent comme suit :

  • -p – Vérifiez le protocole spécifié (tcp ).
  • --dport – Spécifiez le port de destination.
  • -j jump – Effectuez l'action spécifiée.

Contrôler le trafic par adresse IP

Utilisez la commande suivante pour ACCEPTER le trafic provenant d'une adresse IP spécifique.

sudo iptables -A INPUT -s 192.168.0.27 -j ACCEPT

Remplacez l'adresse IP dans la commande par l'adresse IP que vous souhaitez autoriser.

Vous pouvez également abandonner le trafic d'une adresse IP :

sudo iptables -A INPUT -s 192.168.0.27 -j DROP

Vous pouvez REJETER le trafic d'une plage d'adresses IP, mais la commande est plus complexe :

sudo iptables -A INPUT -m iprange --src-range 192.168.0.1-192.168.0.255 -j REJECT

Les options iptables que nous avons utilisées dans les exemples fonctionnent comme suit :

  • -m – Correspond à l'option spécifiée.
  • -iprange – Dites au système d'attendre une plage d'adresses IP au lieu d'une seule.
  • --src-range – Identifie la plage d'adresses IP.

Suppression du trafic indésirable

Si vous définissez dport règles de pare-feu iptables, vous devez empêcher tout accès non autorisé en supprimant tout trafic provenant d'autres ports :

sudo iptables -A INPUT -j DROP

Le -A L'option ajoute une nouvelle règle à la chaîne. Si une connexion passe par des ports autres que ceux que vous avez définis, elle sera abandonnée.

Supprimer une règle

Vous pouvez utiliser le -F option pour effacer toutes les règles de pare-feu iptables. Une méthode plus précise consiste à supprimer le numéro de ligne d'une règle.

Tout d'abord, répertoriez toutes les règles en saisissant ce qui suit :

sudo iptables -L --line-numbers

Localisez la ligne de la règle de pare-feu que vous souhaitez supprimer et exécutez cette commande :

sudo iptables -D INPUT <Number>

Remplacer <Numéro> avec le numéro de ligne de règle réel que vous souhaitez supprimer.

Enregistrer vos modifications

Iptables ne conserve pas les règles que vous avez créées lors du redémarrage du système. Chaque fois que vous configurez iptables sous Linux, toutes les modifications que vous apportez ne s'appliquent que jusqu'au premier redémarrage.

Pour enregistrer les règles dans les systèmes basés sur Debian, saisissez :

sudo /sbin/iptables–save

Pour enregistrer les règles dans les systèmes basés sur Red-Hat, entrez :

sudo /sbin/service iptables save

Au prochain démarrage de votre système, iptables rechargera automatiquement les règles du pare-feu.


Ubuntu
  1. Pare-feu Linux

  2. Linux – Routage via Iptables ?

  3. Linux IPTables :comment ajouter des règles de pare-feu (avec l'exemple Autoriser SSH)

  4. Comment consigner les paquets rejetés par le pare-feu Linux IPTables dans un fichier journal

  5. Service d'exploitation Linux "iptables"

Le guide ultime du sous-système Windows pour Linux (Windows WSL)

Comment sécuriser un pare-feu Linux avec les règles IPTables

Le guide ultime pour créer des utilisateurs sous Linux / Unix

Top 5 des meilleurs pare-feu Linux

Tutoriel sur le pare-feu Linux :Tables IPTables, chaînes, principes de base des règles

Comment configurer un pare-feu sur votre serveur Linux