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 [12/10/2014 15:20]
Hypathie [Pare-feu pour une station (client)]
doc:reseau:iptables-pare-feu-pour-un-client [11/11/2014 07:45]
Hypathie [Sauvegarder ses règles]
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 ​-o eth0 -p icmp -m conntrack\
  ​--ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT  ​--ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT
  
-iptables -A INPUT -p icmp -m conntrack\+iptables -A INPUT -i eth0 -p icmp -m conntrack\
  ​--ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT  ​--ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT
 </​code>​ </​code>​
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>​
 +
 +<note tip>**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 ceci au pare-feu du client :**
 +
 +<code root>​iptables -A INPUT -i eth0 -s 192.168.1.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.1.0/​24 -p tcp\
 + ​--sport 631 -m state ! --state INVALID -j ACCEPT</​code>​
 +
 +**Dans ce cas au niveau de la passerelle** :
 +Si elle dotée d'un pare-feu, il faudra que **son** pare-feu permette le trafic pour le port 631, c'​est-à-dire accepter sur eth0 (réseau 192.168.0.0/​24) les entrées et les sorties tcp sur le port 631.\\ ​
 +
 +Par exemple :
 +
 +  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
 +  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
 +
 +
 +Voir : [[atelier:​chantier:​iptables-un-pare-feu-pour-une-passerelle?&#​le-script-de-la-passerelle|Script d'une passerelle]]
 +</​note> ​
  
 ====Vérifier et faire des tests==== ====Vérifier et faire des tests====
Ligne 486: Ligne 520:
  
  
-====Sauvegarder ses règles ====+=====Sauvegarder ses règles ​=====
 En l'​état actuel, si on éteint le système au redémarrage nos règles et tables utilisateur auront disparu.\\ ​ En l'​état actuel, si on éteint le système au redémarrage nos règles et tables utilisateur auront disparu.\\ ​
 Pour les sauvegarder,​ il y a plusieurs méthodes. On peut créer un script de démarrage, ou se servir de les commandes iptables-save et iptables-restore.\\ ​ Pour les sauvegarder,​ il y a plusieurs méthodes. On peut créer un script de démarrage, ou se servir de les commandes iptables-save et iptables-restore.\\ ​
 On choisira d'​abord la seconde méthode car c'est la plus simple !  On choisira d'​abord la seconde méthode car c'est la plus simple ! 
  
-===Avec les commandes iptables-save et iptables-restore===+====Avec les commandes iptables-save et iptables-restore====
 La commande iptables-save crée un fichier et la commande iptables-restore charge la dernière sauvegarde à partir du fichier crée par iptables-save. La commande iptables-save crée un fichier et la commande iptables-restore charge la dernière sauvegarde à partir du fichier crée par iptables-save.
  
-  * Pour sauvegarder toutes les règles ​: +===Pour sauvegarder toutes les règles=== 
-<code root>​iptables-save > /etc/iptables</​code>​+<code root>​iptables-save > /etc/firewall-client</​code>​
  
-  * Pour les charger après le redémarrage ​: +===Pour les charger après le redémarrage=== 
-<code root>​iptables-restore < /etc/iptables</​code>​+<code root>​iptables-restore < /etc/firewall-client</​code>​
  
 Bon il ne faut pas oublier de charger son pare-feu à chaque redémarrage !\\  Bon il ne faut pas oublier de charger son pare-feu à chaque redémarrage !\\ 
Ligne 504: Ligne 538:
 Évitons ce risque et surtout de nous fatiguer...\\ ​ Évitons ce risque et surtout de nous fatiguer...\\ ​
  
-  * Pour restaurer automatiquement les règles au démarrage+===Pour restaurer automatiquement les règles au démarrage===
  
-On va installer la commande iptables-restore avant que les interfaces ne soient chargés via le fichier /​etc/​network/​interfaces.\\ ​ +On va installer la commande iptables-restore avant que les interfaces ​ethernet ​ne soient chargés via le fichier /​etc/​network/​interfaces.\\ ​
- +
-L'​avantage de cette méthode est la possibilité de créer des règles personnalisées pour chaque interface. Si les règles sont indépendantes des interfaces, on place la commande ​ iptables-restore en pre-up de la boucle locale.+
  
 <code root>vim /​etc/​network/​interfaces</​code>​ <code root>vim /​etc/​network/​interfaces</​code>​
 <​code>​ <​code>​
 # The loopback network interface # The loopback network interface
-pre-up iptables-restore < /​etc/​iptables 
 auto lo auto lo
 iface lo inet loopback iface lo inet loopback
 +post-up iptables-restore < /​etc/​firewall-client
 </​code>​ </​code>​
  
-Donc le jour où on installera une carte wifi sur son vieil ordi fixe, on se teste d'​abord quelques nouvelles règles iptables, puis quand elles sont tip-top, on les sauvegarde ​ en crant un ''​iptables-save > /​etc/​iptables-wifi''​.\\ ​+===Avantages de cette méthode===
  
-On ne restera plus qu'à ajouter ''​pre-up ​iptables-restore ​< /​etc/​iptables-wifi''​ avant la configuration de l'​interface wlan dans /​etc/​network/​interfaces sans avoir toucher ce qui fonctionnait déjà...+  * La possibilité de créer des règles personnalisées pour chaque interface.  
 +Si les règles sont indépendantes des interfaces, on place la commande  ​iptables-restore ​en pre-up de la boucle locale.
  
-===Pour les fadas du "​scripting"​ shell===+On peut créer plusieurs fichiers à restaurer, un pour chaque interface par exemple, ou un fichier particulier pour un service particulier (un pour masquerade et squid, un autre pour un pare-feu)...
  
-**C'​est soit la méthode précédentesoit celle-ci !**\\  +Ainsi par exemple le jour où on ajoutera une carte wifi sur son vieil ordi fixe, on se teste quelques nouvelles règles iptablespuis quand elles sont tip-topon les sauvegarde ​ en créant ​un ''​iptables-save > /​etc/​iptables-wifi''​.\\ 
-(Pour tester n'​oubliez pas de commentermettre ​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>​+On ne restera plus qu'à ajouter ''​pre-up iptables-restore < /​etc/​iptables-wifi''​ avant la configuration de l'​interface wlan dans /​etc/​network/​interfaces sans avoir à modifier ce qui fonctionnait déjà... 
 + 
 +  * Une grande facilité de modification des règles du pare-feu : 
 +Si pour une raison ou une autre il est nécessaire d'​ajouter une règle au pare-feu, ou d'en supprimer une pour la modifier, on peut utiliser la commande iptables de suppression : 
 + 
 +Par exemple :\\  
 +Lister les règles avec un numéro de ligne : 
 + 
 +  iptables -L INPUT -n --line-numbers 
 + 
 +Supprimer une ligne particulière (avec le numéro de la colonne de gauche) : 
 + 
 +  iptables -D INPUT numeroDeLaLigneASupprimer 
 + 
 +Dans ce cas pour sauvegarder les nouvelles règles il n'y a qu'à relancer : 
 + 
 +  iptables-save > /​etc/​même_nom_de_fichier_que_celui_modifier 
 + 
 +Ainsi cela évite de modifier un quelconque fichier, et l'on peut se servir de toutes les commandes fournies par sa distribution. 
 + 
 +====Pour les fadas du "​scripting"​ shell==== 
 +Le script suivant permettra de mettre en place le pare-feu à chaque démarrage du système.\\  
 +Donc c'est soit la méthode de sauvegarde des règles iptables précédente,​ soit celle-ci.\\  
 +Si vous avez testé la première méthode, ne pas oublier de supprimer ou de commenté la ligne **''#​post-up iptables-restore < /​etc/​firewall-client''​** du fichier /​etc/​network/​interfaces. 
 + 
 +  * Ce script permettra un rappel des possibilités : 
 +<code root>/​etc/​init.d/​firewall-client.sh</​code>​ 
 + 
 +  Usage: /​etc/​init.d/​firewall-client.sh { start | stop | restart | status } 
 + 
 +  * Par exemple pour supprimer toutes les règles de toutes les tables : 
 +<code root>/​etc/​init.d/​firewall-client.sh stop</​code>​ 
 + 
 +  * Avec "​restart"​ pour permettre de remettre en place toutes les règles (via le fichier de sauvegarde d'​iptables-restore) 
 +  * Avec "​start" ​ pour relancer toutes les règles avec le script lui-même et les re-sauvegarder 
 +  * Avec "​status"​ pour l'​affichage des règles FILTER et NAT) 
 + 
 +<note tip> 
 +Il faut prendre conscience que si l'on souhaite modifier les règles du pare-feu, il est nécessaire après avoir effectué ses tests d'​aller éditer le fichier /​etc/​init.d/​firewall-client pour y apporter les modifications souhaitées aux commandes iptables su script.\\  
 +La commande iptables-save lancée après suppression,​ ajout, etc de nouvelles règles iptables seront écrasées au prochain redemarrage du système qui installera les règles du script /​etc/​init.d/​firewall-client qui auraient été laissées en l'​état. 
 +</​note>​ 
 + 
 +<​code ​bash firewall-client.sh>​
 #!/bin/sh #!/bin/sh
 ### BEGIN INIT INFO ### BEGIN INIT INFO
Ligne 544: Ligne 618:
 # Author: hypathie <​hypathie@debian-facile>​ # Author: hypathie <​hypathie@debian-facile>​
 # #
-##Set up init.d ​script+##Set up /etc/init.d/​firewall-client
 case "​$1"​ in case "​$1"​ in
 '​start'​) '​start'​)
-/​sbin/​iptables-restore < /​etc/​config_parefeu 
-RETVAL=$? 
-;; 
-'​stop'​) 
-/​sbin/​iptables-save > /​etc/​config_parefeu 
-RETVAL=$? 
-;; 
-'​clean'​) 
 ##Set up firewall-client ##Set up firewall-client
