GNU/Linux >> Tutoriels Linux >  >> Panels >> Webmin

Pare-feu Linux

Si votre système est connecté à Internet, il peut être utile de le protéger avec un pare-feu pour empêcher tout accès non autorisé. Cette page couvre le processus d'installation et de configuration d'un pare-feu Linux avec Webmin et iptables .

Introduction au pare-feu avec IPtables

Un pare-feu est un système qui se protège et protège les autres hôtes d'un réseau contre les attaques sur des réseaux non fiables, comme Internet. Il peut bloquer les paquets et les connexions en fonction de divers critères, tels que l'adresse source, l'adresse de destination, le port et le protocole. En règle générale, un pare-feu est également un routeur, transmettant des paquets entre un réseau local sécurisé et l'Internet non fiable - cependant, il est également possible qu'un système se protège uniquement.

Un système de pare-feu peut également être configuré pour cacher plusieurs hôtes derrière une seule adresse IP, en utilisant un processus connu sous le nom de NAT (Network Address Translation). En règle générale, les hôtes cachés se trouvent sur un réseau local interne utilisant un réseau IP privé (tel que 192.168.0.0) et le pare-feu a une seule adresse IP Internet. NAT permet à ces hôtes internes de communiquer avec d'autres sur Internet, même s'ils n'ont pas de véritables adresses IP publiques.

Le noyau Linux a inclus plusieurs implémentations de pare-feu différentes au fil des ans, telles que IPfwadm et IPchains. La série de noyaux 2.4 inclut le pare-feu IPtables, qui est plus puissant et flexible que ses prédécesseurs. Toutes les distributions Linux qui utilisent le noyau 2.4 ont le support IPtables activé et incluent les commandes nécessaires pour le configurer. Ce chapitre et le module Pare-feu Linux ne couvrent que la configuration d'un pare-feu à l'aide d'IPtables, et non d'anciennes implémentations comme IPchains ou IPfwadm.

Tout le trafic réseau IP est divisé en paquets, qui sont des blocs de données avec une source, une destination et des informations de protocole. Même un flux continu de données, tel que le téléchargement d'un fichier volumineux, est divisé en paquets lors de son envoi et réassemblé à sa destination. Étant donné que le pare-feu IPtables fonctionne au niveau IP, toutes ses règles et chaînes évaluent et fonctionnent sur des paquets individuels, et non sur des connexions TCP ou des requêtes HTTP.

Un pare-feu IPtables est composé de trois types d'objets différents :des tables, des chaînes et des règles. Chacune des trois tables contient deux ou trois chaînes standard et éventuellement de nombreuses chaînes personnalisées définies par l'utilisateur. Chaque chaîne contient zéro ou plusieurs règles, qui sont appliquées aux paquets reçus ou envoyés par le pare-feu pour déterminer leur sort. Les trois tables et leurs chaînes standard sont :

Filtrage de paquets (filter)
Les chaînes de paquets INPUT, OUTPUT et FORWARD de ce tableau s'appliquent respectivement aux paquets reçus, envoyés ou transférés par le pare-feu. Si le système de pare-feu agit comme un routeur, seule la chaîne FORWARD s'applique aux paquets routés. Le trafic réseau destiné au système lui-même est traité par la chaîne INPUT, et le trafic émis par processus local par la chaîne OUTPUT. Pour un système qui est un routeur ordinaire et qui ne fait aucun masquage, ou un système qui n'a besoin que d'un pare-feu pour se protéger, c'est la seule table à laquelle des règles doivent être ajoutées.
Traduction d'adresse réseau (nat)
Cette table est utilisée uniquement pour les paquets qui démarrent une nouvelle connexion. Les règles de sa chaîne PREROUTING sont appliquées aux paquets dès qu'ils sont reçus par le système pour routage, et le POSTROUTING pour les paquets sur le point de partir après routage. Les règles de la chaîne OUTPUT sont appliquées aux paquets générés localement pour modification avant routage. Des règles sont généralement ajoutées à ce tableau pour configurer le masquage, le proxy transparent ou tout autre type de traduction d'adresse.
Altération de paquets (mangle)
Cette table est utilisée uniquement pour la modification de paquets spécialisés. Il contient deux chaînes - PREROUTING pour modifier les paquets avant le routage et OUTPUT pour modifier les paquets générés localement. Cette table est rarement utilisée dans une configuration typique de pare-feu.

Lorsqu'un paquet réseau est traité par une chaîne, chaque règle de la chaîne est exécutée dans l'ordre. Chaque règle a un ensemble de conditions qui déterminent si la règle correspond ou non, et une action qui est entreprise en cas de correspondance. Cette action peut être d'accepter immédiatement le paquet, de le rejeter immédiatement, d'effectuer une modification ou de continuer l'exécution. Si la fin d'une chaîne est atteinte, son action par défaut sera prise à la place, qui consiste généralement à autoriser le passage du paquet.

