Tutoriel iptables

Tutoriel iptables

Iptable est un pare-feu de ligne de commande qui filtre les paquets en fonction des règles définies. Avec les iptables, les utilisateurs peuvent accepter, refuser ou des connexions en instance; Il est incroyablement polyvalent et largement utilisé malgré son remplacement par nftables.

Après avoir lu ce tutoriel, vous comprendrez les politiques iptables et définissez les règles iptables pour protéger votre réseau domestique.

Note: La commande sudo a été ajoutée pour les lecteurs qui ont besoin de copier-coller les règles mentionnées dans ce tutoriel iptables.

Glossaire iptables:

CIBLE: Lorsque vous utilisez des iptables, une cible est une action que vous souhaitez que les iptables appliquent lorsqu'un paquet correspond à une règle.

CHAÎNE: Une chaîne est une liste de règles; Les chaînes intégrées disponibles sont: Entrée, sortie, avant, pré -OUTIR et post-tracking.

TABLEAU: Les tables sont des fonctionnalités iptables à chaque fin. Par exemple, il existe un tableau pour les tâches de routage et une autre table pour le filtrage des tâches; Chaque tableau contient des chaînes de règles.

Les tables disponibles sont le filtre, le NAT, le brut, la sécurité et le mange. Chaque tableau contient des chaînes intégrées (règles). La liste suivante montre quelles chaînes incluent chaque tableau:

FILTRE SAISIR SORTIR AVANT
Nat Prurotinage Postal SORTIR
BRUT Prurotinage SORTIR
MUTILER Prurotinage Postal SORTIR SAISIR AVANT
SÉCURITÉ SAISIR SORTIR AVANT

Selon l'action que vous souhaitez que les iptables fassent, vous devez spécifier un tableau en utilisant l'option -T suivie du nom du tableau. Dans ce tutoriel, l'option -t n'est pas utilisée. Ce tutoriel se concentre sur les fins de filtrage en utilisant la table de filtre appliquée par défaut lorsque l'option -t n'est pas adoptée. En lisant ce tutoriel, vous apprendrez certains des concepts mentionnés ci-dessus.

Comment installer:

Pour installer iptables sur Debian et ses distributions Linux basées sur l'exécution:

sudo apt install iptables -y

Avant d'installer iptables sur les distributions Linux basées sur RedHat, vous devez désactiver le pare-feu en fonctionnant:

Sudo Systemctl Stop Firewalld
sudo systemctl désactiver le pare-feu
Masque Sudo Systemctl - MAINTENANT

Puis installez les iptables en exécutant:

sudo yum install iptables-Services
sudo systemctl start iptables
sudo systemctl start ip6tables
sudo systemctl activer les iptables
sudo systemctl activer ip6tables
sudo systemctl start ip6tables

Commencer avec iptables:

Avant de commencer, vérifiez les règles précédentes en demandant aux iptables d'énumérer les politiques et les règles existantes en utilisant le paramètre -l (-List).

sudo iptables -l

La sortie ci-dessus montre 3 lignes: Entrée de chaîne, chaîne en avant et sortie de chaîne. Où SAISIR fait référence aux politiques concernant le trafic entrant, SORTIR fait référence aux politiques appliquées au trafic sortant et AVANT fait référence aux politiques de routage.

La sortie montre également qu'il n'y a pas de règles définies, et toutes les politiques définies sont acceptées.

Il existe 3 types de politiques: Accepter, rejeter et tomber.

La politique ACCEPTER Permet les connexions; la politique REJETER refuse les connexions renvoyant une erreur; la politique GOUTTE refuse les connexions sans produire d'erreurs.
Lors de l'utilisation GOUTTE, UDP Les paquets sont abandonnés et le comportement sera le même que la connexion à un port sans service. TCP Les paquets retourneront un ACK / RST, qui est la même réponse qu'un port ouvert sans service. Lors de l'utilisation REJETER, Un paquet ICMP renvoie la destination inaccessible à l'hôte source.

Lorsque vous traitez avec les iptables, vous avez d'abord besoin de définir les trois politiques pour chaque chaîne; Après cela, vous pouvez ajouter des exceptions et des spécifications. L'ajout de politiques ressemble à ceci:

