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 [07/11/2014 07:41]
Hypathie [Un pare-feu avancé pour le routeur-debian]
doc:reseau:iptables-pare-feu-pour-une-passerelle [16/11/2014 10:19]
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 293: Ligne 306:
    
 <code root> <code root>
-iptables -P FORWARD DROP 
 iptables -F iptables -F
 iptables -X iptables -X
Ligne 344: Ligne 356:
   - 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 (provisoirement) les entrées et sorties entre le <​nowiki>​LAN</​nowiki> ​et le web. +  - Par exemple pour autoriser la connexion au web du <​nowiki>​LAN</​nowiki> ​on autorise tcp 
-  - 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. +  - On autorise ICMP pour les pings  
-  - Autoriser la réponse du ping, que ce soit depuis le réseau interne, ou de la box-machin. +  - Et bien sûr, ne pas oublier ​si on a "​flushé" ​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.//​)
   * __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
-... + 
-iptables -t filter -A FORWARD -i eth1 -o eth0 -p tcp -m multiport\ +iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24 -d 0.0.0.0/​0 ​-p
- --dports 80,443,8000 -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+ 
- -d 192.168.1.0/​24 -m state --state 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\ 
 + ​tcp ​-m state --state ESTABLISHED,​RELATED -j ACCEPT 
 +</​code>​ 
 + 
 +    * 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>​ 
 +> La navigation web fonctionne 
 +> Le ping vers google et vers 192.168.0.22 est bloqué car on a autorisé seulement tcp 
 + 
 +  * On ajoute une autorisation pour icmp : 
 + 
 +<code root>
 iptables -t filter -A FORWARD -p icmp -j ACCEPT iptables -t filter -A FORWARD -p icmp -j ACCEPT
-... 
-iptables -t filter -A INPUT -p icmp -i eth0 -m state --state ESTABLISHED,​RELATED -j ACCEPT 
-iptables -t filter -A OUTPUT -p icmp -m state --state ESTABLISHED,​RELATED -j ACCEPT 
-... 
-iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
 </​code>​ </​code>​
-<​note>​ 
-Ou sans suivi de connexion :\\  
  
-iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT\\  +  * Ce qui donne : 
-iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT + 
-</note+<​code>​iptables ​-L FORWARD</​code>​ 
-  * On vérifie si le ping fonctionne ​de la machine A vers la machine B :+<​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 387: 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 401: 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 452: 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 -p tcp -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 -p tcp -m state --state ESTABLISHED,​RELATED ​-j ACCEPT + tcp -m state --state ESTABLISHED,​RELATED -j ACCEPT
- +
-iptables -t filter -A FORWARD -p icmp -j ACCEPT+
  
 iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack\ iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack\
Ligne 627: Ligne 770:
 iptables -P FORWARD DROP iptables -P FORWARD DROP
  
-iptables -A FORWARD -i eth1 -o eth0 -d 192.168.1.0/​24 -s 0.0.0.0/0 -j ACCEPT+#On remets "​masquerade"​ car on a flushé: 
 +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
 + 
 +iptables -A FORWARD -i eth1 -o eth0 -d 192.168.1.0/​24 -s 0.0.0.0/0
 + -m state --state NEW,​ESTABLISHED,​RELATED ​-j ACCEPT 
 iptables -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0\ iptables -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  -d 192.168.1.0/​24 -m state --state ESTABLISHED,​RELATED -j ACCEPT
Ligne 654: Ligne 802:
  ​--icmp-type echo-reply -j DROP  ​--icmp-type echo-reply -j DROP
  
-#On remets "​masquerade"​ car on a flushé: 
-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) ====
 Cette fois, il va falloir interdire (DROP) les chaînes INPUT et OUTPUT de la table FILTER excepté 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 excepté pour tous les protocoles dont on a besoin.\\ ​
-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**.+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>​ 
 +Attention l'​ordre des règles pour IMCP sur INPUT, OUTPUT et FORWARD, comptes ici. 
 +</​note>​
  
-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.+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.
  
 <code root> <code root>
Ligne 692: Ligne 841:
 # On garde nos règles concernant le DROP sur FORWARD (FILTER) # On garde nos règles concernant le DROP sur FORWARD (FILTER)
 # et on oublie pas eth1 ! # et on oublie pas eth1 !