La capture d'écran ci-dessous montre les tables et les chaînes traversées par un paquet, ainsi que l'ordre dans lequel elles sont vérifiées. Les paquets provenant du réseau entrent dans le diagramme en haut et sont traités par les deux chaînes PREROUTING. À ce stade, une décision est prise - les paquets destinés au système local vont vers la gauche, tandis que ceux qui sont transférés vers une autre destination prennent la branche de droite. Ceux qui partent à gauche sont traités par la chaîne des paquets entrants avant d'être livrés aux processus locaux, tels que les serveurs. Les données transférées sont traitées par les chaînes de routage Paquets transférés et Après routage avant d'être envoyées à leur destination.

Le pare-feu peut également affecter les paquets envoyés par les processus sur le système local. Celles-ci sont comparées aux trois chaînes de sortie et à la chaîne de routage après avant d'être transmises via l'interface réseau appropriée à leurs destinations. Cela signifie qu'un pare-feu IPtables peut être utilisé pour limiter les adresses auxquelles les processus locaux peuvent se connecter et les protocoles qu'ils peuvent utiliser.


An overview of IPtables

Le module Pare-feu Linux

Ce module peut être utilisé pour configurer un pare-feu sur un système Linux avec IPtables activé, ou pour modifier n'importe quelle partie d'un pare-feu existant. Il stocke la configuration du pare-feu dans un fichier de sauvegarde créé et lu par les commandes iptables-save et iptables-restore, et non dans un script shell contenant des appels à la commande iptables. Redhat, Debian et Gentoo Linux utilisent tous un fichier de sauvegarde comme celui-ci en standard, que Webmin connaît et avec lequel il travaillera.

Si vous avez créé manuellement un pare-feu à l'aide d'un script shell et que vous souhaitez utiliser ce module pour l'éditer à partir de maintenant, il devra être converti en un fichier de sauvegarde IPtables afin que Webmin puisse l'éditer.

Ce que vous devez faire est d'empêcher l'exécution de votre script personnalisé au démarrage et de dire au module de créer son propre script de configuration de pare-feu à la place.

Cela s'applique également aux pare-feu créés par des outils tels que YaST ou fBuilder, qui écrivent des scripts shell de commandes iptables. À moins que l'outil ne puisse également modifier un fichier de sauvegarde IPtables (tel que knetfilter), il ne doit pas être utilisé avec le module pare-feu Linux de Webmin, sinon ils écraseront probablement les paramètres de l'autre.

Lorsque vous entrez dans le module à partir de la catégorie Réseau, la page principale affiche généralement une liste de toutes les chaînes et règles dans le premier tableau qui en contient (généralement filtrage de paquets ), comme indiqué ci-dessous. Cependant, si Webmin détecte que les commandes iptables ou iptables-save ne sont pas installées, un message d'erreur s'affichera à la place - vérifiez votre CD de distribution ou votre site Web pour un package les contenant.

Si c'est la première fois que vous utilisez le module et qu'aucun pare-feu n'a encore été configuré sur votre système, la page principale affichera à la place un formulaire pour simplifier la création initiale du pare-feu. Trois options s'afficheront :sélectionnez-en une et cliquez sur Configurer le pare-feu bouton pour le configurer. Si nécessaire, Webmin affichera également un Activer le pare-feu au démarrage ? case à cocher qui, si elle est sélectionnée, entraînera la création d'un script de démarrage afin que le pare-feu soit également activé au démarrage. Les options de configuration du pare-feu sont :

Autoriser tout le trafic
Si sélectionné, le pare-feu sera créé "vide" et tout le trafic sera autorisé à passer.
Faire la traduction d'adresse réseau sur l'interface externe
Le pare-feu sera configuré pour NAT, afin que les hôtes d'un LAN interne puissent accéder à Internet via un hôte avec une seule adresse IP publique. Vous devez sélectionner l'interface réseau connectée à Internet dans la liste en regard de cette option, telle que ppp0.
Bloquer toutes les connexions entrantes sur l'interface externe
Si choisi, le pare-feu sera configuré pour bloquer tout le trafic entrant dans votre système sur l'interface réseau sélectionnée, à l'exception des connexions établies, des réponses DNS et des paquets ICMP inoffensifs. L'interface que vous sélectionnez doit être celle connectée à Internet, telle que ppp0.

Si c'est la première fois que le module est utilisé et que Webmin détecte qu'un pare-feu existe déjà sur votre système, ses règles s'afficheront et vous serez invité à le convertir en fichier de sauvegarde afin que le module puisse être utilisé pour le modifier . Si vous choisissez de le faire en cliquant sur Enregistrer les règles de pare-feu , toutes les tables, chaînes et règles existantes seront enregistrées en toute sécurité. Une case à cocher * Activer le pare-feu au démarrage ?* sera également affichée si nécessaire. Si elle est sélectionnée, Webmin créera un script de démarrage pour activer les règles de pare-feu enregistrées au démarrage.

