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 11:19]
Hypathie [Détail pour les protocole TCP et UDP]
doc:reseau:iptables-pare-feu-pour-une-passerelle [15/11/2014 17:26]
Hypathie [Les règles du pare-feu pas à pas]
Ligne 293: Ligne 293:
    
 <code root> <code root>
-iptables -P FORWARD DROP 
 iptables -F iptables -F
 iptables -X iptables -X
Ligne 355: Ligne 354:
 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 -m state --state ​NEW,ESTABLISHED,​RELATED -j ACCEPT 
- ​--dports 80,443,8000 -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 -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 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 453: Ligne 447:
 #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\ 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 -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 INPUT -p icmp -i eth0 -m conntrack\ iptables -t filter -A INPUT -p icmp -i eth0 -m conntrack\
Ligne 627: Ligne 619:
 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 651:
  ​--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 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 690:
 # 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 912:
 </​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 937:
 # 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 963: Ligne 950:
 /​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 -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 -m state --state ESTABLISHED,​RELATED -j ACCEPT 
-/​sbin/​iptables -t filter -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/​24+#/​sbin/​iptables -t filter -A FORWARD -p icmp -j ACCEPT ​#inutile 
- -d 0.0.0.0/​0 ​-p tcp -m state --state NEW,​ESTABLISHED,​RELATED -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 FORWARD -i eth0 -o eth1 -s 0.0.0.0/0+/​sbin/​iptables -t filter -A OUTPUT -p icmp -o eth0 -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT 
- -d 192.168.1.0/​24 ​-p tcp -m state --state 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 FORWARD -p icmp -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 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 1047: Ligne 991:
 /​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 1074: Ligne 1006:
 /​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 INPUT -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 1125: Ligne 1102:
 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 1156: Ligne 1175:
 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 1165: Ligne 1182:
  
  
- -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 1194: Ligne 1213:
 </​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 1221: Ligne 1240:
 </​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