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 05:13]
Hypathie [La table de routage]
doc:reseau:iptables-pare-feu-pour-une-passerelle [15/10/2014 08:45]
Hypathie [Détail pour les protocole TCP et UDP]
Ligne 323: Ligne 323:
 iptables -P OUTPUT ACCEPT iptables -P OUTPUT ACCEPT
 </​code>​ </​code>​
-INPUT et OUTPUT, pour ne pas avoir à répéter ce rappel, plus bas, quand nous mettrons en place les règles ​de ces chaînes INPUT et OUTPUT de la table FILTER.+INPUT et OUTPUT, pour ne pas avoir à répéter ce rappel, plus bas, quand nous mettrons en place les règles ​des chaînes INPUT et OUTPUT de la table FILTER.
  
 **__Et pour redonner accès à internet à l'​ordinateur B.__** **__Et pour redonner accès à internet à l'​ordinateur B.__**
Ligne 649: Ligne 649:
 ====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 pour tous les protocoles dont on a besoin.\\ ​
-D'​abord ​avec ICMP qu'on laisse ​maintenant ​entrer et sortir ​par INPUT et OUTPUT, ​comme pour ce qu'on n'a laissé passer par FORWARD.\\ Attention l'​ordre des règles 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).\\ Attention l'​ordre des règles ​pour IMCP sur INPUT, OUTPUT et FORWARD, ​comptes ici.
  
-On conserve ce qu'on a fait précédemment ​et on ajoute aux commandes du [[atelier:​chantier:​iptables-pare-feu-pour-un-client#​pour-les-fadas-du-scripting-shell|script pour un client du LAN]] les règles qui tiennent ​compte qu'il y a cette fois deux interfaces réseau.+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.
  
 <code root> <code root>
Ligne 680: Ligne 680:
 iptables -A OUTPUT -o eth1 -j ACCEPT iptables -A OUTPUT -o eth1 -j ACCEPT
  
-#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 !+et 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 -p tcp -m state --state NEW,​ESTABLISHED,​RELATED -j ACCEPT
Ligne 777: Ligne 777:
  
 On est content, l'​ordination B peut naviguer sur internet et les pings sont fonctionnels : On est content, l'​ordination B peut naviguer sur internet et les pings sont fonctionnels :
-  * de l'​ordinateur A vers B((on n'​oublie sa table de routage (en root)\\ ''​route add -net 192.168.1.0 gw 192.168.0.1 netmask 255.255.255.0 dev eth0''​))+  * De l'​ordinateur A vers B((on n'​oublie sa table de routage (en root)\\ ''​route add -net 192.168.1.0 gw 192.168.0.1 netmask 255.255.255.0 dev eth0''​))
 <code user>​ping 192.168.1.2</​code>​ <code user>​ping 192.168.1.2</​code>​
 <​code>​ <​code>​
Ligne 1116: Ligne 1116:
 </​code>​ </​code>​
  