Si vous choisissez de convertir une configuration de pare-feu existante créée manuellement, assurez-vous de désactiver tout script existant qui la configure au démarrage. Sinon, l'ancien script et celui créé par Webmin seront exécutés, entraînant éventuellement l'annulation des règles définies dans ce module par l'ancienne configuration manuelle.

Autoriser et refuser le trafic réseau

Pour restreindre les types de connexions et de paquets que votre pare-feu acceptera ou transmettra, vous devez créer des règles de pare-feu supplémentaires. Le meilleur endroit pour ces règles est le filtrage de paquets tableau, soit dans le tableau Paquets entrants ou Paquets transférés chaîne. Si votre pare-feu agit comme un routeur et que vous souhaitez protéger les systèmes sur le réseau sécurisé auquel il est connecté mais pas le pare-feu lui-même, les paquets transférés chaîne doit être utilisée. Cependant, si vous souhaitez protéger à la fois le pare-feu et les autres systèmes vers lesquels il achemine, des règles doivent être ajoutées aux paquets entrants chaîne.

Il est également possible de restreindre les données envoyées par votre système, qui peuvent provenir de processus locaux ou être transmises par d'autres hôtes. Pour ce faire, vous pouvez ajouter des règles aux paquets sortants chaîne. Cela peut être utile pour limiter les adresses et les ports auxquels les utilisateurs locaux peuvent se connecter, si vous le souhaitez.

Pour créer une nouvelle règle pour bloquer le trafic, les étapes à suivre sont :

  1. Sur la page principale du module, sélectionnez Filtrage de paquets dans la liste à côté de Afficher IPtable , puis cliquez dessus pour passer au tableau de filtrage.
  2. Pour ajouter une règle qui s'applique à tout le trafic entrant, cliquez sur Ajouter une règle bouton dans les Paquets entrants section. Si vous souhaitez restreindre uniquement le trafic transféré, cliquez plutôt sur le bouton sous Paquets transférés. Dans tous les cas, vous serez redirigé vers le formulaire de création de règle, illustré dans la capture d'écran ci-dessous.
  3. Modifier l'action à entreprendre à Laisser tomber , afin que les paquets correspondant à cette règle soient silencieusement ignorés par le pare-feu.
  4. Dans les Détails de l'état section, sélectionnez les conditions qui déterminent quels paquets seront mis en correspondance et donc rejetés. Seuls les paquets correspondant à toutes les conditions qui ne sont pas définis sur Ignorer sera abandonné. Voici quelques exemples de conditions à sélectionner pour bloquer certains types de trafic :
    Bloquer toutes les connexions à un certain port TCP
    Définir le protocole réseau champ à Égal à et sélectionnez TCP . Pour bloquer un port, un protocole doit toujours être sélectionné. Définissez le port TCP ou UDP de destination à égal et entrez un numéro de port dans le champ Port(s) terrain à côté. Vous pouvez bloquer plusieurs ports en saisissant une liste de numéros séparés par des virgules dans le champ Port(s) ou bloquer une plage entière en sélectionnant Plage de ports et en entrant les ports de début et de fin dans les champs à côté.
    Bloquer tout le trafic provenant d'une adresse particulière
    Définissez *l'adresse source ou le réseau* sur Égal à et entrez l'adresse IP à bloquer dans le champ à côté. Vous pouvez également bloquer un réseau entier en entrant une paire réseau/préfixe comme 130.194.164.0/24 dans le domaine. Définir l'état de la connexion à n'est pas égal et sélectionnez Connexion existante dans le menu à côté. Cette étape permettra à votre système de se connecter aux adresses bloquées, mais pas l'inverse.
    Bloquer le trafic vers une adresse particulière
    Définissez l'adresse ou réseau de destination à égal et entrez l'adresse IP ou le réseau à bloquer dans le champ à côté. Étant donné que cela empêchera également le système bloqué de se connecter au vôtre, il peut être judicieux de définir l'État de connexion à n'est pas égal et sélectionnez Connexion existante dans le menu à côté. Dans tous les cas, il est généralement judicieux de définir l'interface entrante à l'interface réseau qui est connectée à Internet (telle que ppp0), de sorte que la restriction ne s'applique pas aux connexions à partir de votre LAN local.
  5. Lorsque vous avez terminé de sélectionner les conditions, cliquez sur Créer bouton. Tant qu'il n'y a pas d'erreurs dans votre saisie, vous serez renvoyé à la page principale du module sur laquelle la nouvelle règle sera répertoriée.
  6. Pour activer la nouvelle règle, cliquez sur Appliquer la configuration bouton en bas de la page.


Le formulaire de création de règles

Les règles de chaque chaîne sont évaluées dans l'ordre de haut en bas, et l'action entreprise est déterminée par celle qui correspond en premier. Si aucune ne correspond, alors l'action par défaut de la chaîne est prise, qui est généralement d'accepter le paquet. Vous pouvez utiliser cet ordre d'évaluation pour créer une règle qui autorise une seule adresse IP, suivie d'une règle pour refuser un réseau entier. L'effet final sera que chaque hôte du réseau sera refusé sauf un.

