GNU/Linux >> Tutoriels Linux >  >> Linux

Procédure :Dépannage de base d'IPTables

Présentation

Dans cet article, discutons de quelques étapes de base que vous pouvez suivre pour résoudre les problèmes que vous pourriez rencontrer pour faire en sorte que vos règles iptables fassent ce que vous voudriez qu'elles fassent.

Prérequis

Serveur exécutant CentOS 6.x (ou toute distribution de Linux)

iptables installé et configuré (pour la configuration de base, voir Configuration de base du fichier IPTables)

Dépannage de base d'IPTables

Un ajout utile à la création de vos règles iptables consiste à configurer la journalisation. La journalisation utilise une cible spéciale dans la boîte à outils iptables qui dirige la sortie sélectionnée vers les fichiers journaux de votre système d'exploitation (dmesg ou systemd).

Sur la ligne de commande :

sudo iptables -A INPUT -j LOG --log-prefix DROPPED-INGRESS-

Ou, dans votre fichier /etc/sysconfig/iptables :

Exemple de syntaxe de journalisation

Déballons la syntaxe :

* '-A INPUT ‘ ajoute cette règle à la fin de la chaîne INPUT. N'oubliez pas que l'ordre des règles est important, donc si vous placez cette règle après une règle qui abandonne ou rejette le trafic, elle ne sera jamais utilisée. Plus d'informations à ce sujet lorsque nous discuterons du --log-prefix ci-dessous.

* '-j LOG ' saute au LOG cible. Cette cible est une cible spéciale appelée cible « non terminale ». Contrairement aux cibles les plus couramment utilisées (telles que ACCEPT , DROP , ou REJECT ), celui-ci n'empêche pas iptables d'analyser d'autres règles. Ainsi, lorsque cette règle est invoquée, elle enregistre le paquet (et peut exécuter des options supplémentaires, si elles sont spécifiées dans les options qui la suivent), puis continue d'évaluer les règles dans la même chaîne jusqu'à ce qu'elle rencontre une règle correspondante avec une cible de terminaison ou jusqu'à ce qu'elle dépasse la dernière règle de la chaîne et suit la cible par défaut.

* '--log-prefix DROPPED-INGRESS- ‘ ajoute la chaîne "DROPPED-INGRESS-" à chaque entrée de journal. Cet ajout peut être utile pour filtrer ou rechercher dans un long fichier journal. Le "--log-prefix ” peut accepter une chaîne de 256 caractères maximum. Puisque cette règle est la règle finale dans ce INPUT chaîne, cela enregistrera tout paquet qui ne correspond à aucune des règles ci-dessus et sera géré avec la politique par défaut (dans ce cas, DROP ).

Si vous voulez voir lesquelles de vos règles sont invoquées (et, peut-être tout aussi important, lesquelles ne le sont pas), vous pouvez jeter un œil à vos compteurs de paquets et de trafic. Utilisez le '-v ' à l'option 'iptables ' commande pour afficher les compteurs (ainsi que quelques informations supplémentaires) :

sudo iptables -vL INPUT

ou

sudo iptables -nvL INPUT

La sortie de l'une ou l'autre de ces commandes s'affichera dans les colonnes de gauche pour les compteurs de paquets et d'octets pour chaque règle. Le '-L ' indique que nous voulons que les règles soient répertoriées (notez que cette option particulière est en majuscule). Le '-n ' indique que nous ne voulons pas résoudre les adresses IP en leurs noms d'hôte (dans les listes plus longues, cette résolution de nom inversée peut entraîner une surcharge inutile du serveur et rendre votre dépannage extrêmement lent). Vous pouvez utiliser chaque drapeau séparément (-n -v -L , ex) ou ensemble, comme ci-dessus, mais attention :le ‘L ' doit être le dernier car il recherche d'autres entrées sous la forme du nom de la chaîne à répertorier (si rien n'est spécifié, la valeur par défaut est de répertorier toutes les chaînes dans la table de filtrage).

iptables -nvL ENTRÉE Sortie

Notez ici que j'ai un paquet qui frappe ma règle ssh tout autoriser et plusieurs frappent le premier permis RELATED/ESTABLISHED règle (cela correspondrait à ma session ssh sur ce serveur). Je peux également voir que mes règles pour autoriser le trafic ssh à partir de la plage 192.168.50.0/24 n'ont aucun résultat. Ainsi, par exemple, si quelqu'un disait qu'il ne pouvait pas accéder à ce serveur à partir de cette plage, je pouvais voir que ses tentatives n'atteignaient même pas ce serveur.

Il est tout à fait possible que vos compteurs d'octets de paquets soient suffisamment élevés pour que les valeurs soient abrégées avec un « K », un « M » ou même un « G » à la fin, correspondant à 1 000, 1 000 000 ou 1 000 000 000, respectivement. Si vous souhaitez toujours voir les décomptes non abrégés, incluez le '-x ' indicateur :

sudo iptables -nvxL INPUT

Si vous préférez ne pas avoir à gérer de grands nombres de comptes, vous pouvez réinitialiser (zéro) vos comptes avec le '-Z ' (encore une fois, notez que ce drapeau est en majuscule). Vous pouvez mettre à zéro les décomptes pour toutes les chaînes, une chaîne spécifique ou une ligne spécifique dans une chaîne. Respectivement :

sudo iptables -Z
sudo iptables -Z INPUT
sudo iptables -Z INPUT 1

Le dernier exemple ne mettrait à zéro que les compteurs pour la ligne numéro 1 dans le INPUT chaîne.

Les compteurs seraient également réinitialisés chaque fois que vous rechargez iptables (que ce soit à partir d'un redémarrage du serveur ou d'un rechargement iptables du service sudo). Cependant, ce ne sont pas les moyens les plus idéaux pour accomplir cette tâche.

Vous voudrez peut-être également obtenir un examen plus en temps réel de vos compteurs iptables. C'est ici que le "watch La commande est pratique. ‘Watch ' nous permet de répéter les mêmes commandes et de regarder la sortie de temps en temps (la valeur par défaut est toutes les 2 secondes).

sudo watch iptables -nvL INPUT

Pendant que 'watch ' lui-même ne nécessite pas d'accès sudo, si la commande que vous allez regarder le fait, vous pouvez ajouter 'sudo ‘ à la ‘watch ' commande pour avoir le privilège root pour la commande que vous souhaitez regarder. De plus, si vous souhaitez diriger la sortie surveillée via quelque chose comme 'grep ', vous voudrez mettre toute la chaîne de commande entre guillemets simples :

sudo watch 'iptables -nvL INPUT | grep tcp'

Pour sortir de 'watch ‘, appuyez sur <Ctrl-C> .

En savoir plus sur nos services d'hébergement VPS et nos serveurs privés virtuels.


Linux
  1. Dépannage de base du pool d'applications

  2. Gestion de base du pare-feu iptables

  3. Dépannage de base de Nginx

  4. CentOS / RHEL :guide de dépannage d'iptables

  5. Comment ouvrir un port sous Linux

Comment installer Iptables sur CentOS 7

Comment configurer le pare-feu iptables sous Linux

Comment :Général Linux - IPTables de base via la ligne de commande

Procédure :configuration de base des fichiers IPTables

Comment configurer un pare-feu sur Jelastic Cloud

Comment migrer les règles iptables CentOS/RHEL 6 vers le pare-feu CentOS/RHEL 7