-iptables -t filter -A FORWARD -i eth1 -o eth0 -192.168.1.0/​24+iptables -t filter -A FORWARD -i eth1 -o eth0 -192.168.1.0/​24 -0.0.0.0/0
- -0.0.0.0/​0 ​-p tcp -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT+ -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT
    
 iptables -t filter -A FORWARD -i eth0 -o eth1 -s 0.0.0.0/0\ 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 + -d 192.168.1.0/​24 -m state --state ESTABLISHED,​RELATED -j ACCEPT 
- +
 iptables -t filter -A FORWARD -p icmp -j ACCEPT iptables -t filter -A FORWARD -p icmp -j ACCEPT
    
Ligne 914: Ligne 1063:
 </​code>​ </​code>​
  
-====Le script de la passerelle ==== +=====Le script de la passerelle ​===== 
-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 ​à tout ce qu'on a fait jusqu'​à présent, ​une connexion FTP et SSH loggées, et puisqu'​on y est un petit filtrage supplémentaire au niveau des Flags TCP. 
 + 
 +On ajoute au besoin les règles pour un serveur d'​impression (cups ; port 631) ;\\  
 +et de même, si l'on veut (commenter/​décommenter),​ les règles NAT pour un proxy transparent pour le sous-réseau 162.168.1.0/​24.\\  
 +Pour plus de détail sur l'​installation d'un proxy transparent voir [[utilisateurs:​hypathie:​tutos:​proxy-transparent]]. 
  
 <code bash firewall_gateway.sh>​ <code bash firewall_gateway.sh>​
Ligne 934: Ligne 1088:
 # Author: hypathie <​hypathie@debian-facile>​ # Author: hypathie <​hypathie@debian-facile>​
 # #
-##Set up init.d ​script+##Set up /etc/init.d/​firewall_gateway.sh
 case "​$1"​ in case "​$1"​ in
 '​start'​) '​start'​)
-/​sbin/​iptables-restore < /​etc/​config_parefeu 
-RETVAL=$? 
-;; 
-'​stop'​) 
-/​sbin/​iptables-save > /​etc/​config_parefeu 
-RETVAL=$? 
-;; 
-'​clean'​) 
- 
 /​sbin/​iptables -F /​sbin/​iptables -F
 /​sbin/​iptables -X /​sbin/​iptables -X
-/​sbin/​iptables -t nat -F 
-/​sbin/​iptables -t nat -X 
-/​sbin/​iptables -P INPUT ACCEPT 
-/​sbin/​iptables -P FORWARD ACCEPT 
-/​sbin/​iptables -P OUTPUT ACCEPT 
 /​sbin/​iptables -P INPUT DROP /​sbin/​iptables -P INPUT DROP
 /​sbin/​iptables -P OUTPUT DROP /​sbin/​iptables -P OUTPUT DROP
Ligne 961: Ligne 1101:
 /​sbin/​iptables -t nat -P OUTPUT ACCEPT /​sbin/​iptables -t nat -P OUTPUT ACCEPT
 /​sbin/​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE /​sbin/​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 +##commenter / décommenter et adapter les quatre lignes suivantes pour ne pas mettre en place / mettre en place 
 +##un proxy transparent (squid)
 +/​sbin/​iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:​3129
 +/​sbin/​iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3129
 +/​sbin/​iptables -t mangle -A PREROUTING -p tcp --dport 3128 -j DROP
 +/​sbin/​iptables -t mangle -A PREROUTING -p tcp --dport 3129 -j DROP
 +#accepter l'​interface lo
 /​sbin/​iptables -A INPUT -i lo -j ACCEPT /​sbin/​iptables -A INPUT -i lo -j ACCEPT
 /​sbin/​iptables -A OUTPUT -o lo -j ACCEPT /​sbin/​iptables -A OUTPUT -o lo -j ACCEPT
 +#accepter le sous-réseau
 /​sbin/​iptables -A INPUT -i eth1 -j ACCEPT /​sbin/​iptables -A INPUT -i eth1 -j ACCEPT
 /​sbin/​iptables -A OUTPUT -o eth1 -j ACCEPT /​sbin/​iptables -A OUTPUT -o eth1 -j ACCEPT
