Firewalls, netfilter / iptables

Les deux choses nécessaires à la construction des pare-feu et de la qualité de service (QoS) avec Linux sont deux paquets nommés Netfilter et iproute. Alors que netfilter est un cadre de filtrage de paquets inclus dans les noyaux Linux 2.4 et 2.6, est iproute un colis contenant quelques utilitaires qui permettent aux utilisateurs Linux qui font de routage avancé et du traffic shaping.
Cet article est destiné à introduire les outils que nous utiliserons dans cet article. Toutefois, Netfilter et iproute sujets sont très grandes, si bien ce que je vais essayer de faire dans cet article est de présenter aux lecteurs qui ne sont pas familiers avec le sujet, avec la construction d'une belle vue d'ensemble pour les lecteurs qui connaissent déjà le sujet. Il existe deux sites web avec beaucoup de documentation sur les deux projets pour Netfilter, http://www.netfilter.org, et pour iproute, http://www.lartc.org.

netfilter / iptables

  

Netfilter est un élément très important du noyau Linux en termes de sécurité, de modifier des paquets, et la manipulation. L'extrémité avant pour Netfilter est iptables, qui "dit" le noyau ce que l'utilisateur veut faire avec les paquets IP qui arrivent en passant par, ou sortant de la machine Linux.
La plupart des caractéristiques de netfilter sont filtrage de paquets et la traduction d'adresses réseau, mais il ya beaucoup d'autres choses que nous pouvons faire avec netfilter, telles que le Packet mangling Layer 7 filtrage.
Une explication sur la façon grossière netfilter œuvres est comme ceci:

  • L'utilisateur charge le noyau de ce qu'il doit faire avec les paquets IP qui circulent dans la machine Linux en utilisant l'outil iptables.
  • La machine Linux analyse ensuite les en-têtes IP sur tous les paquets qui le traversent.
  • Si, en regardant les en-têtes IP, le noyau trouve règles de congruence, alors le paquet est manipulé selon la règle d'appariement.

Ça peut paraître très simple au début, mais c'est réellement un processus beaucoup plus compliqué. netfilter a quelques tableaux, Contenant chacune un ensemble par défaut de règles, qui sont appelées chaînes. Le tableau par défaut chargé dans le noyau est la table de filtrage, qui contient trois chaînes:

  • INPUT: Contient des règles pour les paquets destinés à la machine Linux elle-même.
  • FORWARD: Contient les règles pour les paquets que la machine Linux routes à une autre adresse IP.
  • SORTIE: Contient les règles pour les paquets générés par la machine Linux.

Ensuite, le flux de paquets à travers le pré-acheminement de la chaîne de la table de NAT, où nous pouvons faire DNAT, la redirection de port, etc
Il est logique d'être en mesure d'effectuer la conversion du réseau l'adresse de destination avant que le processus de routage se produit. Comme vous pourrez le voir dans l'article 4, où nous discutons DNAT plus en détail, DNAT est le processus de traduction d'une (généralement public) L'adresse IP en une autre (généralement privés). Cela se fait en modifiant l'adresse IP de destination en-tête des paquets IP. netfilter faut impérativement le faire avant que le noyau prend une décision de routage de sorte que le noyau va chercher la nouvelle adresse IP de destination dans le paquet IP.
Après avoir traversé les deux chaînes, le noyau Linux est une décision de routage. Il ne s'agit pas d'emplois netfilter. En analysant l'adresse IP de destination de l'en-tête de paquet IP, la boîte de Linux sait si le paquet doit être acheminé ailleurs ou qu'il lui était destinée.
Si la machine Linux est la destination pour le paquet IP, le paquet passe par la chaîne INPUT de la table mangle pour modifier des paquets. Ensuite, le paquet est passé à la table du filtre d'entrée de la chaîne, où il peut être accepté, rejeté ou abandonné. Si le paquet est accepté (par exemple une requête à un serveur web tournant sur votre machine Linux), la boîte Linux génère une réponse à ce paquet, qui traverse la table mangle OUPUT première chaîne.
Ensuite, le paquet est passé à travers la table nat SORTIE chaîne et la chaîne table filtre de sortie. À ce stade, la chaîne POSTROUTING table mangle et la chaîne POSTROUTING nat table sont analysés et le paquet est prêt à être envoyé sur l'interface correspondante.
Les chaînes présentées ici sont les chaînes prédéfinies de chaque table (filtre, nat et mangle). Cependant, les utilisateurs peuvent créer des chaînes personnalisées avec des noms personnalisés et transmettre des paquets à ces chaînes de la chaîne prédéfinie correspondant. Par exemple, si nous voulons créer des règles pour l'accès SSH à la machine Linux, nous pouvons créer une chaîne personnalisée nommée SSH, et insérer une règle dans la chaîne INPUT qui charge le noyau pour analyser la chaîne de SSH pour les paquets entrants sur le port 22 / TCP.
Les chaînes prédéfinies peuvent pas être supprimés ou renommés.