entrée sudo iptables -p
SUPPORT IPTABLES AUDO -P
sudo iptables -p en avant

Politiques permissives et restrictives iptables:

Vous pouvez appliquer les iptables avec une politique permissive en acceptant toutes les connexions entrantes, sauf pour celles-ci, vous abandonnez ou rejetez spécifiquement. Dans ce cas, chaque connexion est autorisée à moins que vous ne définissiez une règle pour la refuser spécifiquement.

Au contraire, les politiques restrictives refusent toutes les connexions, à l'exception de celles que vous acceptez spécifiquement. Dans ce cas, chaque connexion est refusée à moins que vous ne définissiez une règle pour l'accepter.

Application d'une politique restrictive avec iptables:

L'exemple suivant montre comment appliquer une politique restrictive avec les iptables en supprimant tout le trafic entrant, sauf pour les autorisés.

Bloquer le trafic entrant.

IMPORTANT: L'application des 3 règles suivantes peut vous laisser sans connexion Internet. En utilisant les règles mentionnées dans «Iptables Règles en apprentissage et états iptables», vous ajoutez les exceptions nécessaires pour restaurer votre accès à Internet. Vous pouvez cohérencer les iptables sudo -f Sudo -f pour rincer les règles.

Vous pouvez bloquer tout le trafic entrant, permettant uniquement au trafic sortant de parcourir le Web et pour les applications dont vous avez besoin.

Sudo iptables -p Drop d'entrée
SUDO IPTABLES -P SORTIE ACCEPTER
sudo iptables -p drop en avant

Où:

-P = politique

Sudo iptables -p Drop d'entrée: Demandez à Iptables de refuser tout le trafic entrant sans répondre à la source.

SUDO IPTABLES -P SORTIE ACCEPTER: définit une politique d'acceptation de trafic sortant.

sudo iptables -p drop en avant: Instruise iptables de ne pas exécuter les tâches de routage abandonnant tous les paquets destinés à un hôte différent (essayant de passer par le dispositif à feu de feu) sans réponse.

