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 [15/10/2014 08:45]
Hypathie [Détail pour les protocole TCP et UDP]
doc:reseau:iptables-pare-feu-pour-une-passerelle [15/11/2014 15:48]
Hypathie [Le script de la passerelle]
Ligne 205: Ligne 205:
 La traduction d'​adresse est gérée avec les chaînes PREROUTING, POSTROUTING et OUTPUT.\\ ​ La traduction d'​adresse est gérée avec les chaînes PREROUTING, POSTROUTING et OUTPUT.\\ ​
  
-Dans la chaîne PREROUTING (avant routage), on peut modifier l'​adresse de destination des paquets qui arrivent sur notre passerelle mais qui doivent aller sur le réseau B. S'ils ne lui sont pas destiné, et qu'au niveau de la passerelle on détermine une redirection pour l'​hôte de notre choix, ce serait là faire du DNAT (du "NAT destination"​).\\+**Dans la chaîne PREROUTING** (avant routage), on peut modifier l'​adresse de destination des paquets qui arrivent sur notre passerelle mais qui doivent aller sur le réseau B. S'ils ne lui sont pas destiné, et qu'au niveau de la passerelle on détermine une redirection pour l'​hôte de notre choix, ce serait là faire du DNAT (du "NAT destination"​).\\
  
-Dans la chaîne POSTROUTING,​ (après routage), on peut modifier l'​adresse source ; celle des hôtes du réseau B, ou d'une seul hôte du réseau B, la passerelle pourrait aussi d'​indiquer au réseau A une autre adresse pour l'​ordinateur que celle qui est véritablement la sienne. Ce serait là faire du SNAT (NAT source).\\+**Dans la chaîne POSTROUTING**, (après routage), on peut modifier l'​adresse source ; celle des hôtes du réseau B, ou d'une seul hôte du réseau B, la passerelle pourrait aussi d'​indiquer au réseau A une autre adresse pour l'​ordinateur que celle qui est véritablement la sienne. Ce serait là faire du SNAT (NAT source).\\
  
-Dans la chaîne POSTROUTING, on peut comme nous le savons, "​l'​IP Masquerade"​.\\ ​+**Dans la chaîne POSTROUTING,​ "​l'​IP Masquerade"​**.\\ 
 Le masquage d'​adresse IP est une forme de traduction d'​adresse réseau (NAT), et ressemble au SNAT. Cela permet aux ordinateurs d'un réseau privé n'​ayant aucune adresse IP d'​accéder à Internet via l'​adresser IP unique d'une machine Linux.\\ ​ Le masquage d'​adresse IP est une forme de traduction d'​adresse réseau (NAT), et ressemble au SNAT. Cela permet aux ordinateurs d'un réseau privé n'​ayant aucune adresse IP d'​accéder à Internet via l'​adresser IP unique d'une machine Linux.\\ ​
 Voir : [[http://​www.inetdoc.net/​guides/​iptables-tutorial/​nattable.html]] Voir : [[http://​www.inetdoc.net/​guides/​iptables-tutorial/​nattable.html]]
Ligne 251: Ligne 251:
  
 Pour ce qui concerne masquerade et snat, ce qui se passe pour un paquet est représenté par la partie du schéma au dessus de la ligne transversale FORWARD.\\  ​ Pour ce qui concerne masquerade et snat, ce qui se passe pour un paquet est représenté par la partie du schéma au dessus de la ligne transversale FORWARD.\\  ​
-Ce schéma tente de mettre en valeur ​un pré-requis ​pour ces paquets ​qui entrent et sortent ​par **eth0 ​et eth1** ​; et qui sont routés uniquement si, de façon sous-jacente,​ ils sont autorisés à entrer et sortir pour chacune des deux interfaces.\\ +Ce schéma tente de mettre en valeur ​deux pré-requis ​
 +  * 1) la chaîne FORWARD laisse passer dans les deux sens le flux qu'on veut autoriser;​ 
 +  * 2) les chaînes INPUT et OUTPUT laisse entrer et sortir ces mêmes ​ces paquets, non seulement ​par **eth0** mais aussi par **eth1**. ​
  
 En d'​autres termes, la table **FILTER** et les chaînes FORWARD, INPUT et OUTPUT conditionnent le POSTEROUTING (et le PREROUTING).\\ ​ En d'​autres termes, la table **FILTER** et les chaînes FORWARD, INPUT et OUTPUT conditionnent le POSTEROUTING (et le PREROUTING).\\ ​