Étant donné que l'ordre des règles est important, vous souhaiterez parfois ajouter une règle au milieu d'une chaîne existante. Pour ce faire, utilisez l'un des boutons fléchés sous Ajouter d'une chaîne colonne sur la page principale du module pour créer une nouvelle règle avant ou après une règle existante.

Les actions les plus courantes et leurs significations sont répertoriées ci-dessous. Tous ne sont pas disponibles dans toutes les chaînes et tables.

Ne rien faire
Si une règle avec cette action correspond, rien ne sera fait et le traitement continuera jusqu'à la règle suivante.
Accepter
Les paquets correspondants seront immédiatement acceptés et aucun autre traitement ne sera effectué dans la chaîne. Cependant, les règles d'autres tables peuvent toujours affecter le paquet.
Laisser tomber
Les paquets correspondants seront ignorés en silence, comme s'ils n'avaient jamais été reçus. Aucun autre traitement n'aura lieu dans cette chaîne ou toute autre.
Espace utilisateur
Les paquets seront transmis à un processus normal de l'espace utilisateur. Cette action est rarement utilisée.
Chaîne de sortie
Saute immédiatement à la fin de la chaîne et exécute son action par défaut à la place. S'il est utilisé dans une chaîne définie par l'utilisateur, le traitement reviendra à la règle qui l'a appelé.
Mascarade
Les paquets correspondants verront leur adresse source modifiée pour sembler provenir du système de pare-feu, et aucune autre règle de la chaîne ne sera traitée. Lorsque cette action est sélectionnée, vous pouvez utiliser les ports source pour le masquage pour contrôler les ports que le pare-feu utilisera pour les connexions masquées. Consultez la section Configuration de la traduction d'adresses réseau section pour plus de détails. La Mascarade l'option n'est disponible que dans la traduction d'adresse réseau table, dans la chaîne *Paquets après routage*.
NAT source
Semblable à la Mascarade option, mais mieux adaptée aux systèmes qui ont une adresse IP Internet fixe. Si sélectionné, vous pouvez utiliser les IP et les ports pour SNAT champ pour contrôler lequel est disponible dans la traduction d'adresse réseau tableau, dans le Paquets après routage chaîne.
NAT de destination
Les paquets correspondants verront leur adresse de destination et leur port modifiés en fonction des adresses IP et des ports pour le champ DNAT. C'est la base du proxy transparent. Pour en savoir plus, consultez la section Configurer un proxy transparent. section ci-dessous. Cette action n'est disponible que dans la traduction d'adresse réseau tableau, dans le Paquets avant routage et Sortie chaînes.
Redirection
Cette action redirige tous les paquets correspondants vers un port ou des ports sur le pare-feu, spécifié par le champ * Ports cibles pour la redirection*. Il peut également être utilisé pour le proxy transparent, bien que le NAT de destination soit plus flexible. L'action de redirection n'est disponible que dans la traduction d'adresse réseau tableau, dans le Paquets avant routage et Sortie Chaînes.

Vous pouvez également choisir la chaîne d'exécution option pour l'action à entreprendre , qui transmettra le paquet à la chaîne définie par l'utilisateur ou à la cible personnalisée saisie dans le champ à côté. Consultez la section *Création de votre propre chaîne* ci-dessous pour plus d'informations sur les chaînes définies par l'utilisateur. Certaines des cibles disponibles sont LOG (pour enregistrer les paquets dans syslog), MIRROR (pour renvoyer les paquets à leur expéditeur) et MARK (pour marquer un paquet pour des conditions ultérieures).

Pour chaque condition, les options Ignoré , Égal à et *N'est pas égal* peuvent être sélectionnés. Le premier signifie que la condition n'est pas utilisée du tout lors de la vérification si un paquet correspond à la règle. Le second signifie qu'un paquet doit correspondre à la condition pour qu'il corresponde à la règle entière, et le troisième signifie que le paquet ne doit PAS correspondre à la condition pour que la règle soit exécutée. Si, par exemple, la condition "Interface entrante" était définie sur "N'est pas égal à" et que eth0 était sélectionné, la règle correspondrait uniquement aux paquets entrant sur n'importe quelle interface, à l'exception de la carte Ethernet principale.

Étant donné que presque tous les protocoles réseau impliquent un trafic circulant dans les deux sens, tenter de bloquer uniquement le trafic entrant provenant d'une certaine adresse à l'aide de l'adresse ou réseau source condition bloquera également les connexions à l'adresse, car les paquets de réponse faisant partie de la connexion seront abandonnés. Il en va de même pour le blocage des données entrantes sur un port particulier à l'aide du port TCP ou UDP de destination condition - si, dans le cas peu probable, le port source choisi au hasard d'une connexion à partir de votre système correspond au port bloqué, toutes les réponses à celui-ci seront supprimées. Pour ces raisons, il est généralement judicieux, lors de la création de règles de refus, de définir l'état de la connexion condition à n'est pas égal et sélectionnez Connexion existante dans le menu à côté. Ainsi, IPtables gardera une trace des connexions sortantes établies par votre serveur et ne les bloquera pas.

