Home (autres pages) Léa Linux TrustOn Me OpenVPN French Linux Doc Project

Configuration globale du parefeu

  • Connexion cliente depuis le parefeu
  • Connexion Serveur sur notre parefeu
  • Connexion cliente d'une machine du LAN

Télécharger les scripts du firewall que j'utilise : firewall-1.0.tgz

Le script firewall.sh est basé sur fwscripts de Bob Sully (rcs@malibyte.net) dont j'ai inclus un morceau de HomeLANSecurity plus quelques modifications personnelles dont une sécurité accrue sur le service SSH (avec une limite de 4 connexions par minute, ce qui limite le scan du port SSH)

L'archive contient aussi quelques scripts personnels facilitant la mise en place "addons", très utile et simple...

Configuration globale du parefeu

Connexion cliente depuis le parefeu

Nous souhaitons, par exemple, pouvoir nous connecter sur un serveur Web comme "www.google.fr". Que se passe t'il ? nous envoyons une trame TCP/IP vers l'adresse "www.google.fr"sur le port 80, qui est le port normalisé HTTP. Nous sortons... Notre police, par défaut, c'est de refuser tout ce qui sort, donc depuis notre linux, nous ne pourrons pas joindre le serveur Web de google.... Il faut ajouter une règle pour dire "tout ce qui sort pour se connecter sur un serveur Web à le droit de sortir".... "Tout ce qui sort", on va donc rajouter une règle dans la chaîne OUTPUT... "pour se connecter sur un serveur Web", donc quand on va vouloir se connecter sur le port 80 par le protocole TCP (car le protocole HTTP est basé sur TCP, pas UDP) "doit être accepté", on spécifie que ce type de trame doit être acceptée. Ce qui donne, en langage iptables :

# iptables -A OUTPUT -p TCP --dport 80 -j ACCEPT
   -A OUTPUT: on ajoute une règle à la châine OUTPUT
   -p TCP : la règle concerne le protocole TCP, nécessaire pour pouvoir utiliser l'argument --dport 80
   --dport 80 : destination port 80, on spécifit le port destination du paquet, qui est 80
   -j ACCEPT : on accepte de laisser le paquet

Problème ! Le serveur Web va répondre ! et donc une trame va être retournée à notre parefeu et comme la police par défaut pour tout ce qui arrive est de bêner, notre trame sera bênée et on ne pourra toujours pas se connecter sur le serveur Web ! Eh oui, il faut se TOUJOURS se soucier de l'aller comme du retour ! Enfin, on aurait pu tout aussi bien changer la politique par défaut en acceptant tout ce qui rentre ou tout ce qui sort mais dans ce cas-là, il n'y a plus d'intérêt.... Donc on veut accepter les trames qui ont pour origine un serveur Web... ce qui donne en langage iptables :

# iptables -A INPUT -p TCP --sport 80 -j ACCEPT
   -A INPUT: on ajoute une règle à la châine OUTPUT
   -p TCP : la règle concerne le protocole TCP, nécessaire pour pouvoir utiliser l'argument --sport 80
   --sport 80 : source port 80, on spécifit le port source du paquet
   -j ACCEPT : on accepte de laisser le paquet

Maintenant, la réponse de notre requête HTTP revient sur notre parefeu et est acceptée !


Connexion Serveur sur notre parefeu

Par exemple, on fait tourner un serveur HTTP sur notre parefeu et l'on veut autoriser la connexion depuis l'internet. Cela signifie qu'un processus écoute sur le port 80.

Maintenant, la gymnastique des règles étant acquise, il paraît évident qu'il faut commencer par accepter les paquets en INPUT pour qu'elle arrive sur notre serveur Apache et qu'ensuite nous autorisions le paquet réponse à sortir de notre parefeu pour qu'elle soit envoyée au client :

On autorise les paquets à destination de notre serveur WEB, c'est à dire les paquets pour port destination le port 80
# iptables -A INPUT -p TCP --dport 80 -j ACCEPT

On autorise les paquets ayant pour port source le port 80, c'est à dire les paquets réponses de notre serveur WEB, à sortir
# iptables -A OUTPUT -p TCP --sport 80 -j ACCEPT

Connexion cliente d'une machine du LAN

Une des machines du LAN veut se connecter sur "www.google.fr". Elle va envoyer la requête à sa passerelle, notre parefeu, qui va "relayer" sur Internet puis transmettre la réponse à notre machine. La requête va arriver sur l'interface "INSIDE" et doit être envoyé sur l'interface "OUTSIDE". Ce transfert s'appelle le "FORWARDING". La réponse revient et l'on doit "forwarder" de nouveau de l'interface "OUTSIDE" vers l'interface "INSIDE". La passerelle va relayer la requête et va donc être cliente du serveur Web "www.google.fr". On l'a vu précédement, voici ce que cela donne :

Ces deux règles sont très permissives... On pourrait ajouter des contraintes sur les adresses sources et cibles. Par exemple :

On autorise les paquets à destination d'un serveur WEB à passer de l'INSIDE vers l'OUTSIDE (et plus de l'outside vers l'inside)
# iptables -A FORWARD -p TCP -s 192.168.0.0/24 -d 0.0.0.0/0 --dport 80 -j ACCEPT

On autorise les paquets ayant pour port source le port 80, c'est à dire les paquets réponses d'un serveur WEB, à passer de l'OUTSIDE vers l'INSIDE
# iptables -A FORWARD --p TCP -s 0.0.0.0/0 -d 192.168.0.0/24 --sport 80 -j ACCEPT
Me contacter | ©2004-2005 Raum