-Ré-préquis ​déterminant ​le fait que l'​ordinateur B puisse recevoir des paquets, et en envoyer.+Ré-préquis ​qui déterminent ​le fait que l'​ordinateur B puisse recevoir des paquets, et en envoyer.
  
-Ainsi, si La commande installée précédemment \\ ''​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE''​\\ permettait la transmission des paquets du réseau interne (eth1), au externe (eth0), et vice-versa c'est parce qu'on avait laissé la police par défaut pour le pare-feu de la passerelle.+Ainsi, si La commande installée précédemment \\ ''​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE''​\\ permettait la transmission des paquets du réseau interne (eth1), au externe (eth0), et vice-versa c'est parce qu'on avait laissé la police par défaut ​ pour la tables FILTER du pare-feu de la passerelle.
  
   * Nous obtenons pour l'​instant :   * Nous obtenons pour l'​instant :
-<code root>​iptables -L -t nat</​code>​+<code root>​iptables -L -t nat && iptables -L</​code>​
 <​code>​ <​code>​
 Chain PREROUTING (policy ACCEPT) Chain PREROUTING (policy ACCEPT)
-target ​    prot opt source ​              ​destination ​        +target ​    prot opt source ​      ​destination ​        
  
 Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT)
-target ​    prot opt source ​              ​destination ​        +target ​    prot opt source ​      ​destination ​        
  
 Chain OUTPUT (policy ACCEPT) Chain OUTPUT (policy ACCEPT)
-target ​    prot opt source ​              ​destination ​        +target ​    prot opt source ​      ​destination ​        
  
 Chain POSTROUTING (policy ACCEPT) Chain POSTROUTING (policy ACCEPT)
-target ​    prot opt source ​              ​destination ​         +target ​    prot opt source ​      ​destination ​         
-MASQUERADE ​ all  --  anywhere ​            ​anywhere ​+MASQUERADE ​ all  --  anywhere ​   anywhere ​            
 +Chain INPUT (policy ACCEPT) 
 +target ​    prot opt source ​      ​destination ​         
 + 
 +Chain FORWARD (policy ACCEPT) 
 +target ​    prot opt source ​      ​destination ​         
 + 
 +Chain OUTPUT (policy ACCEPT) 
 +target ​    prot opt source ​      ​destination
 </​code>​ </​code>​
  
Ligne 283: Ligne 293:
    
 <code root> <code root>
-iptables -P FORWARD DROP 
 iptables -F iptables -F
 iptables -X iptables -X
Ligne 350: Ligne 359:
  -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
 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 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Ligne 648: Ligne 654:
 </​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 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 904: Ligne 913:
 </​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 924: Ligne 938:
 # 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
 /​sbin/​iptables -P FORWARD DROP /​sbin/​iptables -P FORWARD DROP
-  
 /​sbin/​iptables -t nat -P PREROUTING ACCEPT /​sbin/​iptables -t nat -P PREROUTING ACCEPT
 /​sbin/​iptables -t nat -P POSTROUTING ACCEPT /​sbin/​iptables -t nat -P POSTROUTING ACCEPT
Ligne 953: Ligne 951:
 /​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  
-#Maintenant que tout est à DROP il faut s'occuper de la boucle local+##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
-Et notre interface interne :+
 /​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
-  +#permettre ​le passage entre les deux interfaces eternet de la passerelle 
-#On garde nos règles concernant ​le DROP sur FORWARD (FILTER) +/​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 
-#mais on oublie pas eth1 ! +/​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 -p 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 tcp -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+/​sbin/​iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT 
- --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 OUTPUT -p icmp -o eth0 -m conntrack+/​sbin/​iptables -t filter -A OUTPUT -p icmp -o eth1 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT
- --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 +
-  +
-# Et on prend soin de laisser entrer et sortir (INPUT, OUTPUT de FILTER) +
-# le flux nécessaire au DNS (53) et au web (80, 443..) +
-# et là encore on n'​oublie pas eth1 +
-  +
-/​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 +
-  +
-  +
-# 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
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT /​sbin/​iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
 /​sbin/​iptables -A FORWARD -p icmp --icmp-type 0 -j ACCEPT /​sbin/​iptables -A FORWARD -p icmp --icmp-type 0 -j ACCEPT