-/​sbin/​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 +#permettre le passage entre les deux interfaces eternet de la passerelle 
-/​sbin/​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+/​sbin/​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 
 +/​sbin/​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
 /​sbin/​iptables -t filter -A FORWARD -p icmp -j ACCEPT /​sbin/​iptables -t filter -A FORWARD -p icmp -j ACCEPT
 +#accepter le ping entre les réseaux locaux
 /​sbin/​iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT /​sbin/​iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT
 /​sbin/​iptables -t filter -A OUTPUT -p icmp -o eth0 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT /​sbin/​iptables -t filter -A OUTPUT -p icmp -o eth0 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT
 /​sbin/​iptables -t filter -A INPUT -p icmp -i eth1 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT /​sbin/​iptables -t filter -A INPUT -p icmp -i eth1 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT
 /​sbin/​iptables -t filter -A OUTPUT -p icmp -o eth1 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT /​sbin/​iptables -t filter -A OUTPUT -p icmp -o eth1 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT
-/​sbin/​iptables -t filter -A OUTPUT -o eth0 -p udp -m udp --dport 53 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT 
-/​sbin/​iptables -t filter -A INPUT -i eth0 -p udp -m udp --sport 53 -m state --state RELATED,​ESTABLISHED -j ACCEPT 
-/​sbin/​iptables -t filter -A OUTPUT -o eth1 -p udp -m udp --dport 53 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT 
-/​sbin/​iptables -t filter -A INPUT -i eth1 -p udp -m udp --sport 53 -m state --state RELATED,​ESTABLISHED -j ACCEPT 
-/​sbin/​iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT 
-/​sbin/​iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports 80,443,8000 -m state --state RELATED,​ESTABLISHED -j ACCEPT 
-/​sbin/​iptables -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443,8000 -j ACCEPT 
-/​sbin/​iptables -A INPUT -i eth1  -p tcp -m multiport --sports 80,443,8000 -j ACCEPT 
-#Si le serveur cups est branché sur un ordinateur du réseau 192.168.0.0/​24,​ par exemple sur 192.168.0.22 
-#​décommenter les deux lignes suivantes : 
-/​sbin/​iptables -A INPUT -i eth0 -s 192.168.0.22 -d 192.168.0.1 -p tcp --sport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT 
-/​sbin/​iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT 
- 
 /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT /​sbin/​iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
Ligne 1020: Ligne 1157:
 /​sbin/​iptables -A syn_flood -j LOG --log-prefix '​[SYN_FLOOD] : ' /​sbin/​iptables -A syn_flood -j LOG --log-prefix '​[SYN_FLOOD] : '
 /​sbin/​iptables -A syn_flood -j DROP /​sbin/​iptables -A syn_flood -j DROP
 +#autoriser la connexion avec les serveurs DNS
 +/​sbin/​iptables -t filter -A OUTPUT -o eth0 -p udp -m udp --dport 53 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT
 +/​sbin/​iptables -t filter -A INPUT -i eth0 -p udp -m udp --sport 53 -m state --state RELATED,​ESTABLISHED -j ACCEPT
 +/​sbin/​iptables -t filter -A OUTPUT -o eth1 -p udp -m udp --dport 53 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT
 +/​sbin/​iptables -t filter -A INPUT -i eth1 -p udp -m udp --sport 53 -m state --state RELATED,​ESTABLISHED -j ACCEPT
 +#autoriser la navigation web
 +/​sbin/​iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT
 +/​sbin/​iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports 80,443,8000 -m state --state RELATED,​ESTABLISHED -j ACCEPT
 +/​sbin/​iptables -A OUTPUT -o eth1 -p tcp -m multiport --dports 80,443,8000 -j ACCEPT
 +/​sbin/​iptables -A INPUT -i eth1  -p tcp -m multiport --sports 80,443,8000 -j ACCEPT
 +#Si le serveur cups est branché sur un ordinateur du réseau 192.168.0.0/​24,​ par exemple sur 192.168.0.22
 +# laisser décommenter les deux lignes suivantes :
 +/​sbin/​iptables -A INPUT -i eth0 -s 192.168.0.22 -d 192.168.0.1 -p tcp --sport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT
 +/​sbin/​iptables -A OUTPUT -o eth0 -s 192.168.0.1 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT
 +#créer une chaîne utilisateur pour les connexion ssh, les loguer et les accepter
 /​sbin/​iptables -t filter -N InComingSSH /​sbin/​iptables -t filter -N InComingSSH
 /​sbin/​iptables -I INPUT -i eth0 -s 192.168.0.0/​24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j InComingSSH /​sbin/​iptables -I INPUT -i eth0 -s 192.168.0.0/​24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j InComingSSH