Comme vous pouvez le voir, il existe de nombreuses conditions différentes qui peuvent être combinées pour créer des règles assez complexes. Pour en savoir plus sur le rôle de chacune des conditions disponibles, consultez la section *Conditions des règles de pare-feu* ci-dessous. Parce qu'il y a tellement de conditions, Webmin vous permet de créer de nouvelles règles qui sont presque identiques à celles existantes. Pour ce faire, cliquez sur une règle existante pour la modifier et utilisez la règle de clonage en bas de la page pour accéder au formulaire de création de règle avec toutes les conditions et actions définies en fonction de la règle d'origine.

Modifier l'action par défaut d'une chaîne

Les paquets qui ne correspondent à aucune règle d'une chaîne seront traités à l'aide de l'action par défaut, qui consiste généralement à accepter le paquet. Sur la page principale du module, l'action par défaut pour chaque chaîne est affichée à côté de Définir l'action par défaut sur bouton. Pour le changer, les étapes à suivre sont :

  1. Sélectionnez la nouvelle action dans le menu à côté du bouton *Définir l'action par défaut sur*. Seul le Accepter , Déposer , Espace utilisateur et Chaîne de sortie des actions sont disponibles - voir la section * Autoriser et refuser le trafic réseau * ci-dessus pour leurs significations. Généralement, seul Autoriser et Déposez avoir un sens en tant qu'action par défaut.
  2. Cliquez sur Définir l'action par défaut sur bouton pour enregistrer la nouvelle valeur par défaut.
  3. Si vous passez à Supprimer , ajoutez toutes les règles de pare-feu supplémentaires nécessaires pour que votre système puisse toujours accéder à d'autres serveurs et fournir des services importants.
  4. Lorsque vous avez terminé, cliquez sur Appliquer la configuration pour activer la nouvelle valeur par défaut.

Il suffit de changer l'action par défaut en Abandonner pour les paquets entrants est un moyen facile de couper totalement votre système du réseau, et éventuellement de le rendre inutilisable. Avant de le faire, assurez-vous d'autoriser au moins les types de trafic suivants :

  • Toutes les connexions établies. Créer un Autoriser règle avec l'état de la connexion défini sur Égal à et Connexion existante choisi.
  • Connexions liées à celles qui sont établies, telles que les connexions de données FTP. Créer un Autoriser règle avec l'*État de la connexion* défini sur Égal à et Connexion associée choisi.
  • Tout le trafic sur l'interface de bouclage. Créer un Autoriser règle avec interface entrante défini sur Égal à et voilà choisi.
  • Trafic de votre système vers lui-même sur ses principales interfaces réseau. Pour chaque interface, créez une règle Autoriser avec à la fois l'*adresse ou le réseau source* et l'adresse ou réseau de destination défini sur l'adresse IP de l'interface.
  • Types ICMP sécurisés. Créez quatre Autoriser règles avec le *type de paquet ICMP* défini sur Égal à et echo-reply, destination-unreachable, source-quench et time-exceeded choisis.

Modification de l'action par défaut pour les paquets transférés sur Abandonner ne causera pas autant de problèmes - cela équivaudra simplement à désactiver complètement le transfert. Modification de l'action par défaut pour les paquets sortants sur Abandonner est une mauvaise idée car cela coupera tout accès au réseau et n'a probablement aucun sens dans la plupart des cas.

Modification des règles de pare-feu

Webmin peut être utilisé pour modifier n'importe laquelle des règles de pare-feu existantes qui ont été créées manuellement, dans un autre programme ou à l'aide de ce module. Même si le module ne prend pas en charge toutes les options de condition et d'action IPtables disponibles, vous pouvez toujours l'utiliser pour modifier en toute sécurité des règles contenant des options inconnues. Seuls ceux connus de Webmin peuvent être modifiés, et les autres resteront inchangés.

Pour modifier une règle, les étapes à suivre sont :

  1. Sur la page principale du module, sélectionnez le tableau dans lequel se trouve la règle dans la liste à côté de Afficher IPtable bouton avant de cliquer dessus.
  2. Cliquez sur l'action de la règle que vous souhaitez modifier dans le tableau de sa chaîne. Cela vous mènera à un formulaire d'édition, qui est identique au formulaire de création illustré à la Figure 19-3.
  3. Modifiez l'action ou l'une des conditions, puis cliquez sur Enregistrer bouton pour revenir à la liste des chaînes et des règles. Ou pour supprimer complètement la règle, cliquez sur Supprimer bouton.
  4. Pour rendre les modifications actives, cliquez sur Appliquer la configuration .