-  
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 3/4 -j ACCEPT /​sbin/​iptables -A INPUT -p icmp --icmp-type 3/4 -j ACCEPT
 /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 3/4 -j ACCEPT /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 3/4 -j ACCEPT
 /​sbin/​iptables -A FORWARD -p icmp --icmp-type 3/4 -j ACCEPT /​sbin/​iptables -A FORWARD -p icmp --icmp-type 3/4 -j ACCEPT
-  
 /​sbin/​iptables -A FORWARD -p icmp --icmp-type 3/3 -j ACCEPT /​sbin/​iptables -A FORWARD -p icmp --icmp-type 3/3 -j ACCEPT
 /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 3/3 -j ACCEPT /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 3/3 -j ACCEPT
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 3/3 -j ACCEPT /​sbin/​iptables -A INPUT -p icmp --icmp-type 3/3 -j ACCEPT
-  
 /​sbin/​iptables -A FORWARD -p icmp --icmp-type 3/1 -j ACCEPT /​sbin/​iptables -A FORWARD -p icmp --icmp-type 3/1 -j ACCEPT
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 3/1 -j ACCEPT /​sbin/​iptables -A INPUT -p icmp --icmp-type 3/1 -j ACCEPT
 /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 3/1 -j ACCEPT /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 3/1 -j ACCEPT
-  
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 4 -j ACCEPT /​sbin/​iptables -A INPUT -p icmp --icmp-type 4 -j ACCEPT
 /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 4 -j ACCEPT /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 4 -j ACCEPT
 /​sbin/​iptables -A FORWARD -p icmp --icmp-type 4 -j ACCEPT /​sbin/​iptables -A FORWARD -p icmp --icmp-type 4 -j ACCEPT
-  
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 2/s -j ACCEPT /​sbin/​iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 2/s -j ACCEPT
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 8 -j LOG --log-prefix "​ICMP/​in/​8 Excessive: " /​sbin/​iptables -A INPUT -p icmp --icmp-type 8 -j LOG --log-prefix "​ICMP/​in/​8 Excessive: "
Ligne 1037: Ligne 992:
 /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
 /​sbin/​iptables -A FORWARD -p icmp --icmp-type 8 -j ACCEPT /​sbin/​iptables -A FORWARD -p icmp --icmp-type 8 -j ACCEPT
-  
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT /​sbin/​iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
 /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT
 /​sbin/​iptables -A FORWARD -p icmp --icmp-type 11 -j ACCEPT /​sbin/​iptables -A FORWARD -p icmp --icmp-type 11 -j ACCEPT
-  
 /​sbin/​iptables -A INPUT -p icmp --icmp-type 12 -j ACCEPT /​sbin/​iptables -A INPUT -p icmp --icmp-type 12 -j ACCEPT
 /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 12 -j ACCEPT /​sbin/​iptables -A OUTPUT -p icmp --icmp-type 12 -j ACCEPT
 /​sbin/​iptables -A FORWARD -p icmp --icmp-type 12 -j ACCEPT /​sbin/​iptables -A FORWARD -p icmp --icmp-type 12 -j ACCEPT
-  +/​sbin/​iptables -A FORWARD -s 192.168.1.0/​24 -d 192.168.0.0/​24 -p icmp --icmp-type echo-request -j ACCEPT 
-/​sbin/​iptables -A FORWARD -s 192.168.1.0/​24 -d 192.168.0.0/​24 -p icmp+/​sbin/​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-request -j ACCEPT +
- +
-# Pour le retour nous utilisons la dernière règle +
-/​sbin/​iptables -A FORWARD -s 192.168.0.0/​24 -d 192.168.1.0/​24 -p icmp+
- --icmp-type echo-reply -j DROP +
- +
 /​sbin/​iptables -A INPUT -p icmp -m limit -j LOG --log-prefix "​ICMP/​IN:​ " /​sbin/​iptables -A INPUT -p icmp -m limit -j LOG --log-prefix "​ICMP/​IN:​ "
 /​sbin/​iptables -A OUTPUT -p icmp -m limit -j LOG --log-prefix "​ICMP/​OUT:​ " /​sbin/​iptables -A OUTPUT -p icmp -m limit -j LOG --log-prefix "​ICMP/​OUT:​ "
-  
-  
-#TCP_BAD 
-  
 /​sbin/​iptables -N syn_flood /​sbin/​iptables -N syn_flood
 /​sbin/​iptables -I INPUT -p tcp --syn -j syn_flood /​sbin/​iptables -I INPUT -p tcp --syn -j syn_flood
Ligne 1064: Ligne 1007:
 /​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 