Ligne 1027: Ligne 1179:
 /​sbin/​iptables -t filter -A OUTPUT -o eth1 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j ACCEPT /​sbin/​iptables -t filter -A OUTPUT -o eth1 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j ACCEPT
 /​sbin/​iptables -t filter -A INPUT -i eth1 -s 192.168.0.0/​24 -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT /​sbin/​iptables -t filter -A INPUT -i eth1 -s 192.168.0.0/​24 -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
 +#créer une chaîne utilisateur pour les connexions ftp, et les accepter
 /​sbin/​iptables -N ftp_in_accept /​sbin/​iptables -N ftp_in_accept
 /​sbin/​iptables -I INPUT -i eth0 -p tcp --sport 21 -m state --state ESTABLISHED,​RELATED -j ftp_in_accept /​sbin/​iptables -I INPUT -i eth0 -p tcp --sport 21 -m state --state ESTABLISHED,​RELATED -j ftp_in_accept
Ligne 1035: Ligne 1188:
 /​sbin/​iptables -A INPUT -i eth1 -p tcp --sport 20 -m state --state ESTABLISHED,​RELATED -j ACCEPT /​sbin/​iptables -A INPUT -i eth1 -p tcp --sport 20 -m state --state ESTABLISHED,​RELATED -j ACCEPT
 /​sbin/​iptables -I INPUT -i eth1 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT /​sbin/​iptables -I INPUT -i eth1 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
 +echo "set up firewall_gateway.sh .........>​ [OK]"​ 
 +/​sbin/​iptables-save > /​etc/​firewall_gateway.sh 
 +echo "​iptables-save > /​etc/​firewall_gateway.sh .........>​ [OK]"​ 
 +RETVAL=$? 
 +;; 
 +'​stop'​) 
 +# Supprime toutes les règles de la tables FILTER et pose la police ACCEPT pour toutes les chaînes 
 +/​sbin/​iptables -t filter -F 
 +/​sbin/​iptables -t filter -X 
 +/​sbin/​iptables -t filter -P INPUT ACCEPT 
 +/​sbin/​iptables -t filter -P OUTPUT ACCEPT 
 +/​sbin/​iptables -t filter -P FORWARD ACCEPT 
 +echo "​FILTER [ALL firewall_gateway.sh'​s rules .... [FLUSH] ..... POLICY ......> [ACCEPT]"​ 
 +echo "NAT ...POSTROUTING ... MASQUERADE .... [STILL SET UP]"
 RETVAL=$? RETVAL=$?
 ;; ;;
 '​restart'​) '​restart'​)
-$0 stop && ​$0 start+#​ré-installe le pare-feu complet, y compris NAT (masquerade),​ DNAT (port 631) 
 +/​sbin/​iptables-restore < /​etc/​firewall_gateway.sh 
 +echo "/​etc/​firewall-client ........>​ [OK]"​ 
 +echo "NAT (masquerade) ........>​ [OK]"​ 
 +echo "DNAT (port 631) ........>​ [OK]"​ 
 +RETVAL=$
 +;; 
 +'​status'​) 
 +/​sbin/​iptables -L -n --line-numbers 
 +/​sbin/​iptables -t nat -L -n --line-numbers 
 +RETVAL=$
 +;; 
 +'​flush'​) 
 +#supprime toutes les règles de toutes les tables ; accepte tout 
 +/​sbin/​iptables -t filter -F 
 +/​sbin/​iptables -t nat -F 
 +/​sbin/​iptables -t mangle -F 
 +/​sbin/​iptables -t raw -F 
 +/​sbin/​iptables -t filter -P INPUT ACCEPT 
 +/​sbin/​iptables -t filter -P OUTPUT ACCEPT 
 +/​sbin/​iptables -t filter -P FORWARD ACCEPT 
 +echo "​FILTER [ALL RULES .......> [FLUSH]"​ 
 +echo "​WARNING ........ ALL POLICY ......> [ACCEPT]"​ 
 +RETVAL=$? 
 +;; 
 +'​deletnat'​) 
 +/​sbin/​iptables -t nat -F 
 +/​sbin/​iptables -t nat -X 
 +/​sbin/​iptables -t mangle -F 
 +/​sbin/​iptables -t nat -P PREROUTING ACCEPT 
 +/​sbin/​iptables -t nat -P POSTROUTING ACCEPT 
 +/​sbin/​iptables -t nat -P OUTPUT ACCEPT 
 +/​sbin/​iptables -t mangle -P PREROUTING ACCEPT 
 +/​sbin/​iptables -t mangle -P OUTPUT ACCEPT 
 +/​sbin/​iptables -t mangle -P POSTROUTING ACCEPT 
 +  
 +echo "​NAT/​MANGLE [ALL RULES .... [FLUSH] ..... POLICY ......> [ACCEPT]"​ 
 +echo "INFO ......> [NAT/DNAT is OFF]"​ 
 +echo "INFO ......> [FILTER STILL SET UP]"
 RETVAL=$? RETVAL=$?
 ;; ;;
 *) *)