Les règles peuvent être déplacées de haut en bas dans leur chaîne à l'aide des flèches sous le Déplacer colonne sur la page principale. Étant donné que les règles sont évaluées dans l'ordre par le pare-feu, la modification de leur ordre peut affecter le trafic autorisé ou refusé. Chaque fois que vous créez une nouvelle règle, elle sera ajoutée à la fin de sa chaîne, il peut donc être nécessaire de la déplacer vers le haut jusqu'à la bonne position pour obtenir l'effet souhaité.

Créer votre propre chaîne

Il est possible de créer vos propres chaînes de règles personnalisées en plus des chaînes standard. La différence est qu'elles ne seront exécutées que si une règle dans l'une des chaînes standard a son action définie pour sauter explicitement à une chaîne personnalisée. Lorsque l'exécution d'une chaîne personnalisée se termine (ou d'une règle avec la chaîne de sortie l'action correspond), l'évaluation reviendra à la chaîne d'appel. Cela signifie que les chaînes personnalisées peuvent être utilisées pour définir des règles partagées par plusieurs chaînes standard, au lieu de répéter les mêmes règles à plusieurs endroits. D'une certaine manière, une chaîne personnalisée est comme un sous-programme dans un langage de programmation.

Pour créer votre propre chaîne, les étapes à suivre sont :

  1. Sur la page principale du module, sélectionnez la table dans laquelle vous voulez que la chaîne se trouve dans le menu à côté de Afficher IPtable , et cliquez sur le bouton. Les chaînes personnalisées ne peuvent être appelées qu'à partir d'autres chaînes de la même table.
  2. Saisissez le nom de votre nouvelle chaîne dans la zone de texte à côté de Ajouter une nouvelle chaîne nommée bouton, puis cliquez sur le bouton pour le créer. Les noms de chaîne doivent être uniques et sont généralement composés uniquement de lettres minuscules et de chiffres.
  3. Une fois la nouvelle chaîne créée, elle apparaîtra en bas de la page. Vous pouvez utiliser sa Ajouter une règle pour y ajouter des règles, comme avec l'une des chaînes normales.

Les chaînes personnalisées n'ont pas de politique par défaut, elles n'ont donc pas de bouton *Définir l'action par défaut sur* sur la page principale. Si l'exécution de la chaîne atteint la fin, le contrôle reviendra toujours à l'appelant. Les chaînes personnalisées peuvent cependant être supprimées à l'aide de la commande Supprimer la chaîne sous leurs tableaux de règles.

Une chaîne personnalisée peut contenir des règles qui sautent vers d'autres chaînes personnalisées. Cependant, une chaîne ne peut pas sauter vers elle-même, et vous ne pouvez pas non plus créer de boucles en sautant vers une autre chaîne pour revenir à la première. Même si cela était possible, ce serait une très mauvaise idée !

Configuration de la traduction d'adresse réseau

Si vous avez plusieurs systèmes chez vous ou au bureau connectés par un réseau local et une seule adresse IP Internet, la traduction d'adresse réseau peut être utilisée pour donner à tous ces systèmes un accès Internet presque complet. NAT cache les adresses de tous les systèmes sur le LAN interne derrière une seule adresse Internet, convertissant les adresses et les ports dans les deux sens selon les besoins. Cela permet à tous les systèmes internes d'établir des connexions avec n'importe quel hôte sur Internet, tels que des serveurs Web, des serveurs DNS, des serveurs POP3, etc. La seule limitation est que les systèmes internes ne peuvent pas recevoir de connexions d'autres hôtes Internet, ce qui peut entraîner l'échec de certains protocoles (tels que la téléphonie Internet et les jeux en réseau).

En raison de cette limitation, les systèmes internes sont protégés contre la plupart des attaques d'autres hôtes sur Internet, comme si vous deviez bloquer tous les paquets transférés entrant sur l'interface externe. NAT facilite également l'attribution des adresses IP, car il n'est pas nécessaire de s'inquiéter de manquer d'adresses Internet réelles à attribuer aux hôtes internes qui n'en ont pas vraiment besoin. Pour ces raisons, il peut être judicieux de mettre en place NAT dans votre organisation même si cela n'est pas totalement nécessaire du point de vue de la mise en réseau.

NAT fonctionne en modifiant l'adresse source et le port des paquets envoyés par les hôtes internes et acheminés via le pare-feu. L'adresse source est toujours remplacée par l'adresse IP externe du système de pare-feu et le port source par un port inutilisé choisi au hasard. Lorsqu'un paquet de réponse revient, son port de destination est utilisé pour déterminer l'adresse IP du client interne d'origine et le port vers lequel le paquet doit être transféré.

