Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

applications:iptables [Le 30/12/2006, 22:45]
Id2ndR déplacée vers [[iptables]]
— (Version actuelle)
Ligne 1: Ligne 1:
-<​code>​ 
-Ubuntu toutes versions 
-</​code>​ 
  
-Article original [[https://​wiki.ubuntu.com/​IptablesHowTo|traduit]] par [[utilisateurs:​Kmeleon]] 
- 
-Refonte : [[utilisateurs:​eks]] 
- 
- 
- 
-====== Netfilter & Iptables ====== 
- 
-Netfilter est un module du noyau Linux (depuis la version 2.4) qui offre la possibilité de contrôler, modifier et filtrer les paquets IP, et de suivre les connexions. Il fournit ainsi les fonctions de pare-feu, de partage de connexions internet et d'​autorisation du trafic réseau. 
-Iptables est l'​interface "ligne de commande"​ permettant de configurer Netfilter. 
- 
-Ce document contient les informations de base à propos de iptables, pour ceux qui souhaitent mettre en place un firewall et/ou un partage de connexion sanspasser par une interface graphique. Les lecteurs désirant approfondir leur recherche trouveront des dizaines de tutoriels sur iptables & netfilter. 
- 
- 
-===== Firewall ===== 
- 
-Nous allons configurer notre firewall de la manière suivante : 
--> On bloque tout le trafic entrant par défaut 
--> On autorise au cas par cas : le trafic appartenant ou lié à des connexions déjà établies, et le trafic à destinations des serveurs (web, ssh, ...) que nous souhaitons mettre à disposition. 
- 
-Afin de ne pas avoir de problème au moment où on crée ces règles, nous allons d'​abord créer les autorisations,​ puis nous enverrons le reste en enfer. 
- 
-En tapant 
-<​code>​ 
-# sudo iptables -L 
-</​code>​ 
-une liste de vos règles actuelles est affichée. Si vous (ou un logiciel) n'avez encore jamais touché à iptables, les chaînes sont vides, et vous devriez voir: 
-<​code>​ 
-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>​ 
- 
-Pour l'​instant,​ tout passe dans toutes les directions (//policy ACCEPT//). 
-Pour cette configuration basique, seul le trafic entrant (chaîne input) nous intéresse. 
- 
-=== Autoriser le trafic entrant d'une connexion déjà établie === 
-Nous pouvons permettre à une connexion déjà ouverte de recevoir du trafic: 
-<​code>​ 
-# iptables -A INPUT -m state --state ESTABLISHED,​RELATED -j ACCEPT 
-</​code>​ 
- 
-=== Permettre le trafic entrant sur un port spécifique === 
- 
-Pour permettre le trafic entrant sur le port 22 (traditionnellement utilisé par SSH, vous devrez indiquer à iptables tout le trafic TCP sur le port 22 de votre adaptateur réseau. 
-<​code>​ 
-# iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT 
-</​code>​ 
-Cette commande ajoute une règle (//-A//) à la chaîne contrôlant le trafic entrant //INPUT//, pour autoriser le trafic (//-j ACCEPT//), vers l'​interface (//-i//) //eth0// et à destination du port (//​--dport//​) //SSH// (on aurait pu mettre 22). 
- 
-Maintenant vous pouvez vérifier vos règles iptables: 
-<​code>​ 
-# iptables -L 
-Chain INPUT (policy ACCEPT) 
-target ​    prot opt source ​              ​destination ​       ​ 
-ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​           state RELATED,​ESTABLISHED  ​ 
-ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​ssh ​ 
-</​code>​ 
- 
-Maintenant, acceptons tout le trafic web (www) entrant: 
-<​code>​ 
-# iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT 
-</​code>​ 
- 
-En regardant nos règles, nous avons: 
-<​code>​ 
-# iptables -L 
-Chain INPUT (policy ACCEPT) 
-target ​    prot opt source ​              ​destination ​       ​ 
-ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​           state RELATED,​ESTABLISHED  ​ 
-ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​ssh ​ 
-ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​www ​ 
-</​code>​ 
- 
-Nous avons exceptionnellement autorisé le trafic tcp pour ssh et les ports web, mais comme nous n'​avons rien bloqué, tout le trafic passe quand même. 
- 
-=== Bloquer le trafic === 
-Maintenant que nous avons fini avec les autorisations,​ il faut maintenant bloquer le reste. 
-Nous allons en fait modifier la "​politique par défaut"​ (//​policy//​) de la chaîne //INPUT// : cette décision (//DROP//) s'​applique lorsqu'​aucune règle n'a été appliqué à un paquet. Donc, si la tentative de connexion n'est permise par aucune des règles précédentes,​ elle sera rejetée. 
- 
-<​code>​ 
-# iptables -P INPUT DROP 
-# iptables -L 
-Chain INPUT (policy DROP) 
-target ​    prot opt source ​              ​destination ​       ​ 
-ACCEPT ​    ​all ​ --  anywhere ​            ​anywhere ​           state RELATED,​ESTABLISHED  ​ 
-ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​ssh ​ 
-ACCEPT ​    ​tcp ​ --  anywhere ​            ​anywhere ​           tcp dpt:​www ​ 
-</​code>​ 
- 
-**Un autre moyen de procéder** est l'​ajout en fin de chaîne d'une règle supprimant les paquets (les paquets autorisés par les règles précédentes n'​atteindraient pas celle-ci), via //iptables -P INPUT -j DROP//, mais il faudrait alors faire attention à la positions des futures règles. 
- 
-=== Autoriser le trafic local === 
- 
-Un petit problème de notre configuration est que même l'​interface locale (loopback) est bloquée. 
-Nous pourrions avoir écrit les règles de rejet seulement pour eth0 en spécifiant -i eth0, mais nous pouvons aussi ajouter une règle pour loopback. Par exemple, nous pourrions l'​insérer en 2ème position : 
- 
-<​code>​ 
-# iptables -I INPUT 2 -i lo -j ACCEPT 
-</​code>​ 
- 
-Fini ! 
- 
-Pour lister les règles plus en détail. 
-<​code>​ 
-# iptables -L -v -n 
-</​code>​ 
- 
-===== Passerelle/​routeur et partage de connexion ===== 
- 
-//A venir. merci de secouer les puces à [[utilisateurs:​eks]] si vous trouvez qu'il traîne trop :)// 
- 
-===== Informations supplémentaires ===== 
-  * [[http://​iptables-tutorial.frozentux.net/​fr/​book1.html|Tutoriel Iptables]] 
-  * [[http://​www.netfilter.org/​documentation/​HOWTO/​packet-filtering-HOWTO.html| How To Iptables]] 
-  * [[http://​www.netfilter.org/​documentation/​| Documentation Multilingue de Netfilter et Iptables]] 
-  * [[http://​www.nbs-system.com/​article/​iptables_howto| IPtables HOWTO français]] 
-  * [[http://​olivieraj.free.fr/​fr/​linux/​information/​firewall/​ |Bible française pour apprendre les bases de la sécurité sous Linux]] 
-  * [[http://​people.netfilter.org/​~rusty/​unreliable-guides/​ | Rusty'​s Remarkably Unreliable Guides]] 
-  * [[http://​www.labo-linux.org/​articles-fr/​iptables-par-l-exemple/​les-bases | Tutorial Labo-Linux de l'​école SUPINFO]] 
- 
-===== Crédits ===== 
-Merci à Rusty Russell et son How-To, il est la base de cette page. 
-Et merci surtout pour son travail au sein de l'​équipe de développement de Netfilter :) 
  • applications/iptables.1167515131.txt.gz
  • Dernière modification: Le 18/04/2011, 14:46
  • (modification externe)