logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:reseau:iptables-pare-feu-pour-une-passerelle [14/10/2014 16:49]
Hypathie [La table NAT]
doc:reseau:iptables-pare-feu-pour-une-passerelle [15/10/2014 05:53]
Hypathie [Un pare-feu avancé pour le routeur-debian]
Ligne 10: Ligne 10:
   * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​pid=99819#​p99819 | Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))    * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​pid=99819#​p99819 | Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) 
  
-**Nota : Au programme, description avancée de la table NAT (iptables), et des protocoles ​imcp et tcp (ssh, FTP ... logés) ; pour la mise en place d'un pare-feu iptables sur un système debian faisant office de routeur, muni de deux cartes ethernet. **+**Nota : Au programme, description avancée de la table NAT (iptables), et des protocoles ​ICMP et TCP (ssh, FTP ... logés) ; pour la mise en place d'un pare-feu iptables sur un système debian faisant office de routeur, muni de deux cartes ethernet. **
  
 Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
Ligne 148: Ligne 148:
 rtt min/​avg/​max/​mdev = 0.338/​0.409/​0.546/​0.098 ms</​code>​ rtt min/​avg/​max/​mdev = 0.338/​0.409/​0.546/​0.098 ms</​code>​
  
 +=)
  
-  *Par contre le ping de l'​ordinateur A (192.168.0.0/​22) vers l'​ordinateur B (192.168.1.0/​22)+  * Par contre le ping de l'​ordinateur A (192.168.0.0/​22) vers l'​ordinateur B (192.168.1.0/​22)
 <code user>​ping 192.168.1.2</​code>​ <code user>​ping 192.168.1.2</​code>​
 <​code>​PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. <​code>​PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
Ligne 155: Ligne 156:
 --- 192.168.1.2 ping statistics --- --- 192.168.1.2 ping statistics ---
 3 packets transmitted,​ 0 received, 100% packet loss, time 1999ms</​code>​ 3 packets transmitted,​ 0 received, 100% packet loss, time 1999ms</​code>​
 +
 +:-|
  
 Et oui, l'​ordinateur A n'est pas derrière la passerelle, et même si sa table de routage est correctement configurée,​ elle ne peut lui indiquer la route vers le sous réseau 192.168.1.0/​24 dont les adresses IP sont, pour tout réseau extérieur au réseau B, y compris le réseau A, identiques à l'IP de la passerelle.\\ ​ Et oui, l'​ordinateur A n'est pas derrière la passerelle, et même si sa table de routage est correctement configurée,​ elle ne peut lui indiquer la route vers le sous réseau 192.168.1.0/​24 dont les adresses IP sont, pour tout réseau extérieur au réseau B, y compris le réseau A, identiques à l'IP de la passerelle.\\ ​
Ligne 192: Ligne 195:
 Pour se l'​éviter,​ il faut un script init.d (update-rc.d)\\ ​ Pour se l'​éviter,​ il faut un script init.d (update-rc.d)\\ ​
 Ne le faites pas sur la passerelle, à la limite sur l'​ordinateur A.\\  Ne le faites pas sur la passerelle, à la limite sur l'​ordinateur A.\\ 
-Sur la passerelle, le suivi de connexion pour le protocole ​imcp devrait être suffisant.\\ ​+Sur la passerelle, le suivi de connexion pour le protocole ​ICMP devrait être suffisant.\\ ​
 Et pour l'​ordinateur A, grâce à la passerelle et à la maîtrise du DNAT/SNAT, on pourrait faire en sorte que l'​ordinateur reçoive un ping de la passerelle quand elle reçoit un ping à destination du réseau B. Et pour l'​ordinateur A, grâce à la passerelle et à la maîtrise du DNAT/SNAT, on pourrait faire en sorte que l'​ordinateur reçoive un ping de la passerelle quand elle reçoit un ping à destination du réseau B.
 </​note>​ </​note>​
Ligne 320: Ligne 323:
 iptables -P OUTPUT ACCEPT iptables -P OUTPUT ACCEPT
 </​code>​ </​code>​
-INPUT et OUTPUT, pour ne pas avoir à répéter ce rappel, plus bas, quand nous mettrons en place les règles ​de ces chaînes INPUT et OUTPUT de la table FILTER.+INPUT et OUTPUT, pour ne pas avoir à répéter ce rappel, plus bas, quand nous mettrons en place les règles ​des chaînes INPUT et OUTPUT de la table FILTER.
  
 **__Et pour redonner accès à internet à l'​ordinateur B.__** **__Et pour redonner accès à internet à l'​ordinateur B.__**
