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 [16/11/2014 07:24]
Hypathie [Les règles du pare-feu pas à pas]
doc:reseau:iptables-pare-feu-pour-une-passerelle [16/11/2014 10:20]
Hypathie [Les règles du pare-feu pas à pas]
Ligne 34: Ligne 34:
 L'​ordinateur B appartient au sous sous-réseau : 192.168.1.0/​255.255.255.0 L'​ordinateur B appartient au sous sous-réseau : 192.168.1.0/​255.255.255.0
  
-  ​* 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é [[atelier:​chantier:​iptables-pare-feu-pour-un-client#​pour-les-fadas-du-scripting-shell|ce pare-feu]].\\
Ligne 41: Ligne 41:
  - 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\\   - [[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\\ 
- - 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]].\\ ​+ - 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: 
 +<​code>​ 
 +127.0.0.1 localhost 
 +127.0.1.1 debian-hpmondomaine.hyp ​ debian-hp 
 +</​code>​ 
 + - le fichier **/​etc/​resolv.conf de l'ordi B** a connaissance de l'ip du serveur DNS : 
 +<​code>​ 
 +domaine mondomaine.hyp 
 +search mondomaine.hyp 
 +nameserver 192.168.1.1 
 +</​code>​ 
 + - 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).\\ 
  - 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 350: Ligne 363:
   * __Comme ceci__ :   * __Comme ceci__ :
 <code root> <code root>
-...+iptables -F 
 +iptables -X 
 +iptables -t nat -F 
 +iptables -t nat -X 
 +iptables -P INPUT ACCEPT 
 +iptables -P FORWARD ACCEPT 
 +iptables -P OUTPUT ACCEPT 
 + 
 +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
 iptables -P FORWARD DROP iptables -P FORWARD DROP
-... 
  
-/sbin/iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24 -d 0.0.0.0/0 -p\+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  tcp -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT
  
-/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/​24 -p\+iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/​24 -p\
  tcp -m state --state ESTABLISHED,​RELATED -j ACCEPT  tcp -m state --state ESTABLISHED,​RELATED -j ACCEPT
 +</​code>​
  
-/sbin/iptables -t filter -A FORWARD -p icmp -ACCEPT+    * Ce qui donne : 
 +<code root>iptables -L</​code>​ 
 +<​code>​ 
 +Chain INPUT (policy ACCEPT) 
 +target ​    prot opt source ​              ​destination ​         
 + 
 +Chain FORWARD ​(policy DROP) 
 +target ​    prot opt source ​              ​destination ​         
 +ACCEPT ​    ​tcp  ​--  ​192.168.1.0/​24 ​      ​anywhere ​            state NEW,​RELATED,​ESTABLISHED 
 +ACCEPT ​    ​tcp ​ --  anywhere ​            ​192.168.1.0/​24 ​      state RELATED,​ESTABLISHED 
 + 
 +Chain OUTPUT (policy ​ACCEPT
 +target ​    prot opt source ​              ​destination
 </​code>​ </​code>​
-<note+La navigation web fonctionne 
-Ou sans suivi de connexion :\\ +> Le ping vers google et vers 192.168.0.22 est bloqué car on a autorisé seulement tcp
  
-iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT\\  +  * On ajoute une autorisation pour icmp : 
-iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT + 
-</note+<code root> 
-  * On vérifie si le ping fonctionne ​de la machine A vers la machine B :+iptables ​-t filter -A FORWARD -p icmp -j ACCEPT 
 +</​code>​ 
 + 
 +  * Ce qui donne : 
 + 
 +<code root>​iptables -L FORWARD</​code>​ 
 +<​code>​ 
 +Chain FORWARD (policy DROP) 
 +target ​    prot opt source ​              ​destination ​         
 +ACCEPT ​    ​tcp ​ --  192.168.1.0/​24 ​      ​anywhere ​            state NEW,​RELATED,​ESTABLISHED 
 +ACCEPT ​    ​tcp ​ --  anywhere ​            ​192.168.1.0/​24 ​      state RELATED,​ESTABLISHED 
 +ACCEPT ​    icmp --  anywhere ​            ​anywhere ​            
 +</​code>​ 
 + 
 +  * OU de manière plus précise : 
 +<code root> 
 +iptables -t filter ​-A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24 -d 0.0.0.0/0 -p icmp\ 
 + -m state --state NEW,​ESTABLISHED,​RELATED ​-j ACCEPT 
 + 
 +iptables ​-t filter ​-A FORWARD ​-i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/​24 -p icmp\ 
 + -m state --state ESTABLISHED,​RELATED ​-j ACCEPT 
 + 
 +</code> 
 + 
 +  * Ce qui donnerait cette fois : 
 +<​code>​iptables -L FORWARD</​code>​ 
 +<​code>​ 
 +Chain FORWARD (policy DROP) 
 +target ​    prot opt source ​              ​destination ​         
 +ACCEPT ​    ​tcp ​ --  192.168.1.0/​24 ​      ​anywhere ​            state NEW,​RELATED,​ESTABLISHED 
 +ACCEPT ​    ​tcp ​ --  anywhere ​            ​192.168.1.0/​24 ​      state 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 
 +</​code>​ 
 + 
 +> Le web et le ping fonctionne ​
 + 
 +  * De la machine A vers la machine B :
 <code user> <code user>
 ping 192.168.1.2 ping 192.168.1.2
Ligne 383: Ligne 454:
 :-D :-D
  
-  * Et de la machine B vers la machine A :+  * De la machine B vers la machine A :
 <code user> <code user>
 ping 192.168.0.22</​code>​ ping 192.168.0.22</​code>​
Ligne 397: Ligne 468:
 8-) 8-)
  
