Important :

Le présent wiki a été migré vers wiki.archlinux.org.

Ce Wiki a été archivé. Toute contribution doit donc désormais se faire là-bas. Cette page de Wiki possède donc potentiellement des informations qui ne sont plus à jour !

Accueil wiki FR sur .org

Configuration de pare-feu simple : Différence entre versions

De ArchwikiFR
m (plus de pages sans catégorie)
(Relecture de la page, la procédure décrite est incomplète)
 
Ligne 1 : Ligne 1 :
 
[[Catégorie:réseau]]
 
[[Catégorie:réseau]]
{{Warning|Cette page et en cours de traduction, et n'est pas terminée}}
+
{{Warning|Si vous suivez les indication de cette page, vous n’obtiendrez rien. L'article n'explique pas comment enregistrer les règles...
  
Cette page vous explique comment configurer un pare-feu simple en utilisant [[iptables]]. Cette page explique aussi le sens des règles et pourquoi elles sont nécessaires. Pour plus de simplicité, ce document est constitué de deux sections, la première traite de l'installation des règles pour une machine unique, et le second de la mise en place d'une passerelle NAT.
+
En attendant que celui-ci soit complet reportez-vous à l'article [[iptables]]}}
 +
 
 +
Cette page vous explique comment configurer un pare-feu simple en utilisant [[iptables]]. Cette page explique aussi le sens des règles élémentaires et pourquoi elles sont nécessaires.
 +
 
 +
{{Note| Ce document se veut un document «pratique», et ne dispense pas de la lecture de la page [[Iptables]], seule référence en cas de problème.}}
  
 
{{Warning | L'ordre d'après lesquelles les règles sont exécutées a un effet sur le fonctionnement du pare-feu. Si vous êtes connecté par SSH, vous pouvez interrompre votre connexion. Il est donc recommandé de configurer votre pare-feu dans une session locale.}}
 
{{Warning | L'ordre d'après lesquelles les règles sont exécutées a un effet sur le fonctionnement du pare-feu. Si vous êtes connecté par SSH, vous pouvez interrompre votre connexion. Il est donc recommandé de configurer votre pare-feu dans une session locale.}}
  
 
+
== Généralités ==
== Préambule ==
 
  
 
{{Note|Votre noyau doit être compilé avec le support pour iptables. Les noyaux 'stock' viennent déjà avec ce support}}
 
{{Note|Votre noyau doit être compilé avec le support pour iptables. Les noyaux 'stock' viennent déjà avec ce support}}
Ligne 15 : Ligne 18 :
  
 
Cette article suppose que vous n'avez aucune règle dans votre système. Pour vérifier que c'est le cas, la commande suivante liste toutes les règles actives :
 
Cette article suppose que vous n'avez aucune règle dans votre système. Pour vérifier que c'est le cas, la commande suivante liste toutes les règles actives :
 
{{Command|iptables-save|<nowiki>
 
# Generated by iptables-save v1.4.19.1 on Thu Aug  1 19:28:53 2013
 
*filter
 
:INPUT ACCEPT [50:3763]
 
:FORWARD ACCEPT [0:0]
 
:OUTPUT ACCEPT [30:3472]
 
COMMIT
 
# Completed on Thu Aug  1 19:28:53 2013</nowiki>|prompt=#}}
 
 
ou
 
  
 
{{Command|iptables -nvL --line-numbers|<nowiki>
 
{{Command|iptables -nvL --line-numbers|<nowiki>
Ligne 44 : Ligne 36 :
 
== Pare-feu pour une machine unique ==
 
== Pare-feu pour une machine unique ==
  
{{Note|Parce que iptables traite les règles en ordre du premier dans un chaîne jusqu'au dernier, il est avisé de mettre règles qui sont utilisés le plus souvent sont en haut. Bien sûr il y a une limite, dépendent de la complexité des règles. Il y a un coût associé à chaque règle dans une chaîne, donc les règles ne doivent être réorganisées qu'après avoir vu les compteurs byte/trafic.}}
+
{{Note|Étant donné qu'[[iptables]] traite les règles en ordre du premier dans un chaîne jusqu'au dernier, il est avisé de mettre règles qui sont utilisés le plus souvent sont en haut. Bien sûr il y a une limite, dépendante de la complexité des règles. Il y a un coût associé à chaque règle de la chaîne, donc les règles ne doivent être réorganisées qu'après avoir vu les compteurs byte/trafic.}}
  
 
=== Créer les chaînes nécessaires ===
 
=== Créer les chaînes nécessaires ===
Ligne 70 : Ligne 62 :
  
 
Cette chaîne est responsable pour les paquets qui viennent de l'extérieur de notre système et forme la mise au point de nos efforts pour sécuriser le système. Pour commencer, comme les exemples précédents on va définir la stratégie défaut de ne pas accepter et en suite définir les exemptions. Cette stratégie de définir ce qui est permis et de rejeter tout le reste est la façon le plus fiable pour construire les pare-feux.
 
Cette chaîne est responsable pour les paquets qui viennent de l'extérieur de notre système et forme la mise au point de nos efforts pour sécuriser le système. Pour commencer, comme les exemples précédents on va définir la stratégie défaut de ne pas accepter et en suite définir les exemptions. Cette stratégie de définir ce qui est permis et de rejeter tout le reste est la façon le plus fiable pour construire les pare-feux.
 
  
 
{{Warning|Si vous êtes connecté par SSH, la commande suivante va vous déconnecter et vous ne pourrez pas vous reconnecter ! Pour éviter cette problème: (1) Ajoutez la règle pour permettre les connections déjà établies (pour que votre session reste ouverte), (2) Ajoutez une règle pour permettre les connections SSH (pour que vous puissiez vous reconnecter), (3) définissez la stratégie par défaut}}
 
{{Warning|Si vous êtes connecté par SSH, la commande suivante va vous déconnecter et vous ne pourrez pas vous reconnecter ! Pour éviter cette problème: (1) Ajoutez la règle pour permettre les connections déjà établies (pour que votre session reste ouverte), (2) Ajoutez une règle pour permettre les connections SSH (pour que vous puissiez vous reconnecter), (3) définissez la stratégie par défaut}}
 
  
 
  iptables -P INPUT DROP
 
  iptables -P INPUT DROP

Version actuelle datée du 4 février 2021 à 09:02

Attention : Si vous suivez les indication de cette page, vous n’obtiendrez rien. L'article n'explique pas comment enregistrer les règles... En attendant que celui-ci soit complet reportez-vous à l'article iptables

Cette page vous explique comment configurer un pare-feu simple en utilisant iptables. Cette page explique aussi le sens des règles élémentaires et pourquoi elles sont nécessaires.

Note : Ce document se veut un document «pratique», et ne dispense pas de la lecture de la page Iptables, seule référence en cas de problème.
Attention : L'ordre d'après lesquelles les règles sont exécutées a un effet sur le fonctionnement du pare-feu. Si vous êtes connecté par SSH, vous pouvez interrompre votre connexion. Il est donc recommandé de configurer votre pare-feu dans une session locale.

Généralités

Note : Votre noyau doit être compilé avec le support pour iptables. Les noyaux 'stock' viennent déjà avec ce support

Premièrement, installer les utilitaires nécessaires pour manipuler le pare-feu: iptables, ou vérifier qu'ils sont déjà installeé avec la commande :

iptables --version

Cette article suppose que vous n'avez aucune règle dans votre système. Pour vérifier que c'est le cas, la commande suivante liste toutes les règles actives :

# iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 156 packets, 12541 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 82 packets, 8672 bytes)
num   pkts bytes target     prot opt in     out     source               destination

S'il y a déjà des règles, vous pouvez les retirer en chargeant le fichier exemplaire d'un iptables vierge.

iptables-restore < /etc/iptables/empty.rules

Pare-feu pour une machine unique

Note : Étant donné qu'iptables traite les règles en ordre du premier dans un chaîne jusqu'au dernier, il est avisé de mettre règles qui sont utilisés le plus souvent sont en haut. Bien sûr il y a une limite, dépendante de la complexité des règles. Il y a un coût associé à chaque règle de la chaîne, donc les règles ne doivent être réorganisées qu'après avoir vu les compteurs byte/trafic.

Créer les chaînes nécessaires

Pour cette configuration simple, on va créer deux chaînes qu'on va utiliser pour ouvrir les ports sur le pare-feu.

iptables -N TCP
iptables -N UDP

Ces chaînes peuvent avoir les noms de votre choix, ici on les choisit pour représenter les paquets TCP et UDP pour ce qu'on veut écrire des règles.

La chaîne FORWARD

Comme cette machine ne veut pas envoyer les paquets pour les autres machines, on ne veut pas accepter les paquets dans la chaîne FORWARD. Donc on peut définir la stratégie défaut de ne pas accepter ces paquets:

iptables -P FORWARD DROP 

La chaîne OUTPUT

On n'a pas l'intention de filtrer le trafic qui sort de notre machine, donc nous définissions par défaut la stratégie qui consiste à accepter tous les paquets qui sont destinés à l'extérieur.

iptables -P OUTPUT ACCEPT

La chaîne INPUT

Cette chaîne est responsable pour les paquets qui viennent de l'extérieur de notre système et forme la mise au point de nos efforts pour sécuriser le système. Pour commencer, comme les exemples précédents on va définir la stratégie défaut de ne pas accepter et en suite définir les exemptions. Cette stratégie de définir ce qui est permis et de rejeter tout le reste est la façon le plus fiable pour construire les pare-feux.

Attention : Si vous êtes connecté par SSH, la commande suivante va vous déconnecter et vous ne pourrez pas vous reconnecter ! Pour éviter cette problème: (1) Ajoutez la règle pour permettre les connections déjà établies (pour que votre session reste ouverte), (2) Ajoutez une règle pour permettre les connections SSH (pour que vous puissiez vous reconnecter), (3) définissez la stratégie par défaut
iptables -P INPUT DROP

Chaque paquet qui est reçu par la carte de réseau passera à travers la chaîne INPUT avant tout, s'il est destiné à cette machine. Dans cette chaîne on choisit quels paquets vont être acceptés.

La première règle qu'on va ajouter à cette chaîne autoriserait les paquets qui font partie d'une connexion qui est déjà établie ou les paquets qui sont liés à des connexions qui sont déjà établies comme les erreurs ICMP, ou des réponses ICMP. ICMP signifie Internet Control Message Protocol et peut être très important pour gérer la congestion et ajuster la taille maximale des paquets qui peuvent être transmis (MTU). Ces messages sont acceptés par cette règle.

L’état de connexion ESTABLISED implique que soit une autre règle a autorisé la connexion initiale --cstate NEW, soit la connexion était déjà en cours quand la règle a été ajoutée.

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

La seconde règle acceptera tout le trafic qui vient de l'interface "loopback" (lo), qui est nécessaire pour le fonctionnement de beaucoup de services.

Note : Vous pouvez ajouter d'autres interfaces qui acceptent tous les paquets, si vous ne voulez pas que le pare-feu bloque les communications sur ces interfaces. Soyez averti que si vous avez une configuration NAT qui envoie du trafic à cette interface, les autres règles n'auront pas d'effet et tout le trafic passera à travers le pare-feu
iptables -A INPUT -i lo -j ACCEPT