-Et voilà, c'est fini !\\ +====Le cas du serveur DHCP ==== 
 +===Aurions-nous oublié une règle pour DHCP ?=== 
 +Rassurez-vous,​ il est inutile d'​ouvrir les ports UDP (67, 68) pour que le serveur DHCP installé sur cette passerelle puisse continué d'​attribuer des IP à notre réseau B. 
 + 
 +  * "Ne pas ajouter de règle aveuglément !" 
 +Voici une autre maxime à laquelle il faudra se tenir. 
 + 
 +On voit dans de nombreux wiki l'​ajout aberrant de cette règle :\\  
 +''​IPTABLES ​ -I INPUT -i <​interface-interne>​ -p udp --dport 67:68 --sport 67:68 -j ACCEPT''​\\ 
 + 
 +Nous ne l'​ajouterons pas !  
 + 
 +  * Dans notre script nous avons mis en effet : 
 +<code root>​iptables -A INPUT -i eth1 -j ACCEPT 
 +iptables -A OUTPUT -o eth1 -j ACCEPT</​code>​ 
 + 
 +Et nous allons à apprendre pour finir, une technique pour n'​ajouter une règle que si elle fait réellement défaut. Il s'agit de l'​outil tcpdump. 
 + 
 +===Utiliser tcpdump=== 
 +  * On l'​installe : 
 +<code root>​apt-get install tcpdump</​code>​ 
 + 
 +  * Puis on lance sur le serveur : 
 +<code root>​tcpdump -i eth1 port 67 or port 68</​code>​ 
 + 
 +Rien ne se passe... et c'est normal !\\  
 + 
 +Pour voir quelque chose, il faut générer du flux depuis le client du réseau 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) : 
 + 
 + -On commence par annuler le bail DHCP.\\ Comme ceci : 
 + 
 +<code root> 
 +dhclient -r eth0 
 +</​code>​ 
 + 
 + 
 + -Il n'y a plus d'IP : 
 +<code root>​eth0 ​     Link encap:​Ethernet ​ HWaddr 00:​1e:​0b:​67:​9b:​b7 ​  
 +          adr inet6: xxxxxxxxxxxx Scope:​Lien</​code>​ 
 + 
 + - On lance une requête DHCP 
 +<code root> 
 +dhclient eth0 
 +</​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) : 
 + 
 +<​code>​ 
 +tcpdump: verbose output suppressed, use -v or -vv for full 
 + ​protocol decode listening on eth1, link-type EN10MB (Ethernet),  
 +capture size 65535 bytes 07:​47:​00.535348  
 +IP 0.0.0.0.bootpc > 255.255.255.255.bootps:​ BOOTP/​DHCP,​ 
 + ​Request from xx:​xx:​xx:​xx:​xx:​xx (oui Unknown), length 300 
 +07:​47:​00.535553 IP debian-serveur.mondomaine.hyp.bootps >  
 +debian-hp.local.bootpc:​ BOOTP/DHCP, Reply, length 302 
 +07:​47:​00.535745 IP 0.0.0.0.bootpc >  
 +255.255.255.255.bootps:​ BOOTP/DHCP, Request from xx:​xx:​xx:​xx:​xx:​xx 
 + (oui Unknown), length 300 
 +07:​47:​00.626390 IP debian-serveur.mondomaine.hyp.bootps 
 + > debian-hp.local.bootpc:​ BOOTP/DHCP, Reply, length 302 
 +^C 
 +4 packets captured 
 +4 packets received by filter 
 +</​code>​ 
 + 
 +- Et en plus l'IP de l'​ordinateur B a bien changé ! 
 + 
 +<​code>​INET_IP=`ifconfig $INET_IFACE | grep inet | \ 
 +cut -d : -f 2 | cut -d ' ' -f 1` && echo $INET_IP</​code>​ 
 +<code root>​192.168.1.4 127.0.0.1</​code>​ 
 + 
 +<note tip> 
 +**__Comme promis un petit rappel sur tcpdump.__**\\  
 + 
 +(//Tout se lance en root//) 
 + 
 +  * Affichage standard: ''​tcpdump''​ 
 +  * Affichage verbeux (verbose): ''​tcpdump -v''​ 
 +  * Interfaces réseaux disponibles pour la capture: ''​tcpdump -D''​ 
 +  * Affichage des adresses numériques((plutôt que des adresses symboliques (DNS))): ''​tcpdump -n''​ 
 +  * Affichage rapide: ''​tcpdump -q''​ 
 +  * Capture du traffic d'une interface particulière:​ ''​tcpdump -i eth1''​ 
 +  * Capture du trafic UDP: ''​tcpdump udp''​ 
 +  * Capture du trafic du port TCP 80: ''​tcpdump port http''​ 
 +  * Capture du trafic à partir d'un fichier stocké dans un fichier: ''​tcpdump -F file_name''​ 
 +  * Envoi du résultat dans un fichier à la place de directement à l'​écran:​\\ ''​tcpdump -w capture.log''​ 
 +  * Lecture d'un fichier de capture: ''​tcpdump -r capture.log''​ 
 +  * Arrêter la capture après n paquets : ''​tcpdump -c n''​((où ''​n''​ est un nombre, 10 par exemple)) 
 + 
 +**Pour aller plus loin : ''​man tcpdump''​**. 
 +</​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.\\ 
  
 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]]. ​ ^_^ 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, l'​ajout de quelques règles ​pour certains protocoles laissés ici de côté, en particulier,​ concernant DHCP, cups, 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