L'exemple ci-dessus permet de parcourir le Web et les connexions démarrées par l'appareil local (-Portie P Accepter) mais empêchera les connexions initiées par un autre hôte (-P Drop d'entrée) Comme SSH tente d'accéder à votre appareil et non à renvoyer des messages d'erreur.

Lorsque vous activez les iptables avec une politique restrictive comme dans l'exemple précédent, vous devez ajouter des règles pour ajuster votre configuration. Par exemple, si vous gardez la configuration mentionnée ci-dessus sans ajouter une exception raisonnable pour l'interface de bouclage (LO), certaines applications peuvent ne pas fonctionner correctement. Vous devrez également autoriser le trafic entrant appartenant à ou lié à une connexion démarrée par votre appareil.

Règles iptables et états iptables

Il est essentiel de comprendre que les iptables appliquent les règles par ordre. Lorsque vous définissez une règle après une règle précédente, la deuxième règle réécrira le dernier si un paquet correspond à la même règle.

J'aime l'exemple précédent; Vous avez bloqué tout le trafic entrant, vous devez ajouter des exceptions pour l'interface de bouclage; Cela peut être réalisé en ajoutant le paramètre -a (append).

sudo iptables -a entrée -m Conntrack --ctstate établi, associé -j accepter
sudo iptables -a sortie -m Conntrack --ctstate établi -j accepter

Le module (-m) Conntrack -ctstate Établi, lié demande aux iptables de confirmer si l'état de connexion est Établi ou lié à une connexion existante avant d'appliquer la politique de règle définie.

Il y a 4 états possibles que les iptables peuvent vérifier:

Iptables State Nouveau: Le paquet ou le trafic que vous autorisez ou bloquez essaie de démarrer une nouvelle connexion.

État iptables établi: Le paquet ou le trafic que vous autorisez ou bloquez fait partie d'une connexion établie.

Iptables State lié: Le paquet ou le trafic commence une nouvelle connexion mais est lié à une connexion existante.

État iptables invalide: Le paquet ou le trafic est inconnu sans l'état.

La première ligne de l'exemple ci-dessus demande aux iptables d'accepter les paquets entrants du trafic provenant ou lié aux connexions démarrées par votre appareil. La deuxième ligne demande aux iptables d'accepter uniquement le trafic sortant à partir de connexions déjà établies.

Iptables Ajouter pour accepter le trafic de bouclage et définir les interfaces:

L'interface de bouclage est utilisée par des programmes qui doivent interagir avec le localhost. Si vous n'autorisez pas le trafic de bouclage, certaines applications peuvent ne pas fonctionner.

La commande suivante permet les connexions de bouclage:

sudo iptables -a entrée -i lo -j accepter
sudo iptables -a sortie -o lo -j accepter

Où -i et -o sont utilisés pour spécifier le périphérique réseau pour le trafic entrant (-I) et le trafic sortant (-o).

Application d'une politique permissive avec iptables:

Vous pouvez également définir une politique permissive permettant à tout le trafic, à l'exception de la suppression ou du rejet spécifié. Vous pouvez activer tout sauf une gamme IP ou IP spécifique, ou vous pouvez refuser des paquets en fonction de leurs en-têtes, parmi plus de possibilités.

L'exemple suivant montre comment appliquer une politique permissive permettant à tout le trafic, à l'exception d'une gamme IP bloquée pour le service SSH.

Sudo iptables -p entrée accepter
SUDO IPTABLES -P SORTIE ACCEPTER
sudo iptables -p drop en avant
sudo iptables -a entrée -p tcp --dport 22 -m iprange --src-range 192.168.1.100-192.168.1.110 -J Rejet

L'exemple ci-dessus applique une politique permissive mais bloque l'accès SSH à tous les IP appartenant à la gamme 192.168.1.100 et 192.168.1.110.

Où -p spécifie le protocole, -dport (ou -destination-port), le port de destination (22, SSH), et le module iprange avec l'argument -Src-Range (plage source) permet de définir la plage IP. L'option -j (-Jump) informe les iptables quoi faire avec le paquet; Dans ce cas, nous représentons le rejet.

Bloquer des ports avec iptables

L'exemple suivant montre comment bloquer un port spécifique pour toutes les connexions, le port SSH.

sudo iptables -a entrée -p tcp --destation-port 22 -j drop

Sauver les changements iptables

Les règles iptables ne sont pas persistantes; Après le redémarrage, les règles ne seront pas restaurées. Pour rendre vos règles persistantes, exécutez les commandes suivantes où la première ligne enregistre les règles dans le fichier / etc / iptables.en haut.Règles, et la deuxième ligne est de créer le fichier pour les iptables pour commencer après le redémarrage.

sudo iptables-save> / etc / iptables.en haut.règles
nano / etc / réseau / if-pre-up.d / iptables

Ajoutez ce qui suit dans le fichier et fermez les modifications de sauvegarde (Ctrl + X).

#!/ bac / sh
/ sbin / iptables-restore < /etc/iptables.up.rules

Enfin, donnez les autorisations d'exécution du fichier en exécutant:

chmod + x / etc / réseau / if-pre-up.d / iptables

Règles de rinçage ou de suppression iptables:

Vous pouvez supprimer toutes vos règles iptables en exécutant la commande suivante:

sudo iptables -f

Pour supprimer une chaîne spécifique comme l'entrée, vous pouvez fonctionner:

sudo iptables -f

Conclusion:

Les iptables sont parmi les pare-feu les plus sophistiqués et les plus flexibles du marché. En dépit d'être remplacé, il reste l'un des logiciels défensifs et de routage les plus répartis.

Son implémentation peut être rapidement apprise par les nouveaux utilisateurs de Linux ayant une connaissance de base de TCP / IP. Une fois que les utilisateurs comprennent la syntaxe, la définition des règles devient une tâche facile.

Il y a beaucoup plus de modules et d'options supplémentaires qui n'étaient pas couverts par ce tutoriel introductif. Vous pouvez voir plus d'exemples iptables chez iptables pour les débutants.

J'espère que ce tutoriel iptables a été utile. Continuez à suivre l'astuce Linux pour plus de conseils et de tutoriels Linux.