Iptables - Opérations

iptables a une syntaxe assez semblable à l'ancienne ipchains (netfilter pour les noyaux 2.2). Toutefois, les concepts de netfilter pour les noyaux 2.4 + sont totalement différentes des concepts de filtres de réseau 'pour les noyaux 2.2.
Les iptables opérations peuvent faire avec les chaînes sont les suivantes:

  • Dressez la liste des règles dans une chaîne (iptables-L Chain).
  • Changer la politique d'une chaîne (iptables-P CHAINE accepter).
  • Créer une nouvelle chaîne (iptables-N chaine).
  • Rincer une chaîne; supprimer toutes les règles (iptables-F CHAIN).
  • Supprimer une chaîne (iptables-D chaîne), que si la chaîne est vide.
  • Les compteurs à zéro dans une chaîne (iptables-Z CHAIN). Toutes les règles de chaque chaîne tient un compteur de nombre de paquets et d'octets, il appariés. Cette commande réinitialise les compteurs à zéro.

Pour les-L,-F,-D, et les opérations de Z, si le nom de la chaîne n'est pas spécifiée, l'opération est appliquée à l'ensemble du tableau, qui s'il n'est pas spécifié est par défaut la table filter.
Pour spécifier la table sur laquelle nous ne opérations, nous devons utiliser l'option-t comme tant d'iptables-t filter ...

Iptables opérations que peut exécuter sur les règles sont les suivantes:

  • Ajouter des règles à une chaîne (iptables-A)
  • Insérer des règles dans une chaîne (iptables-I)
  • Remplacer une règle d'une chaîne (iptables-R)
  • Supprimer une règle d'une chaîne (iptables-D)

Les options les plus courantes sont:-A et-D (ajouter et supprimer des règles). Habituellement, lors de la conception des pare-feu, les règles sont jointes à des chaînes.
Au cours de l'exécution, les utilisateurs se servent-I-A plus parce que souvent ils ont besoin d'insérer des règles temporaires de la chaîne.
iptables-A de l'état des lieux à la fin de la chaîne, alors que iptables-I de l'état des lieux sur le dessus des autres règles dans la chaîne. Toutefois, vous pouvez insérer une règle partout dans la chaîne en spécifiant la position où vous voulez que la règle soit dans la chaîne avec l'option-I: iptables-I chain 4 va insérer une règle à la quatrième position de la chaîne spécifiée.

La syntaxe pour ajouter une règle à une chaîne est:

iptables-A ... ...-J

Filtrage des spécifications est une partie de la règle iptables qui est utilisé par le noyau d'identifier les paquets IP pour laquelle le noyau ne l'action spécifiée par Target.

Filtrage Spécifications