-# Clear any existing rules+# Clear any FILTER ​existing rules
 /​sbin/​iptables -F /​sbin/​iptables -F
 # Delete all User-specified chains # Delete all User-specified chains
Ligne 571: Ligne 637:
 /​sbin/​iptables -t filter -A OUTPUT -o lo -j ACCEPT /​sbin/​iptables -t filter -A OUTPUT -o lo -j ACCEPT
 #Allow ping to internal network #Allow ping to internal network
-/​sbin/​iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT +/​sbin/​iptables -A OUTPUT ​-o eth0 -p icmp -m conntrack --ctstate NEW,​ESTABLISHED,​RELATED -j ACCEPT 
-/​sbin/​iptables -A INPUT -p icmp -m conntrack --ctstate ESTABLISHED,​RELATED -j ACCEPT+/​sbin/​iptables -A INPUT -i eth0 -p icmp -m conntrack --ctstate ​NEW,ESTABLISHED,​RELATED -j ACCEPT
 #Get web #Get web
 /​sbin/​iptables -t filter -A OUTPUT -p tcp -m multiport --dports 80,443,8000 -m conntrack --ctstate NEW,​RELATED,​ESTABLISHED -j ACCEPT /​sbin/​iptables -t filter -A OUTPUT -p tcp -m multiport --dports 80,443,8000 -m conntrack --ctstate NEW,​RELATED,​ESTABLISHED -j ACCEPT
 /​sbin/​iptables -t filter -A INPUT -p tcp -m multiport --sports 80,443,8000 -m conntrack --ctstate RELATED,​ESTABLISHED -j ACCEPT /​sbin/​iptables -t filter -A INPUT -p tcp -m multiport --sports 80,443,8000 -m conntrack --ctstate RELATED,​ESTABLISHED -j ACCEPT
 +#Allow cups
 +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
 +#Allow cups from sub-net
 +/​sbin/​iptables -A INPUT -i eth0 -s 192.168.1.0/​24 -d 192.168.0.22 -p tcp --dport 631 -m state --state NEW,​RELATED,​ESTABLISHED -j ACCEPT
 +/​sbin/​iptables -A OUTPUT -o eth0 -s 192.168.0.22 -d 192.168.1.0/​24 -p tcp --sport 631 -m state ! --state INVALID -j ACCEPT
 #Set up a user chain for ssh outgoing ​ #Set up a user chain for ssh outgoing ​
 /​sbin/​iptables -t filter -N OutGoingSSH /​sbin/​iptables -t filter -N OutGoingSSH
