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
doc:reseau:iptables-pare-feu-pour-une-passerelle [24/09/2015 17:27]
milou [La table NAT]
doc:reseau:iptables-pare-feu-pour-une-passerelle [01/11/2015 18:20] (Version actuelle)
milou [Le script de la passerelle]
Ligne 6: Ligne 6:
   * Suivi : {{tag>​à-tester}}   * Suivi : {{tag>​à-tester}}
     * Création par [[user>​Hypathie]] 14/10/2014     * Création par [[user>​Hypathie]] 14/10/2014
-    * Testé par <...> le <​...> ​FIXME+    * Testé par <...> le <​...> ​
   * 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 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. ** **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 !+**Nota :** Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! 
  
 ===== Introduction ===== ===== Introduction =====
Ligne 35: Ligne 36:
  * Les services installés :  * Les services installés :
  
-__Sur l'​ordinateur A (IP: 192.168.0.22)__,​ on a installé [[atelier:chantier:​iptables-pare-feu-pour-un-client#​pour-les-fadas-du-scripting-shell|ce pare-feu]].\\+__Sur l'​ordinateur A (IP: 192.168.0.22)__,​ on a installé [[doc:reseau:​iptables-pare-feu-pour-un-client#​pour-les-fadas-du-scripting-shell|ce pare-feu]].\\
  
 __Sur debian-routeur(IP:​ 192.168.0.1)__,​ on a installé:​\\  ​ __Sur debian-routeur(IP:​ 192.168.0.1)__,​ on a installé:​\\  ​
  - aucune interface graphique lors de son installation : on le configure en passant par ssh depuis l'​ordinateur A\\   - aucune interface graphique lors de son installation : on le configure en passant par ssh depuis l'​ordinateur A\\ 
- - [[atelier:chantier:​dhcp#​mise-en-place-basique-du-sercice-dhcp-sur-notre-reseau-local|un serveur DHCP basique]] qui fournit l'IP 192.168.1.2 a l'​ordinateur B\\ + - [[doc:reseau:​dhcp#​mise-en-place-basique-du-sercice-dhcp-sur-notre-reseau-local|un serveur DHCP basique]] qui fournit l'IP 192.168.1.2 a l'​ordinateur B\\ 
  - Un [[atelier:​chantier:​dns-bind9-sur-wheezy|serveur DNS (bind9)]]\\ ​  - Un [[atelier:​chantier:​dns-bind9-sur-wheezy|serveur DNS (bind9)]]\\ ​
  - le fichier **/​etc/​hosts de l'ordi B** est complété(( FQDN (Fully Qualified Domain Name)), par exemple:  - le fichier **/​etc/​hosts de l'ordi B** est complété(( FQDN (Fully Qualified Domain Name)), par exemple:
Ligne 53: Ligne 54:
 </​code>​ </​code>​
  - De même le fichier **/​etc/​hosts de la passerelle** connaît l'ordi B : Par exemple ''​192.168.1.3 ​    ​debian-hp''​  - De même le fichier **/​etc/​hosts de la passerelle** connaît l'ordi B : Par exemple ''​192.168.1.3 ​    ​debian-hp''​
- - La table NAT a été modifiée très simplement pour l'​instant afin [[atelier:chantier:​dhcp#​installation-de-la-passerelle-debian|de le transformer en passerelle]] avec masquerade sur eth0 (interface web).\\ ​+ - La table NAT a été modifiée très simplement pour l'​instant afin [[doc:reseau:​dhcp#​installation-de-la-passerelle-debian|de le transformer en passerelle]] avec masquerade sur eth0 (interface web).\\ ​
  - le fichier /​etc/​sysctl.conf a été modifié : la ligne ''​net.ipv4.ip_forward=0''​ est devenue ''​net.ipv4.ip_forward=1''​.  - le fichier /​etc/​sysctl.conf a été modifié : la ligne ''​net.ipv4.ip_forward=0''​ est devenue ''​net.ipv4.ip_forward=1''​.
  
Ligne 388: Ligne 389:
     * Ce qui donne :     * Ce qui donne :
 <code root>​iptables -L</​code>​ <code root>​iptables -L</​code>​
-<code>+<file config retour de la commande>
 Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT)
 target ​    prot opt source ​              ​destination ​         target ​    prot opt source ​              ​destination ​        
Ligne 399: Ligne 400:
 Chain OUTPUT (policy ACCEPT) Chain OUTPUT (policy ACCEPT)
 target ​    prot opt source ​              ​destination target ​    prot opt source ​              ​destination
-</code>+</file>
 > La navigation web fonctionne > La navigation web fonctionne
 > Le ping vers google et vers 192.168.0.22 est bloqué car on a autorisé seulement tcp > Le ping vers google et vers 192.168.0.22 est bloqué car on a autorisé seulement tcp
Ligne 412: Ligne 413:
  
 <code root>​iptables -L FORWARD</​code>​ <code root>​iptables -L FORWARD</​code>​
-<code>+<file config retour de la commande>
 Chain FORWARD (policy DROP) Chain FORWARD (policy DROP)
 target ​    prot opt source ​              ​destination ​         target ​    prot opt source ​              ​destination ​        
Ligne 418: Ligne 419:
 ACCEPT ​    ​tcp ​ --  anywhere ​            ​192.168.1.0/​24 ​      state ESTABLISHED ACCEPT ​    ​tcp ​ --  anywhere ​            ​192.168.1.0/​24 ​      state ESTABLISHED
 ACCEPT ​    icmp --  anywhere ​            ​anywhere ​           ​ ACCEPT ​    icmp --  anywhere ​            ​anywhere ​           ​
-</code>+</file>
  
   * OU de manière plus précise :   * OU de manière plus précise :
Ligne 431: Ligne 432:
  
   * Ce qui donnerait cette fois :   * Ce qui donnerait cette fois :
-<​code>​iptables -L FORWARD</​code>​ +<​code ​root>​iptables -L FORWARD</​code>​ 
-<code>+<file config retour de la commande>
 Chain FORWARD (policy DROP) Chain FORWARD (policy DROP)
 target ​    prot opt source ​              ​destination ​         target ​    prot opt source ​              ​destination ​        
Ligne 439: Ligne 440:
 ACCEPT ​    icmp --  192.168.1.0/​24 ​      ​anywhere ​            state NEW,​RELATED,​ESTABLISHED ACCEPT ​    icmp --  192.168.1.0/​24 ​      ​anywhere ​            state NEW,​RELATED,​ESTABLISHED
 ACCEPT ​    icmp --  anywhere ​            ​192.168.1.0/​24 ​      state RELATED,​ESTABLISHED ACCEPT ​    icmp --  anywhere ​            ​192.168.1.0/​24 ​      state RELATED,​ESTABLISHED
-</code>+</file>
  
 > Le web et le ping fonctionne : > Le web et le ping fonctionne :
Ligne 445: Ligne 446:
   * De la machine A vers la machine B :   * De la machine A vers la machine B :
 <code user> <code user>
-ping 192.168.1.2 +ping 192.168.1.2</​code
-</​code>​+<file config retour de la commande>
 <​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.
 64 bytes from 192.168.1.2:​ icmp_req=1 ttl=63 time=0.402 ms 64 bytes from 192.168.1.2:​ icmp_req=1 ttl=63 time=0.402 ms
Ligne 454: Ligne 455:
 --- 192.168.1.2 ping statistics --- --- 192.168.1.2 ping statistics ---
 3 packets transmitted,​ 3 received, 0% packet loss, time 1998ms 3 packets transmitted,​ 3 received, 0% packet loss, time 1998ms
-rtt min/​avg/​max/​mdev = 0.306/​0.341/​0.402/​0.043 ms</code>+rtt min/​avg/​max/​mdev = 0.306/​0.341/​0.402/​0.043 ms</file>
  
 :-D :-D
Ligne 461: Ligne 462:
 <code user> <code user>
 ping 192.168.0.22</​code>​ ping 192.168.0.22</​code>​
-<code>PING 192.168.0.22 (192.168.0.22) 56(84) bytes of data.+<file config retour de la commande>PING 192.168.0.22 (192.168.0.22) 56(84) bytes of data.
 64 bytes from 192.168.0.22:​ icmp_req=1 ttl=63 time=0.370 ms 64 bytes from 192.168.0.22:​ icmp_req=1 ttl=63 time=0.370 ms
 64 bytes from 192.168.0.22:​ icmp_req=2 ttl=63 time=0.341 ms 64 bytes from 192.168.0.22:​ icmp_req=2 ttl=63 time=0.341 ms
Ligne 468: Ligne 469:
 --- 192.168.0.22 ping statistics --- --- 192.168.0.22 ping statistics ---
 3 packets transmitted,​ 3 received, 0% packet loss, time 2000ms 3 packets transmitted,​ 3 received, 0% packet loss, time 2000ms
-rtt min/​avg/​max/​mdev = 0.326/​0.345/​0.370/​0.028 ms</code>+rtt min/​avg/​max/​mdev = 0.326/​0.345/​0.370/​0.028 ms</file>
  
 8-) 8-)
Ligne 670: Ligne 671:
 ====Revisiter ICMP ==== ====Revisiter ICMP ====
  
-Puisqu'​on a abordé la question du ping, revenons sur cette règle \\ ''​iptables -A FORWARD -p icmp -j ACCEPT''​\\ un peut trop permissive par rapport à la bonne vielle ​attaque doS (denial of service attack), ou "​[[http://​fr.wikipedia.org/​wiki/​Attaque_par_d%C3%A9ni_de_service|attaque par déni de service]]"​.\\ ​+Puisqu'​on a abordé la question du ping, revenons sur cette règle \\ 
 + 
 +''​iptables -A FORWARD -p icmp -j ACCEPT''​\\ 
 + 
 +un peu trop permissive par rapport à la bonne vieille ​attaque doS (denial of service attack), ou "​[[http://​fr.wikipedia.org/​wiki/​Attaque_par_d%C3%A9ni_de_service|attaque par déni de service]]"​.\\ ​
  
 Cette chaîne va être utilisée pour bloquer seulement certains paquets ICMP provenant de l'​internet (WAN).\\ ​ Cette chaîne va être utilisée pour bloquer seulement certains paquets ICMP provenant de l'​internet (WAN).\\ ​
Ligne 835: Ligne 840:
 D'​abord pour ICMP qu'on ne laisse plus massivement entrer et sortir (table FILTER à DROP pour INPUT et OUTPUT, en plus de 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).\\ ​
 <​note>​ <​note>​
-Attention l'​ordre des règles pour IMCP sur INPUT, OUTPUT et FORWARD, ​comptes ​ici.+Attention l'​ordre des règles pour IMCP sur INPUT, OUTPUT et FORWARD, ​compte ​ici.
 </​note>​ </​note>​
  
-On conserve ce qu'on a fait précédemment en ajoutant simplement 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.+On conserve ce qu'on a fait précédemment en ajoutant simplement les commandes du [[doc:reseau:​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 975: Ligne 980:
   * 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>+<file config retour de la commande>
 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
 64 bytes from 192.168.1.2:​ icmp_req=1 ttl=63 time=0.341 ms 64 bytes from 192.168.1.2:​ icmp_req=1 ttl=63 time=0.341 ms
Ligne 983: Ligne 988:
 2 packets transmitted,​ 2 received, 0% packet loss, time 999ms 2 packets transmitted,​ 2 received, 0% packet loss, time 999ms
 rtt min/​avg/​max/​mdev = 0.316/​0.328/​0.341/​0.022 ms rtt min/​avg/​max/​mdev = 0.316/​0.328/​0.341/​0.022 ms
-</code>+</file>
  
 =) =)
Ligne 990: Ligne 995:
 <code user> ping 192.168.0.22</​code>​ <code user> ping 192.168.0.22</​code>​
  
-<code>PING 192.168.0.22 (192.168.0.22) 56(84) bytes of data.+<file config retour de la commande>PING 192.168.0.22 (192.168.0.22) 56(84) bytes of data.
 64 bytes from 192.168.0.22:​ icmp_req=1 ttl=63 time=0.538 ms 64 bytes from 192.168.0.22:​ icmp_req=1 ttl=63 time=0.538 ms
 64 bytes from 192.168.0.22:​ icmp_req=2 ttl=63 time=0.312 ms 64 bytes from 192.168.0.22:​ icmp_req=2 ttl=63 time=0.312 ms
Ligne 997: Ligne 1002:
 --- 192.168.0.22 ping statistics --- --- 192.168.0.22 ping statistics ---
 3 packets transmitted,​ 3 received, 0% packet loss, time 1998ms 3 packets transmitted,​ 3 received, 0% packet loss, time 1998ms
-rtt min/​avg/​max/​mdev = 0.312/​0.388/​0.538/​0.108 ms</code>+rtt min/​avg/​max/​mdev = 0.312/​0.388/​0.538/​0.108 ms</file>
  
 8-) 8-)
Ligne 1005: Ligne 1010:
 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é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é.+Il faut revenir sur les règles INPUT et OUTPUT que nous avons récupérée provisoirement du [[doc:reseau:​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 1317: Ligne 1322:
  
   * Pour l'​installation du script   * Pour l'​installation du script
-Suivre la même méthode que pour [[atelier:chantier:​iptables-pare-feu-pour-un-client?&#​pour-les-fadas-du-scripting-shell|firewall-client comme script init]].\\ ​+Suivre la même méthode que pour [[doc:reseau:​iptables-pare-feu-pour-un-client?&#​pour-les-fadas-du-scripting-shell|firewall-client comme script init]].\\ ​
  
   * Ou si l'on préfère utiliser les commandes iptables-save et iptables-restore ​   * Ou si l'on préfère utiliser les commandes iptables-save et iptables-restore ​
Ligne 1323: Ligne 1328:
 Puis lancer les commandes nécessaires à l'​exécution du script (droits d'​exécution et en root ''​bash /​chemin/​du/​script''​)\\ ​ Puis lancer les commandes nécessaires à l'​exécution du script (droits d'​exécution et en root ''​bash /​chemin/​du/​script''​)\\ ​
 Enfin éditer /​etc/​network/​interfaces : Enfin éditer /​etc/​network/​interfaces :
-<code># The loopback network interface+<file config /​etc/​network/​interfaces> 
 +# The loopback network interface
 auto lo auto lo
 iface lo inet loopback iface lo inet loopback
Ligne 1341: Ligne 1347:
 address 192.168.1.1 address 192.168.1.1
 network 192.168.1.0 network 192.168.1.0
-netmask 255.255.255.0</​code>+netmask 255.255.255.0 
 +</file>
  
 ====Le cas du serveur DHCP ==== ====Le cas du serveur DHCP ====
Ligne 1350: Ligne 1357:
 Voici une autre maxime à laquelle il faudra se tenir. Voici une autre maxime à laquelle il faudra se tenir.
  
-On voit dans de nombreux wiki l'​ajout aberrant de cette règle :\\ +On voit dans de nombreux wiki l'​ajout aberrant de cette règle :\\ 
 ''​IPTABLES ​ -I INPUT -i <​interface-interne>​ -p udp --dport 67:68 --sport 67:68 -j ACCEPT''​\\ ''​IPTABLES ​ -I INPUT -i <​interface-interne>​ -p udp --dport 67:68 --sport 67:68 -j ACCEPT''​\\
  
doc/reseau/iptables-pare-feu-pour-une-passerelle.1443108465.txt.gz · Dernière modification: 24/09/2015 17:27 par milou

Pied de page des forums

Propulsé par FluxBB