Les paquets IP peuvent être identifiés dans un grand nombre de moyens en spécifiant les interfaces, les protocoles, ports, etc, à des règles iptables. La beauté, c'est que nous pouvons mélanger l'une de ces spécifications, ayant une grande flexibilité et un large éventail de sélecteurs. J'ai l'intention de ne pas couvrir tous les sélecteurs en profondeur, mais gardez à l'esprit que si vous pensez à quelque chose de logique à propos des paquets IP, vous avez toutes les chances d'identifier les paquets en utilisant des règles iptables.
Filtrage des spécifications de couche 2: Les interfaces peuvent être spécifiées comme sélecteurs avec-i et-o interrupteurs.
-i signifie "- in-interface", et-o pour "- out-interface». + Peut être utilisé pour spécifier que la chaîne de début de l'interface, par exemple-i eth + va comparer toutes les interfaces commençant par la chaîne des EPF, de sorte que nous avons spécifié toutes les interfaces Ethernet comme interfaces d'entrée pour une seule règle.
Interrupteurs Version courte (par exemple-I) et des commutateurs version longue (par exemple "- in-interface») ont absolument le même effet. Certaines personnes préfèrent utiliser les commutateurs court pour lignes de commande et les commutateurs de long pour les scripts car ils peuvent offrir une meilleure lisibilité, mais nous n'utiliserons que les commutateurs dans ce court article, même dans les scripts de s'habituer à ces lignes de commande de meilleure qualité.
Le point d'exclamation "!" représente une négation et peut être utilisé pour spécifier sur quelle interface (s) à ne pas appliquer le filtre (par exemple-i! eth1 sera pas les paquets correspondent arrivant sur eth1).

Paquets analysés dans la production et des chaînes POSTROUTING n'ont pas d'interfaces d'entrée, et il n'est donc pas autorisé à utiliser l'option-I sur ces chaînes.
Aussi, les entrées et les chaînes PREROUTING n'ont pas d'interfaces de sortie, et donc vous ne pouvez pas utiliser l'option-o pour les règles dans ces chaînes.

Couche 3: Adresse IP source (s) peut être spécifié à l'aide-s, - src, - soit la source, et l'adresse IP de destination (es) avec-d, - dst, ou - destination. Les sources ou destinations peuvent être des adresses IP, sous-réseaux, ou des noms canoniques (par exemple "-s 217.207.125.58", "-s www.packtpub.com", ou "-s 217.207.125.58/32» ont le même effet). Spécification des noms canoniques pour les hôtes qui ont plusieurs adresses IP se traduira par l'ajout du même nombre de règles que le nombre d'adresses IP du serveur DNS résout pour cet hôte au moment où les règles sont ajoutées.

Ne pas utiliser de noms canoniques sur les règles à haut risque. Par exemple, ne permettent pas l'accès SSH de ahost.anotherisp.com, car cela permettra facilement d'un homme-en-attaque de l'intercepteur.

Couche 4: Le protocole peut être spécifié en utilisant le commutateur-P, qui signifie "- Protocole". Les protocoles peuvent être spécifiés par leur numéro correspondant, soit par leur nom-TCP, UDP ou ICMP (case insensitive).
Pour le protocole ICMP, vous pouvez spécifier les types de messages ICMP en utilisant "- icmp-type". La liste des messages ICMP peut être trouvé en utilisant la commande "iptables-p icmp - help".
Pour que le protocole UDP, vous pouvez spécifier la source ou la destination des ports avec "- source-port" ou "- le sport" et "- destination-port" et "- dport".
TCP, étant le plus complet de couche 4 du protocole, a plus d'options. Vous pouvez spécifier, outre la source ou la destination ports pour le protocole UDP, "- tcp-flags", "- syn" et "- tcp-option». Flags TCP peut être «SYN ACK FIN RST URG PSH ALL AUCUNE". "- syn" est utilisé pour identifier les connexions lancement et est équivalent à "- tcp-flags SYN, RST, SYN ACK». "- tcp-option" suivi d'un numéro correspond à des paquets TCP avec l'option prévue à ce numéro.

Spécifications de filtrage peuvent combiner toutes les caractéristiques viennent d'être mentionnés, afin que nous puissions avoir une combinaison de 2 couches, 3 et 4 des spécifications dans la même règle.

Une autre chose de beau dans netfilter / iptables est que les extensions correspondants peuvent être développées séparément et ajouté plus tard. Sur le site de netfilter, il ya un grand dépôt de contrepartie des extensions appelées "patch-o-matic», à http://www.netfilter.org/projects/patch-o-matic/index.html.

Une nouvelle extension et «audace» à iptables envisage d'étendre ses capacités à partir des couches inférieures de la couche supérieure du modèle OSI, couche 7-application.

un article présenté par Philip A Clare


Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite.
Important: Cet article «pare-feux netfilter / iptables" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.


Online: 331 users browsing the articles directory