-  ​Pour voir ce qu'on a fait +<note tip> 
-<code root>​iptables --t nat && ​iptables -L</​code>​+ 
 +**__Quelques exlications :__** 
 + 
 +  * __On autorise toute connexion pour le LAN__ 
 + 
 +  iptables -A FORWARD -i eth1 -j ACCEPT 
 +  iptables -A FORWARD -o eth1 -j ACCEPT 
 + 
 +  iptables -L 
 +  Chain INPUT (policy ACCEPT) 
 +  target ​    prot opt source ​              ​destination ​         
 +  Chain FORWARD (policy DROP) 
 +  target ​    prot opt source ​              ​destination ​         
 +  ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​            
 +  ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​            
 +  Chain OUTPUT (policy ACCEPT) 
 +  target ​    prot opt source ​              ​destination  
 + 
 +> Ce qui entre ''​-i''​ et ce qui sort ''​-o''​ 
 +> La navigation internet depuis un ordi du réseau 192.168.1.0/​24 est possible 
 +> ping de l'un de ces ordi vers google est ok 
 + 
 +  * __Sans suivi de connexion__ : 
 + 
 +  iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 
 +  iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT 
 + 
 +> On constate que sans préciser de protocole ni de réseau, cela revient au même que précédemment 
 + 
 +  iptables -L  
 +  Chain INPUT (policy ACCEPT) 
 +  target ​    prot opt source ​              ​destination ​         
 +  Chain FORWARD (policy ACCEPT) 
 +  target ​    prot opt source ​              ​destination ​         
 +  ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​            
 +  ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​            
 +  Chain OUTPUT (policy ACCEPT) 
 +  target ​    prot opt source ​              ​destination  
 + 
 +> On autorise le passage de eth1 à eth0 et de eth0 à eth1 
 + 
 +  * __Avec suivi de connexion__ :  
 + 
 +  iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24 -d 0.0.0.0/0 -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT 
 +  iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/​24 -m state --state ESTABLISHED,​RELATED -j ACCEPT 
 + 
 +> On autorise le passage de tous protocoles avec suivi de connexion, de eth1 à eth0, et inversement,​ en précisant les réseaux source et destination. 
 + 
 +  iptables -L 
 +  Chain INPUT (policy ACCEPT) 
 +  target ​    prot opt source ​              ​destination ​         
 +  Chain FORWARD (policy DROP) 
 +  target ​    prot opt source ​              ​destination ​         
 +  ACCEPT ​    ​all ​ --  192.168.1.0/​24 ​      ​anywhere ​            state NEW,​RELATED,​ESTABLISHED 
 +  ACCEPT ​    ​all ​ --  anywhere ​            ​192.168.1.0/​24 ​      state RELATED,​ESTABLISHED 
 +  Chain OUTPUT (policy ACCEPT) 
 +  target ​    prot opt source ​              ​destination 
 + 
 +> Là encore la navigation est possible pour un ordi du sous-réseau 192.168.1.0/​24 
 +> Et le ping fonctionne vers google et l'ordi 192.168.0.22 sans besoin d'​ajouter de règle imcp car on a autorisé TOUS les protocoles 
 + 
 +**Enfin il est inutile d'​ajouter une règle udp pour la résolution de nom si le serveur de nom est installé et correctement paramétré.**\\  
 +Dans le cas contraire on ajouterait ​
 +<code root> 
 +iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT 
 +</​code>​ 
 + 
 +Ou pour être plus précis : 
 + 
 +<code root> 
 +iptables ​-t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24 -d 0.0.0.0/0 -p udp\ 
 + ​--dport 53 -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT 
 + 
 +iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/​24 -p udp\ 
 + ​--dport 53 -m state --state ESTABLISHED,​RELATED -j ACCEPT 
 +</​code>​ 
 + 
 +</​note>​ 
  
 ====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 448: Ligne 597:
 #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 ! #mais on oublie pas eth1 !
-iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24+/sbin/iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24 -d 0.0.0.0/​0 ​-p\ 
- -d 0.0.0.0/0 -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT+ ​tcp ​-m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT
  
-iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0+/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0 -d 192.168.1.0/​24 ​-p\ 
- -d 192.168.1.0/​24 -m state --state ESTABLISHED,​RELATED -j ACCEPT+ ​tcp ​-m state --state ESTABLISHED,​RELATED -j ACCEPT
  
 iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack\ iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack\
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