Pour configurer NAT, tout ce dont vous avez vraiment besoin est un système avec deux interfaces réseau - une pour le LAN interne et une connectée à Internet via une ligne commutée, RNIS ou haut débit. Une fois que vous avez cela, les étapes à suivre sont :

  1. Sur le réseau local interne, chaque interface Ethernet du système doit se voir attribuer une adresse sur un réseau IP privé tel que 192.168.0.0, y compris le système de passerelle.
  2. Définissez le routeur par défaut sur tous les systèmes internes sur l'adresse IP LAN du système passerelle.
  3. Assurez-vous que le transfert IP est activé sur la passerelle dans le module de configuration réseau sous Routage et passerelles. Voir NetworkConfiguration pour plus d'informations sur la façon de procéder.
  4. Sur la page principale du module Pare-feu Linux sur le système de passerelle, sélectionnez Traduction d'adresse réseau dans la liste à côté de Afficher IPtable bouton. Cliquez ensuite sur le bouton pour afficher les chaînes dans la table NAT.
  5. Cliquez sur Ajouter une règle bouton dans les Paquets après routage section, qui vous mènera au formulaire de création de règle.
  6. Définissez l'action à entreprendre à la Mascarade .
  7. Pour contrôler les ports que le pare-feu utilisera pour les connexions masquées, définissez les Ports sources pour le masquage option pour Plage de ports et entrez les numéros de port de début et de fin dans les champs à côté. Généralement, il suffit de sélectionner Tous laisser le pare-feu utiliser n'importe quel port disponible fonctionnera correctement.
  8. Modifier l'interface sortante condition à Égal à et sélectionnez l'interface réseau externe dans la liste à côté, comme ppp0.
  9. Cliquez sur le bouton Enregistrer en bas de la page pour revenir à la liste des chaînes et des règles.
  10. Cliquez sur Appliquer la configuration pour activer la nouvelle règle (et NAT).

Il est possible de combiner NAT avec d'autres règles de pare-feu dans le filtrage de paquets table pour bloquer les connexions à l'hôte du pare-feu lui-même. Vous pouvez également ajouter des règles de refus à la chaîne *Paquets après routage* pour empêcher certains hôtes internes d'accéder à Internet ou limiter les ports auxquels ils peuvent se connecter.

Les instructions ci-dessus fonctionneront sur n'importe quel réseau doté d'un système de passerelle avec une seule adresse IP Internet. Cependant, si l'adresse de votre passerelle est statique, il est préférable de sélectionner Source NAT à l'étape 6 au lieu de Masquerade . Lors de l'utilisation du masquage, toutes les connexions transférées par le pare-feu seront perdues si l'interface réseau externe tombe en panne, même si elle revient avec la même adresse IP. Si l'interface externe a une adresse assignée dynamiquement, cela n'a pas d'importance car les connexions seraient de toute façon perdues. Mais lors de l'utilisation d'une adresse IP statique, il est possible qu'une connexion soit maintenue même pendant une courte panne de réseau.

Pour l'utiliser, à l'étape 6, définissez l'action à entreprendre vers NAT source . Définissez ensuite les IP et les ports pour SNAT à plage IP et entrez l'adresse IP externe statique de votre système dans le champ à côté. Toutes les autres étapes du processus de configuration NAT sont identiques.

Configurer un proxy transparent

De nombreux réseaux utilisent des serveurs proxy comme Squid pour mettre en cache les sites Web couramment consultés et ainsi réduire la quantité de bande passante utilisée par les clients de navigation Web. Cependant, normalement, chaque client doit être configuré pour utiliser le serveur proxy au lieu d'établir des connexions directes aux sites Web. Sur un grand réseau avec de nombreux systèmes clients ou chez un FAI où ils appartiennent à de nombreuses personnes différentes, cette configuration individuelle peut être difficile. Cela est aggravé par le fait que chaque navigateur a ses propres paramètres de serveur proxy, donc si un utilisateur installe un nouveau navigateur, il n'utilisera probablement pas du tout de proxy.

Heureusement, il existe une solution :le proxy transparent. Si tous les systèmes clients accèdent à Internet via une passerelle exécutant un pare-feu IPtables, il peut être configuré pour rediriger les connexions vers le port 80 (utilisé par la plupart des sites Web) vers un serveur proxy sur un autre système. Cela signifie que les clients n'ont pas besoin d'être configurés pour accéder à un proxy, car toutes les requêtes HTTP qu'ils effectuent seront envoyées de manière transparente au serveur proxy à leur insu.