Ligne 592: Ligne 665:
 /​sbin/​iptables -t filter -A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j ACCEPT /​sbin/​iptables -t filter -A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,​ESTABLISHED -j ACCEPT
 /​sbin/​iptables -t filter -A INPUT -i eth0 -s 192.168.0.0/​24 -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT /​sbin/​iptables -t filter -A INPUT -i eth0 -s 192.168.0.0/​24 -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
 +echo "set up firewall-client .........>​ [OK]"
 +/​sbin/​iptables-save > /​etc/​firewall-client
 +echo "​iptables-save > /​etc/​firewall-client .........>​ [OK]"
 +RETVAL=$?
 +;;
 +'​stop'​)
 +# Supprime toutes les règles du pare-feu
 +/​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] ..... POLICY ......> [ACCEPT]"​
 +/​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
 +/​sbin/​iptables -t mangle -P FORWARD ACCEPT
 +/​sbin/​iptables -t mangle -P INPUT ACCEPT
 +/​sbin/​iptables -t raw -P OUTPUT ACCEPT
 +/​sbin/​iptables -t raw -P PREROUTING ACCEPT
 +echo "ALL TABLES ....[FLUSH] ..... ALL POLICY .......> [ACCEPT]"​
 RETVAL=$? RETVAL=$?
 ;; ;;
 '​restart'​) '​restart'​)
-$0 stop && $0 start+/​sbin/​iptables-restore < /​etc/​firewall-client 
 +echo "/​etc/​firewall-client ........[OK]"​ 
 +RETVAL=$
 +;; 
 +'​status'​) 
 +/​sbin/​iptables -L -n --line-numbers 
 +/​sbin/​iptables -t nat -L
 RETVAL=$? RETVAL=$?
 ;; ;;
 *) *)