Ligne 331: Ligne 334:
   - Interdire par défaut (DROP) la chaîne FORWARD   - Interdire par défaut (DROP) la chaîne FORWARD
   - Filter ce qui passe par FORWARD   - Filter ce qui passe par FORWARD
-  - Autoriser ​les connexions ​(provisoirement) les entrées et sorties entre le <​nowiki>​LAN</​nowiki>​ et le web.+  - Autoriser (provisoirement) les entrées et sorties entre le <​nowiki>​LAN</​nowiki>​ et le web.
   - Autoriser les pings depuis le pare-feu vers l'​internet,​ uniquement si ceux-ci proviennent de connexions déjà établies ou dépendantes d'une connexion en cours.   - Autoriser les pings depuis le pare-feu vers l'​internet,​ uniquement si ceux-ci proviennent de connexions déjà établies ou dépendantes d'une connexion en cours.
   - Autoriser la réponse du ping, que ce soit depuis le réseau interne, ou de la box-machin.   - Autoriser la réponse du ping, que ce soit depuis le réseau interne, ou de la box-machin.
-  - Et bien sûr, de pas oublier après avoir flusher la table NAT, la commande avec MASQUERADE+  - Et bien sûr, ne pas oublier après avoir flusher la table NAT, la commande avec MASQUERADE
  
 (//Puisque la politique par défaut de la table FILTER des chaînes INPUT et OUTPUT n'ont pas encore été modifiées, on peut déjà tester ces commandes.//​) (//Puisque la politique par défaut de la table FILTER des chaînes INPUT et OUTPUT n'ont pas encore été modifiées, on peut déjà tester ces commandes.//​)
Ligne 389: Ligne 392:
  
   * Pour voir ce qu'on a fait :   * Pour voir ce qu'on a fait :
-<code root>​iptables -t nat -L FORWARD -t filter</​code>​+<code root>​iptables ​-L -t nat && iptables ​-L</​code>​
  
 ====Dépendance du NAT et des chaînes FILTER sur l'​interface interne (eth1)==== ====Dépendance du NAT et des chaînes FILTER sur l'​interface interne (eth1)====
Ligne 503: Ligne 506:
 Ils proviennent de la couche 2 (Liaison de données) du modèle OSI et selon le standard, il ne devrait y avoir de paquets qui utilisent la fragmentation.\\ ​ Ils proviennent de la couche 2 (Liaison de données) du modèle OSI et selon le standard, il ne devrait y avoir de paquets qui utilisent la fragmentation.\\ ​
 Lorsque cette situation se présente, nous sommes en présence d'un déni de service (DoS). Lorsque cette situation se présente, nous sommes en présence d'un déni de service (DoS).
-Nous allons donc essayer de réduire les risques en repérant ​les paquets fragmentés qui n'ont pas lieu d'​être, pour les rejeter.+Nous allons donc essayer de réduire les risques en rejetant ​les paquets fragmentés qui n'ont pas lieu d'​être.
  
   * Créons une chaîne utilisateur :   * Créons une chaîne utilisateur :
Ligne 559: Ligne 562:
   * Le type ICMP 6 : Alternate Host Address ​   * Le type ICMP 6 : Alternate Host Address ​
 Pour modifier l'​adresse hôte. Pour modifier l'​adresse hôte.
-  * Type IMCP 7 : ceux non-assignés+  * Type ICMP 7 : ceux non-assignés
   * Type ICMP 9 "​Router Advertisement"​ : voir RFC 1256   * Type ICMP 9 "​Router Advertisement"​ : voir RFC 1256
-  * Type IMCP 10 "​Routeur ICMP sollicitation"​ : voir aussi RFC 1256 +  * Type ICMP 10 "​Routeur ICMP sollicitation"​ : voir aussi RFC 1256 
-  * Type IMCP 11 "ICMP Time Exceeded"​ : pour le temps dépassé+  * Type ICMP 11 "ICMP Time Exceeded"​ : pour le temps dépassé
 <​note>​ <​note>​
 **codes**\\ ​ **codes**\\ ​
Ligne 600: Ligne 603:
 Il y a beaucoup plus de types ICMP que cela mais on peut dire que tout ce qui n'est pas expressément autorisé ci-dessus doit être bloqué. Il y a beaucoup plus de types ICMP que cela mais on peut dire que tout ce qui n'est pas expressément autorisé ci-dessus doit être bloqué.
  
-  * Nous allons donc accepter tout ceux-ci et bloquer les autres dans la table NAT:+  * Nous allons donc accepter tout ceux-ci et bloquer les autres dans la chaîne FORWARD ((nous ferons de même concernant ICMP pour les chaînes INPUT et OUTPUT plus bas quand toutes les chaînes de FILTER seront à DROP.)):
 (Nous laissons passer aussi **provisoirement** une ouverture béante pour les chaînes INPUT et OUTP (FILTER) afin de tester tout cela. (Nous laissons passer aussi **provisoirement** une ouverture béante pour les chaînes INPUT et OUTP (FILTER) afin de tester tout cela.
  
Ligne 636: Ligne 639:
 iptables -A FORWARD -s 192.168.1.0/​24 -d 192.168.0.0/​24 -p icmp\ iptables -A FORWARD -s 192.168.1.0/​24 -d 192.168.0.0/​24 -p icmp\
  ​--icmp-type echo-request -j ACCEPT  ​--icmp-type echo-request -j ACCEPT
-#pour le retour nous utilisons la dernière règle+ 
 +Pour le retour nous utilisons la dernière règle
 iptables -A FORWARD -s 192.168.0.0/​24 -d 192.168.1.0/​24 -p icmp\ iptables -A FORWARD -s 192.168.0.0/​24 -d 192.168.1.0/​24 -p icmp\
  ​--icmp-type echo-reply -j DROP  ​--icmp-type echo-reply -j DROP
 +
 #On remets "​masquerade"​ car on a flushé: #On remets "​masquerade"​ car on a flushé:
 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 </​code>​ </​code>​
 ====DROP sur INPUT et OUTPUT (chaîne filter) ==== ====DROP sur INPUT et OUTPUT (chaîne filter) ====
-À l'​étape suivante, il va falloir interdire (DROP) les chaînes INPUT et OUTPUT de la table FILTER pour tous les protocoles dont on a besoin.\\  +Cette fois, il va falloir interdire (DROP) les chaînes INPUT et OUTPUT de la table FILTER pour tous les protocoles dont on a besoin.\\  
-Mais on en finit d'​abord ​avec IMCP qu'on laisse entrer et sortir (INPUTOUTPUT) ​ce qu'on n'a laissé passer par FORWARD.+D'​abord ​pour ICMP qu'​on ​ne laisse ​plus massivement ​entrer et sortir (table FILTER à DROP pour INPUT et OUTPUT, en plus de FORWARD).\\ Attention l'ordre des règles pour IMCP sur INPUT, OUTPUT et FORWARD, comptes ici.
  
-On conserve ce qu'on a fait précédemment ​et on ajoute provisoirement ​les commandes du [[atelier:​chantier:​iptables-pare-feu-pour-un-client#​pour-les-fadas-du-scripting-shell|script pour station ​du LAN]] des autres protocoles pour la table FILTER (INPUT et OUTPUT envoyés à DROP).+On conserve ce qu'on a fait précédemment ​en ajoutant ​les commandes du [[atelier:​chantier:​iptables-pare-feu-pour-un-client#​pour-les-fadas-du-scripting-shell|script pour un client ​du LAN]] mais en tenant compte du fait qu'il y a cette fois deux interfaces réseau.
  
 <code root> <code root>
Ligne 675: Ligne 680:
 iptables -A OUTPUT -o eth1 -j ACCEPT iptables -A OUTPUT -o eth1 -j ACCEPT
  
-#On garde nos règles concernant le DROP sur FORWARD (FILTER) +# On garde nos règles concernant le DROP sur FORWARD (FILTER) 
-#mais on oublie pas eth1 !+et on oublie pas eth1 !
 iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24\ iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24\
  -d 0.0.0.0/0 -p tcp -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT  -d 0.0.0.0/0 -p tcp -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT
Ligne 723: Ligne 728:
  
  
-# Les règles ​imcp pour OUTPUT et INPUT +# Les règles ​ICMP pour OUTPUT et INPUT 
 #(en y intégrant celles de testées pour FORWARD) #(en y intégrant celles de testées pour FORWARD)
  
Ligne 762: Ligne 767:
 iptables -A FORWARD -s 192.168.1.0/​24 -d 192.168.0.0/​24 -p icmp\ iptables -A FORWARD -s 192.168.1.0/​24 -d 192.168.0.0/​24 -p icmp\
  ​--icmp-type echo-request -j ACCEPT  ​--icmp-type echo-request -j ACCEPT
-#pour le retour nous utilison ​la derniere regle+ 
 +Pour le retour nous utilisons ​la dernière règle
 iptables -A FORWARD -s 192.168.0.0/​24 -d 192.168.1.0/​24 -p icmp\ iptables -A FORWARD -s 192.168.0.0/​24 -d 192.168.1.0/​24 -p icmp\
  ​--icmp-type echo-reply -j DROP  ​--icmp-type echo-reply -j DROP
Ligne 771: Ligne 777:
  
 On est content, l'​ordination B peut naviguer sur internet et les pings sont fonctionnels : On est content, l'​ordination B peut naviguer sur internet et les pings sont fonctionnels :
-  * de l'​ordinateur A vers B((on n'​oublie sa table de routage (en root)\\ ''​route add -net 192.168.1.0 gw 192.168.0.1 netmask 255.255.255.0 dev eth0''​))+  * De l'​ordinateur A vers B((on n'​oublie sa table de routage (en root)\\ ''​route add -net 192.168.1.0 gw 192.168.0.1 netmask 255.255.255.0 dev eth0''​))
 <code user>​ping 192.168.1.2</​code>​ <code user>​ping 192.168.1.2</​code>​
 <​code>​ <​code>​
Ligne 803: Ligne 809:
 Allez, il reste encore qu'une étape 8-o\\ Allez, il reste encore qu'une étape 8-o\\
  
-Il faut revenir sur les règles INPUT et OUTPUT que nous avons récupéré ​provisoirement du [[atelier:​chantier:​iptables-pare-feu-pour-un-client#​pour-les-fadas-du-scripting-shell| script pour une station du LAN]].\\ Pour la passerelle on va affiner le filtrage des règles concernant TCP et UDP.\\ Ce sera l'​occasion de mettre en place des règles pour le protocole FTP que nous n'​avons pas encore abordé.+Il faut revenir sur les règles INPUT et OUTPUT que nous avons récupérée ​provisoirement du [[atelier:​chantier:​iptables-pare-feu-pour-un-client#​pour-les-fadas-du-scripting-shell| script pour une station du LAN]].\\ Pour la passerelle on va affiner le filtrage des règles concernant TCP et UDP.\\ Ce sera l'​occasion de mettre en place des règles pour le protocole FTP que nous n'​avons pas encore abordé.
  
 Nous aurons besoin pour cela d'un rappel sur le fonctionnement du protocole TCP Nous aurons besoin pour cela d'un rappel sur le fonctionnement du protocole TCP
Ligne 901: Ligne 907:
 Tenons compte de ces rappels, pour ajouter une connexion FTP et SSH loggées, et puisqu'​on y est un petit filtrage supplémentaire au niveau des Flags TCP. Tenons compte de ces rappels, pour ajouter une connexion FTP et SSH loggées, et puisqu'​on y est un petit filtrage supplémentaire au niveau des Flags TCP.
  
-<​code ​text firewall_gateway.sh>​+<​code ​bash firewall_gateway.sh>​
 #!/bin/sh #!/bin/sh
 ### BEGIN INIT INFO ### BEGIN INIT INFO
Ligne 1004: Ligne 1010:
    
    
-# Les règles ​imcp pour OUTPUT ​ INPUT et FORWARD+# Les règles ​ICMP pour OUTPUT ​ INPUT et FORWARD
    
 /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
Ligne 1110: Ligne 1116:
 </​code>​ </​code>​
  
-Et voilà, ​pour l'​installation,​ suivre la même méthode que pour [[atelier:​chantier:​iptables-pare-feu-pour-un-client#​firewall-clientsh-comme-script-init|firewall-client comme script init]]. ​ ^_^+Et voilà, ​c'est fini !\\  
 + 
 +Pour l'​installation ​du script, suivre la même méthode que pour [[atelier:​chantier:​iptables-pare-feu-pour-un-client#​firewall-clientsh-comme-script-init|firewall-client comme script init]]. ​ ^_^
  
 +La suite concernera le DNAT et SNAT, l'​ajout de quelques règles pour certains protocoles laissés ici de côté, en particulier,​ concernant DHCP, cups, et enfin, l'​installation sur cette passerelle d'un proxy transparent pour l'​ensemble su réseau B.
  
  
  
doc/reseau/iptables-pare-feu-pour-une-passerelle.txt · Dernière modification: 01/11/2015 18:20 par milou

Pied de page des forums

Propulsé par FluxBB