To set up transparent proxying, the steps to follow are :

  1. On the main page of the Linux Firewall module on the gateway system, select Network address translation from the list next to the Showing IPtable button before clicking it.
  2. In the Packets before routing section, click on Add rule to go to the rule creation form. The rule being added will redirect all traffic on port 80 forwarded by the firewall system to a proxy server.
  3. Set the Action to take to Destination NAT .
  4. In the IPs and ports for DNAT field, select IP range and enter the address of the proxy server system into the field next to it. If the proxy is running on the same system, enter its Ethernet IP address (not 127.0.0.1). In the field next to Port range , enter the port the proxy server is running on, such as 8080.
  5. Set the Incoming interface to Equals and select the internal LAN interface, such as eth0.
  6. Set the Network protocol to Equals and select TCP .
  7. If the proxy is on another system that is also on the internal LAN, make sure that its connections on port 80 will not be proxied by the firewall as well! To do this, set the *Source address or network* condition to Does not equal and enter the IP address of the proxy server into the field next to it. If the proxy is on a different LAN or is the firewall system, this is not necessary.
  8. Set the Destination TCP or UDP port to Equals and enter 80 into the Port(s) domaine.
  9. Click the Create button to save the rule and return to the module's main page.
  10. Click on Add rule under Packets after routing to bring up the rule creation form again. This rule will forward packets back in the other direction from the proxy to the client. If your firewall system is also running the proxy server, this rule is not necessary and you can skip to step 16.
  11. For the Action to take , select Source NAT .
  12. In the IPs and ports for SNAT field, select IP range and enter the LAN IP address of the firewall server into the field next to it.
  13. Set the Destination address or network to Equals and enter the IP address of the proxy server into the field next to it.
  14. Set the Network protocol to Equals and select TCP .
  15. Cliquez sur Créer button to add the new rule.
  16. Back on the main page, click the Apply Configuration bouton. All packets on port 80 forwarded by your firewall will now be sent to the proxy server instead.
  17. Assuming you are running the Squid proxy server (version 2.4 or above) on the proxy system, you can use Webmin to configure it. Otherwise, there is no point reading beyond this step.
  18. On the proxy system, enter the Squid Proxy Server module and click on Miscellaneous Options.
  19. Set the HTTP Accel Host field to Virtual , and the *HTTP Accel Port* to 80 .
  20. Set both the HTTP Accel With Proxy and *HTTP Accel Uses Host Header* fields to Yes.
  21. Finally, click Save to return to the main page of the Squid module, and click the Apply Changes link near the top of the page to activate the new configuration.

From now on, any HTTP requests on port 80 forwarded by your firewall will be sent to the proxy server for processing. Transparent proxying can be safely used at the same time as conventional NAT by creating a masquerade rule in the packets after routing chain, as explained in the instructions in the *Setting up network address translation* section above.

Setting up port forwarding

On a network that uses NAT to hide internal systems from the Internet, outside hosts cannot connect directly those on the internal network. This is great for security, but can be annoying if there is some internal service that you do want to make available to the outside world. For example, your mail server system may not be the firewall host, which would normal make it inaccessible from the Internet. Fortunately, there is a solution to this problem - port forwarding.

This lets you re-direct all connections to some port on the firewall system to a different host and port on your internal network. For a mail server, all data received on port 25 might be send to the same port on the host that is actually being used to host user email. Of course, this would make it impossible for your firewall system to receive email itself.

To set up port forwarding, follow these steps :

  1. On the main page of the Linux Firewall module on the gateway system, select Network address translation from the list next to the Showing IPtable button before clicking it.
  2. In the Packets before routing section, click on Add rule to go to the rule creation form. The rule being added will redirect all external traffic received by the firewall to some internal address.
  3. Set the Action to take to Destination NAT .
  4. In the IPs and ports for DNAT field, select IP range and enter the address of the internal host into the adjacent text box, such as 192.168.1.10 . In the Port range box, enter the port number on the internal host to which data should be sent, such as 25 for SMTP, 110 for POP3 or 80 for HTTP.
  5. Set the Network protocol to Equals and select TCP .
  6. In the Destination TCP or UDP port field, select Equals from the menu and enter the external port number for which forwarding should be done into the adjacent text field. Typically this will be the same as the port entered in step 4.
  7. Cliquez sur Enregistrer button to create the rule and return to the main page, and then click the Apply Configuration bouton.

The only problem with this method is that connections from inside your network to the firewall system will not be forwarded to the other host.

Firewall rule conditions

When creating a firewall rule, you can select many different conditions to control which packets the rule matches. A rule's action will only be executed if all the conditions are matched. Each condition can be in one of three states, chosen by the menu next to it on the rule creation form :

  • Ignore The condition will be totally ignored when deciding whether the rule matches or not.
  • Equals The rule will only match if the packet matches the address, port, interface or whatever was selected for this condition.
  • Does not equal The rule will only match if the packet does NOT match whatever was selected for this condition.

The available conditions and what each matches are listed in the table below. Note that some are not available in all tables and chains.

Remember that each condition is applied on a per-packet basis, and that a single TCP connection may involve multiple packets flowing in both directions.

Contenu

Voir aussi

  • Shoreline Firewall
  • Shorewall6 Firewall
  • FirewallD

Webmin
  1. Premiers pas avec les pare-feux Linux

  2. Espaces de noms Linux

  3. Comment désactiver le pare-feu sur CentOS 8 Linux

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

  5. pourquoi le pont linux ne fonctionne pas

Pare-feuD

Pare-feu IP Filter

Pare-feu Shoreline

Commande Linux tcpdump

Comment configurer le pare-feu UFW sous Linux

Top 5 des meilleurs pare-feu Linux