-echo "​Usage:​ $0 { start | stop | restart | clean}"+echo "​Usage:​ $0 { start | stop | restart | status | flush | deletnat ​}"
 RETVAL=1 RETVAL=1
 ;; ;;
Ligne 1049: Ligne 1253:
 exit $RETVAL exit $RETVAL
 </​code>​ </​code>​
 +
 +<note tip>
 +**Pour autoriser la plateforme de jeux STEAM**
 +
 +<code root>
 +/​sbin/​iptables -A INPUT -i eth1 -p udp -m udp --sport 27000 -m\
 + state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT
 +/​sbin/​iptables -A INPUT -i eth0 -p udp -m udp --sport 27000 -m\
 + state --state RELATED,​ESTABLISHED -j ACCEPT
 +</​code>​
 +
 +Merci à robert2a pour cet ajout  8-)
 +
 +[[http://​debian-facile.org/​viewtopic.php?​pid=102028#​p102028|Voir ce fil]]
 +</​note>​
  
   * 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#​firewall-clientsh-comme-script-init|firewall-client comme script init]].\\ ​+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]].\\ ​
  
   * 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 1107: Ligne 1326:
 On laisse le terminal (de la passerelle) en état d'​attente,​ et on passe sur le terminal du client B. On laisse le terminal (de la passerelle) en état d'​attente,​ et on passe sur le terminal du client B.
  
-  * Côté client DHCP (ordinateur B) +  * Côté ​**client** DHCP (ordinateur B) on annule ​le bail DHCP :
- +
- -On commence par annuler ​le bail DHCP.\\ Comme ceci :+
  
 <code root> <code root>
Ligne 1116: Ligne 1333:
  
  
- -Il n'y a plus d'IP :+>Il n'y a plus d'IP : 
 <code root>​eth0 ​     Link encap:​Ethernet ​ HWaddr 00:​1e:​0b:​67:​9b:​b7  ​ <code root>​eth0 ​     Link encap:​Ethernet ​ HWaddr 00:​1e:​0b:​67:​9b:​b7  ​
           adr inet6: xxxxxxxxxxxx Scope:​Lien</​code>​           adr inet6: xxxxxxxxxxxx Scope:​Lien</​code>​
  
- ​- ​On lance une requête DHCP+  * On lance une requête DHCP
 <code root> <code root>
 dhclient eth0 dhclient eth0
 </​code>​ </​code>​
  
-Observez ce que nous dit "​tcpdump" ​(dans le terminal de la passerelle) au lancemant de la commande\\ ''​dhclient eth0''​ sur l'​ordinateur B (client DHCP) :+  * Côté serveur DHCP : 
 +Observez ce que nous dit "​tcpdump" ​ :
  
 <​code>​ <​code>​
Ligne 1145: Ligne 1364:
 </​code>​ </​code>​
  
-Et en plus l'IP de l'​ordinateur ​a bien changé !+  * Et  l'IP de l'​ordinateur ​client DHCP a bien changé !
  
 <​code>​INET_IP=`ifconfig $INET_IFACE | grep inet | \ <​code>​INET_IP=`ifconfig $INET_IFACE | grep inet | \
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