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-un-client [14/10/2014 16:30]
Hypathie [Pare-feu pour une station (client)]
doc:reseau:iptables-pare-feu-pour-un-client [06/11/2014 10:05]
Hypathie [Pare-feu pour une station (client)]
Ligne 13: Ligne 13:
 **Iptables** est un logiciel libre grâce auquel l’administrateur système peut configurer les chaînes et règles du pare-feu en espace noyau. **Iptables** est un logiciel libre grâce auquel l’administrateur système peut configurer les chaînes et règles du pare-feu en espace noyau.
  
-**Netfilter** est un framework implémentant le pare-feu au sein du noyau Linux.+**Netfilter** est un framework implémentant le pare-feu au sein du noyau Linux.\\  
 +Voir [[http://​www.netfilter.org/​|le site de netfilter]]
  
 Un pare-feu rejette les paquets du réseau selon des règles stockées dans la mémoire du PC.\\ Linux iptables travaille avec des «chaînes». Ces chaînes sont des regroupements de règles qui régissent le trafic réseau en fonction de trois axes : les paquets ; les protocoles ; les ports. Un pare-feu rejette les paquets du réseau selon des règles stockées dans la mémoire du PC.\\ Linux iptables travaille avec des «chaînes». Ces chaînes sont des regroupements de règles qui régissent le trafic réseau en fonction de trois axes : les paquets ; les protocoles ; les ports.
Ligne 75: Ligne 76:
  
 Au sujet de la configuration réseau, commandes, fichiers de configuration pour GNU/​linux:​\\ [[http://​www.linux-france.org/​prj/​edu/​archinet/​systeme/​ch03.html]] Au sujet de la configuration réseau, commandes, fichiers de configuration pour GNU/​linux:​\\ [[http://​www.linux-france.org/​prj/​edu/​archinet/​systeme/​ch03.html]]
 +
 +Enfin pour lister les protocoles connus du système :
 +<code user> cat /​etc/​protocols</​code>​
  
 Pour ce qui concerne le routage (table NAT), nous l'​aborderons lors de la mise en place d'un pare-feu pour une machine faisant office de routeur, dans le wiki suivant. Pour ce qui concerne le routage (table NAT), nous l'​aborderons lors de la mise en place d'un pare-feu pour une machine faisant office de routeur, dans le wiki suivant.
Ligne 192: Ligne 196:
   * Suivons le principe énoncé plus haut : on commence par tout interdire.   * Suivons le principe énoncé plus haut : on commence par tout interdire.
  
-Pour les entrées ; ce qui passe ; ce qui sort : 
 <code root> <code root>
 iptables -P INPUT DROP iptables -P INPUT DROP
Ligne 216: Ligne 219:
 <code root> <code root>
 iptables -t filter -A OUTPUT -p udp -m udp\ iptables -t filter -A OUTPUT -p udp -m udp\
- ​--dport 53 -m conntrack --ctstate RELATED,​ESTABLISHED -j ACCEPT+ ​--dport 53 -m conntrack --ctstate ​NEW,RELATED,​ESTABLISHED -j ACCEPT
  
 iptables -t filter -A INPUT -p udp -m udp\ iptables -t filter -A INPUT -p udp -m udp\
Ligne 278: Ligne 281:
  
 <​note>​ <​note>​
-Commande précédente, ou on peut aussi faire :+Commandes précédentes, ou celles-ci plus précises que l'on préférera ​:
 <code root> <code root>
 iptables -A OUTPUT -p icmp -m conntrack\ iptables -A OUTPUT -p icmp -m conntrack\
Ligne 298: Ligne 301:
  ​RELATED,​ESTABLISHED -j ACCEPT  ​RELATED,​ESTABLISHED -j ACCEPT
 </​code>​ </​code>​
 +
 +===Pour installer une imprimante partagée ===
 +  * Si l'on veut brancher son imprimante sur la machine d'IP 192.168.0.22 faisant alors office de serveur d'​impression pour le réseau local 192.168.0.0/​24 :
 +
 +<code root>​iptables -A INPUT -i eth0 -s 192.168.0.0/​24 -d 192.168.0.22 -p tcp\
 + ​--dport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT
 +
 +iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.0.0/​24 -p tcp\
 + ​--sport 631 -m state ! --state INVALID -j ACCEPT</​code>​
 +
 +<​note>​Remarque sur la place du point d'​exclamation,​ qui ne se place pas devant ''​INVALID''​ comme on le voit souvent !</​note>​
 +
 +  * Si l'on veut que cette imprimante soit partagée aussi par un autre réseau, par exemple 192.168.1.0/​24 on ajoutera :
 +
 +<code root>​iptables -A INPUT -i eth0 -s 192.168.0.0/​24 -d 192.168.1.0/​24 -p tcp\
 + ​--dport 631 -m state --state RELATED,​ESTABLISHED -j ACCEPT</​code>​
 +
 +
 +<code root>​iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.1.1 -p tcp\
 + ​--sport 631 -m state ! --state INVALID -j ACCEPT</​code>​
 +
 +Dans ce cas au niveau de la passerelle, il faudra relayer le trafic pour le port 631, c'​est-à-dire accepter sur eth0 (réseau 192.168.0.0/​24) en entrée et en sortie tcp sur le port 631, de même pour eth1 (réseau 168.168.1.0/​24).\\ ​
  
 ====Vérifier et faire des tests==== ====Vérifier et faire des tests====
Ligne 527: Ligne 552:
 (Pour tester n'​oubliez pas de commenter, mettre un ''#''​ devant la ligne\\ ''​pre-up iptables-restore < /​etc/​iptables''​ du fichier /​etc/​network/​interfaces ajoutée lors de la méthode précédente.) (Pour tester n'​oubliez pas de commenter, mettre un ''#''​ devant la ligne\\ ''​pre-up iptables-restore < /​etc/​iptables''​ du fichier /​etc/​network/​interfaces ajoutée lors de la méthode précédente.)
  
-<​code ​text firewall-client.sh>​+<​code ​bash firewall-client.sh>​
 #!/bin/sh #!/bin/sh
 ### BEGIN INIT INFO ### BEGIN INIT INFO
Ligne 650: Ligne 675:
 **Prochain n° sur iptables : "​[[atelier:​chantier:​iptables-un-pare-feu-pour-une-passerelle?&​|un pare-feu pour une passerelle Debian]]"​.** **Prochain n° sur iptables : "​[[atelier:​chantier:​iptables-un-pare-feu-pour-une-passerelle?&​|un pare-feu pour une passerelle Debian]]"​.**
  
-=====Récapitulatif ​des commandes ​et options =====+=====Récapitulatifcommandesoptions, syntaxe ​===== 
 +====Les commandes====
  
 ^ commandes ^ descriptions ^ ^ commandes ^ descriptions ^
Ligne 666: Ligne 692:
 | -Z <​nowiki>​[chain]</​nowiki>​ | remise à zéro des compteurs dans la chaîne chain si elle est indiquée | | -Z <​nowiki>​[chain]</​nowiki>​ | remise à zéro des compteurs dans la chaîne chain si elle est indiquée |
  
 +====Les options====
 ^options^descriptions^ ^options^descriptions^
 |-p [!] protocle|où protocole est : TCP, UDP, ICMP, ALL| |-p [!] protocle|où protocole est : TCP, UDP, ICMP, ALL|
Ligne 683: Ligne 709:
 [[http://​olivieraj.free.fr/​fr/​linux/​information/​firewall/​fw-03-05.html]] [[http://​olivieraj.free.fr/​fr/​linux/​information/​firewall/​fw-03-05.html]]
  
 +====La syntaxe générale ====
 +===Commande iptables basique===
 +  * Ouvrir une connexion vers sa machine ​
 +
 +  iptables -A INPUT -i <​interface_d'​entrée>​ -p <​nom_du_protocole>​ --dport <​nom_du_port_de_destination>​ -j ACCEPT
 +
 +> Où <​nom_du_protocole>​ est à remplacer par TCP, UDP, all ;
 +> une règle pour chaque protocole
 +> et <​nom_du_port>​ est le **nom du service**, tels FTP, DNS ... **ou le numéro** qui leur correspond tels 21, 53...
 +
 +===Règles plus précise ===
 +
 +  * Sur l'​entrée :
 +
 +  iptables -A INPUT -i <​interface_d'​entrée>​ -s <​reseau_local/​masque_de_reseau>​ -d <​ip_locale>​ -p <​nom_du_protocole>​ --dport <​nom_du_port>​ -m state --state NEW -j ACCEPT
 +
 +
 +> Ce qui rentre sur sa carte ethernet, dont la source est seulement <​reseau_local/​masque_de_reseau>​ et seulement à destination de <​ip_locale>,​ dont l'​état est une nouvelle connexion par tel protocole et sur tel port, sera accepté.
 + 
 +  * Sur la sortie :
 +
 +  iptables -A OUTPUT -o eth0 -s <​ip_locale>​ -d <​reseau_local/​masque_de_reseau>​ -p <​nom_du_protocole>​ --sport <​nom_du_port>​ -m state --state NEW -j ACCEPT
 +
 +> Ce qui sort de sa carte ethernet, dont la source est seulement <​reseau_local/​masque_de_reseau>​ et seulement à destination de <​ip_locale>,​ dont l'​état est une nouvelle connexion par tel protocole et sur tel port, sera accepté.
 +
 +
 +===Filtre encore plus restrictif===
 +
 +  * En entrée :
 +
 +  iptables -A INPUT -i eth0 -s <​reseau_local/​masque_de_reseau>​ -d <​ip_locale>​ -p <​nom_du_protocole>​ --dport <​nom_du_port>​ -m state --state ! INVALID -j ACCEPT
 +
 +> On précise que l'on accepte, en entrée sur l'​interface réseau, tout ce qui vient de notre réseau local à destination de l'​adresse ip, correspondant à notre interface réseau utilisant tel protocole, vers tel numéro de port (ou service) dont l'​état du paquet n'est pas invalide, c'​est-à-dire un paquet ayant l'​état '​nouveau',​ '​établi',​ '​relatif'​ ou 'non traqué'​.
 +
 +  * En sortie :
 +
 +  iptables -A OUTPUT -o eth0 -s <​ip_locale>​ -d <​reseau_local/​masque_de_reseau>​ -p <​nom_du_protocole>​ --sport <​nom_du_port>​ -m state --state RELATED,​ESTABLISHED -j ACCEPT
 +
 +> On précise que l'on accepte de laisser sortir de l'​interface réseau, tout paquet dont la source est l'​adresse ip correspondant à notre interface réseau, à destination de notre réseau local utilisant tel protocole, vers tel numero de port (ou service) dont l'​état est '​relatif'​ ou '​établi'​ - en rapport avec la règle d'​entrée.
 +
 +**-> Tous les paquets qui ne correspondent pas à ces critères d'​entrée ou sortie n'​entrent pas ou ne sortent pas !**
  
  
 +Pour dresser des définitions avec des arguments plus précis car tenant compte des particularités de chacun des protocoles, voir la documentation **[[http://​www.netfilter.org/​documentation/​|netfilter:​Documentation]]**.
doc/reseau/iptables-pare-feu-pour-un-client.txt · Dernière modification: 31/05/2023 20:57 par lagrenouille

Pied de page des forums

Propulsé par FluxBB