-echo "​Usage:​ $0 { start | stop | restart | clean}"+echo "​Usage:​ $0 { start | stop | restart | status ​}"
 RETVAL=1 RETVAL=1
 ;; ;;
Ligne 606: Ligne 711:
 </​code>​ </​code>​
  
-===firewall-client.sh comme script init===+===Instalation de firewall-client.sh comme script init===
  
-Après avoir téléchargé ​firewall-client.sh.+  * Téléchargé ​firewall-client.sh. 
 + 
 +  * Déplacer le fichier firewall-client.sh dans le répertoire d'init :
 <note important>​ <note important>​
 Attention de bien changer $USER par votre nom d'​utilisateur !\\  Attention de bien changer $USER par votre nom d'​utilisateur !\\ 
 Pour pouvoir écrire (i.e. créer un fichier dans un dossier root, il faut lancer la commande en tant que root. Et donc $USER serait l'​utilisateur root qui n'a pas de fichier "​Téléchargements"​. Pour pouvoir écrire (i.e. créer un fichier dans un dossier root, il faut lancer la commande en tant que root. Et donc $USER serait l'​utilisateur root qui n'a pas de fichier "​Téléchargements"​.
 </​note>​ </​note>​
-  * Déplacer dans le répertoire d'init : 
  
 <code root>mv /​home/​$USER/​Téléchargements/​firewall-client.sh /​etc/​init.d/</​code>​ <code root>mv /​home/​$USER/​Téléchargements/​firewall-client.sh /​etc/​init.d/</​code>​
  
-  * Ajouter ​les droits d'​exécution ​au fichier ​pour en faire un exécutable ​:+  * Définir ​les droits d'​exécution ​et l'​appartenance du fichier ​/​etc/​init.d/​firewall-client.sh 
 + 
 +Ils doivent être :
  
 <code root> <code root>
-chmod +x /​etc/​init.d/​firewall-client.sh +chmod 0755 /​etc/​init.d/​firewall-client.sh 
-chmod 755 /​etc/​init.d/​firewall-client.sh+chown root:​root ​/​etc/​init.d/​firewall-client.sh
 </​code>​ </​code>​
  
Ligne 628: Ligne 736:
 <code root>​update-rc.d firewall-client.sh defaults</​code>​ <code root>​update-rc.d firewall-client.sh defaults</​code>​
  
-Et si tout c'est bien passé, au prochain redémarrage :+===Et si tout c'est bien passé=== 
 +Au prochain redémarrage ​
 +  * Le pare-feu se met en place pendant le démarrage du système  
 +<​code>​set up firewall-client .........>​ [OK] 
 +iptables-save > /​etc/​firewall-client .........>​ [OK]</​code>​ 
 + 
 +  * On peut le vérifier ​:
  
 <code root>​iptables -L -n --line-numbers</​code>​ <code root>​iptables -L -n --line-numbers</​code>​
  
-tout est là ! 8-)+Ou (plus complet) : 
 + 
 +<code root>/​etc/​init.d/​firewall-client.sh status</​code>​ 
 + 
 +Tout est là ! 8-)
  
 <note tip> <note tip>
Ligne 648: Ligne 766:
 Et voilà c'est déjà fini ;-) Et voilà c'est déjà fini ;-)
  
-**Prochain n° sur iptables : "un pare-feu pour une passerelle-routeur ​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 660: Ligne 779:
 | -L -t typetable | lister les règles d'un type de table où typetable est\\ soit ''​FILTER''​\\ soit ''​NAT''​\\ soit ''​MANGLE''​ ... | | -L -t typetable | lister les règles d'un type de table où typetable est\\ soit ''​FILTER''​\\ soit ''​NAT''​\\ soit ''​MANGLE''​ ... |
 |-E <​nowiki>​[chain]</​nowiki>​ | renommer la chaîne chain | |-E <​nowiki>​[chain]</​nowiki>​ | renommer la chaîne chain |
-| -F <​nowiki>​[chain]</​nowiki>​ | effacer (flush) les règles de la chaîne chain\\ ATTENTION\\ si on ne précise pas de chaîne, tout est effacé ! |+| -F <​nowiki>​[chain]</​nowiki>​ | effacer (flush) les règles de la chaîne chain |
 | -N chain | créer une nouvelle chaîne chain par l'​usager | | -N chain | créer une nouvelle chaîne chain par l'​usager |
 | -X chain | effacer la chaîne chain de l'​usager | | -X chain | effacer la chaîne chain de l'​usager |
Ligne 666: Ligne 785:
 | -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 802:
 [[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