-SSH+/​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+/​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
- --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j InComingSSH+
 /​sbin/​iptables -A InComingSSH -j LOG --log-prefix '​[INCOMING_SSH] : ' /​sbin/​iptables -A InComingSSH -j LOG --log-prefix '​[INCOMING_SSH] : '
 /​sbin/​iptables -A InComingSSH -j ACCEPT /​sbin/​iptables -A InComingSSH -j ACCEPT
-  +/​sbin/​iptables -t filter -A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
-/​sbin/​iptables -t filter -A OUTPUT -o eth0 -p tcp -m tcp+/​sbin/​iptables -t filter -A OUTPUT -o eth1 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j ACCEPT 
- --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 -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 +
-  +
-#FTP_IN +
- +
 /​sbin/​iptables -N ftp_in_accept /​sbin/​iptables -N ftp_in_accept
-/​sbin/​iptables -I INPUT -i eth0 -p tcp --sport 21 -m state+/​sbin/​iptables -I INPUT -i eth0 -p tcp --sport 21 -m state --state ESTABLISHED,​RELATED -j ftp_in_accept 
- --state ESTABLISHED,​RELATED -j ftp_in_accept +/​sbin/​iptables -I INPUT -i eth0 -p tcp --sport 20 -m state --state ESTABLISHED,​RELATED -j ftp_in_accept 
-  +/​sbin/​iptables -I INPUT -i eth0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ftp_in_accept
-/​sbin/​iptables -I INPUT -i eth0 -p tcp --sport 20 -m state+
- --state ESTABLISHED,​RELATED -j ftp_in_accept +
-  +
-/​sbin/​iptables -I INPUT -i eth0 -p tcp --sport 1024:65535 --dport+
- 1024:65535 -m state --state ESTABLISHED -j ftp_in_accept +
- +
 /​sbin/​iptables -A ftp_in_accept -p tcp -j ACCEPT /​sbin/​iptables -A ftp_in_accept -p tcp -j ACCEPT
-  +/​sbin/​iptables -A INPUT -i eth1 -p tcp --sport 21 -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 -A INPUT -i eth1 -p tcp --sport 21 -m state+/​sbin/​iptables -I INPUT -i eth1 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT 
- --state ESTABLISHED,​RELATED -j ACCEPT +echo "set up firewall_gateway.sh .........>​ [OK]"​ 
-/​sbin/​iptables -A NPUT -i eth1 -p tcp --sport 20 -m state+/​sbin/​iptables-save > /​etc/​firewall_gateway.sh 
- --state ESTABLISHED,​RELATED -j ACCEPT +echo "​iptables-save > /​etc/​firewall_gateway.sh .........>​ [OK]"​ 
-/​sbin/​iptables -I INPUT -i eth1 -p tcp --sport 1024:65535 --dport+RETVAL=$? 
- 1024:65535 -m state --state ESTABLISHED -j ACCEPT+;; 
 +'​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 1115: Ligne 1103:
 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
 +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 ​
 +Il n'y qu'à récupérer les commandes iptables du script, en commentant le reste.\\ ​
 +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 :
 +<​code>#​ The loopback network interface
 +auto lo
 +iface lo inet loopback
 +
 +#carte vers la box
 +auto eth0
 +iface eth0 inet static
 +address 192.168.0.1
 +network 192.168.0.0
 +netmask 255.255.255.0
 +gateway 192.168.0.254
 +post-up iptables-restore < /​etc/​firewall_gateway
 +
 +#carte vers le LAN
 +auto eth1
 +iface eth1 inet static
 +address 192.168.1.1
 +network 192.168.1.0
 +netmask 255.255.255.0</​code>​
  
 ====Le cas du serveur DHCP ==== ====Le cas du serveur DHCP ====
Ligne 1146: Ligne 1176:
 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 1155: Ligne 1183:
  
  
- -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 1184: Ligne 1214:
 </​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 | \
Ligne 1211: Ligne 1241:
 </​note>​ </​note>​
  
-Et voilà, c'est fini ! Il en va de même pour cups, si vous l'avez installé sur cette passerelle, l'​ordinateur B pourra en profiter avec ce script sans ajouter de règle côté serveur.\\  +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, pour un serveur web apache installé sur un client du réseau B, et enfin, l'​installation sur cette passerelle d'un proxy transparent pour l'​ensemble su réseau B. La suite concernera le DNAT et SNAT, pour un serveur web apache installé sur un client du réseau B, 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