Netfilter
Netfilter est le module qui apporte à Linux les fonctions de pare-feu, de traduction d'adresse et d'historisation du trafic réseau.
Recherche sur Google Images :
Source image : www.formation.ssi.gouv.fr Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur. |
Page(s) en rapport avec ce sujet :
- Netfilter est un module qui sert à filtrer et de manipuler les paquets... La table apporte : une chaîne INPUT pour filtrer les paquets à destination du ... (source : fr.wikibooks)
- netfilter est un sous-ensemble du noyau de GNU/Linux qui permet d'interagir sur le ... Quand un paquet IP est pris en charge par le noyau, il effectue un voyage dans les ... netfilter fonctionne avec tables et de chaines.... (source : aidounix)
- La table "Filter". Table par défaut. Cette table va contenir l'ensemble des règles qui permettront de filtrer les paquets. Cette table contient trois chaînes :... (source : pagesperso-orange)
Développeur | L'équipe Netfilter[1] |
Environnement | GNU/Linux |
Type | Pare-feu |
Licence | GNU GPL[2] |
Site web | www. netfilter. org |
Netfilter est le module qui apporte à Linux les fonctions de pare-feu, de traduction d'adresse et d'historisation du trafic réseau. Netfilter fonctionne en mode noyau. Il intercepte et manipule les paquets IP avant et après le routage.
iptables
est la commande autorise un administrateur réseaux de configurer Netfilter en espace utilisateur. iptables
configure la gestion des paquets réseaux IPv4. Pour la gestion des paquets réseaux IPv6, on utilise la commande ip6tables
.
Historique et appellation
Netfilter a été intégré au noyau Linux à partir de la version 2.4. Il est issu de la réécriture d'ipchains qui fonctionnait dans la série des noyaux 2.2. Pour favoriser la transition, les paramètres d'iptables ressemblent à ceux de son prédécesseur.
Le nom iptables est fréquemment utilisé pour parler de toute l'infrastructure Netfilter mais il n'est que l'outil servant au configurer à partir d'un interpréteur de commandes.
Fonctionnement général
Netfilter installe des accroches (hooks) dans la gestion des paquets réseau du noyau Linux. Les accroches sont spécifiques à chaque protocole réseau. Quand elles sont chargées, les tables de Netfilter inscrivent des chaînes sur ces accroches. Chacune de ces chaînes peut contenir des règles qui déterminent le traitement à effectuer sur les paquets qui traversent l'accroche. L'administrateur peut manipuler directement les règles des chaînes avec l'outil iptables.
Par exemple en IPv4, l'accroche NF_IP_LOCAL_IN est installée après le routage d'un paquet qui arrive d'une interface réseau et avant qu'il soit envoyé aux processus. La table filter installe une chaîne appelée INPUT sur cette accroche. L'administrateur peut alors ajouter dans cette chaîne des règles qui autorisent ou non les paquets entrants.
Chaque règle spécifie des critères de sélection (adresse source, protocole, etc. ) et ce qui doit advenir des paquets correspondants (rejet, autorisation, archivage, etc. ). Les critères disponibles et les actions envisageables ne sont pas forcément les mêmes suivant la chaîne dans laquelle on ajoute la règle. Suivant l'action choisie, le paquet parcourt ou non les règles suivantes de la chaîne. Si aucune règle ne correspond au paquet, c'est la politique par défaut de la chaîne qui décide du sort du paquet.
Tables
Netfilter est apporté avec plusieurs tables principales, mais des modules d'extension peuvent en créer de nouvelles. Chaque table contient des chaînes prédéfinies à travers lesquelles les paquets vont passer. L'administrateur peut ajouter et retirer des chaînes personnelles dans n'importe quelle table. Au départ, l'ensemble des chaînes sont vides et leur politique par défaut est d'accepter les paquets.
Tables pour les paquets réseaux IPv4
Pour la gestion des paquets réseaux IPv4, Netfilter dispose de 3 tables : filter, nat et mangle. Elles se paramètrent avec la commande iptables
.
filter
La table filter est responsable du filtrage des paquets. Son utilisation principale est de jeter (DROP) ou de laisser passer (ACCEPT) les paquets. La table apporte :
- une chaîne INPUT pour filtrer les paquets à destination du dispositif,
- une chaîne OUTPUT pour filtrer les paquets émis par les processus du dispositif,
- et une chaîne FORWARD pour filtrer les paquets que le dispositif doit transmettre.
nat
La table nat est responsable de la traduction d'adresses et de ports. Seul le premier paquet de chaque connexion passe à travers cette table. Les règles déterminent comment seront modifiés l'ensemble des paquets relatifs à cette connexion. Les chaînes apportées :
- une chaîne PREROUTING traite les paquets arrivant de l'extérieur avant qu'ils ne soient routés. Elle sert à modifier la destination de la connexion (DNAT) ;
- une chaîne POSTROUTING traite les paquets après la décision de routage, juste avant que le paquet soit expédié. Elle permet la modification de la source de la connexion (SNAT). On peut ainsi camoufler la véritable origine d'une connexion ;
- une chaîne OUTPUT fonctionne comme la chaîne PREROUTING mais pour les connexions issues d'un processus du dispositif.
mangle
La table mangle est responsable de la transformation des options des paquets comme par exemple la qualité de service. Elle permet surtout d'apposer une marque (interne au noyau) qui est parfois utilisée pour la couche routage ou les fonctions avancées de qualité de service comme Diffserv. L'ensemble des paquets passent à travers cette table dans une ou plusieurs chaînes. Ils passent :
- dans la chaîne PREROUTING juste avant le routage s'ils proviennent d'une interface réseau ;
- dans la chaîne INPUT s'ils sont conçus pour une adresse du dispositif ;
- dans la chaîne OUTPUT s'ils ont été émis par un processus du dispositif ;
- dans la chaîne FORWARD s'ils proviennent d'une interface réseau et qu'ils sont conçus pour une autre interface réseau ;
- et dans la chaîne POSTROUTING après le routage, juste avant d'être expédiés.
Tables pour les paquets réseaux IPv6
Pour la gestion des paquets IPv6, Netfilter dispose de 3 autres tables : filter, raw et mangle. Elles se paramètrent avec la commande ip6tables
.
filter
La table filter comporte 3 chaînes : INPUT, FORWARD et OUTPUT
raw
La table raw comporte 2 chaînes : PREROUTING et OUTPUT
mangle
La table mangle comporte 5 chaînes : PREROUTING, INPUT, FORWARD, OUTPUT et POSTROUTING.
Qualités
- Étant le pare-feu officiel de Linux, Netfilter est particulièrement répandu et bien documenté. Il est facile d'obtenir de l'aide sur les forums.
- Des interfaces graphiques existent pour simplifier sa configuration.
- La traduction d'adresses (NAT) est particulièrement flexible. On peut faire chaque type de NAT avec des restrictions de source, de destination et de service.
- L'architecture modulaire permet une grande évolution et l'adaptation à des besoins spécifiques[4]
Défauts
- Chaque appel à la commande iptables nécessite la lecture et la modification intégrale d'une table. Pour créer un jeu de règle de taille importante, il faut fréquemment des milliers d'appels à iptables et le temps de chargement des règles est alors particulièrement élevé. Qui plus est , durant la phase de construction du jeu de règles, le dispositif de filtrage est dans un état indéterminé et il est par conséquent prudent de ne pas accepter de nouvelles connexions pour des raisons de sécurité. Cependant, une fois la mise au point terminée, il est envisageable d'utiliser les commandes iptables-save et iptables-restore afin d'accélérer le chargement des règles. Pour s'abstraire de ce problème, on peut aussi directement générer des fichiers utilisables par iptables-restore.
- Comme énormément d'autres pare-feu, Netfilter permet l'inspection de service (appelé conntrack). Cela permet la traduction d'adresses sur des protocoles spécifiques comme FTP, H323, SNMP ou TFTP mais c'est une pratique risquée. L'inspection de service étant complexe, tout bug pourrait permettre la prise de contrôle de la machine. Mais cette inspection est facultative, en chargeant ou non les modules conntrack associés.
- Netfilter ne fait pas de règles de NAT statiques pour des plages d'adresses. Pour faire une NAT statique de plage, il faut écrire une règle iptables par adresse. Par contre il peut faire de la traduction dynamique de plages d'adresses[5] ou utiliser l'extension NETMAP qui permet la traduction statique des adresses d'un réseau[4].
- Netfilter ne gère pas certaines technologies comme les proxys, les IDS ou les serveurs d'authentification. Pour faire cela sous Linux il faut utiliser d'autres logiciels qui se configurent à part.
Exemples d'utilisation
Comme énormément de logiciels du projet GNU, la commande iptables accepte une forme longue et une forme courte pour ses paramètres. Par exemple pour vider la chaine INPUT de la table filter (la table par défaut), l'administrateur peut utiliser :
iptables --flush INPUT
ou
iptables -F INPUT
Pour vider la chaine d'une autre table, la syntaxe est la suivante :
iptables --table nat --flush POSTROUTING
La politique par défaut est d'accepter l'ensemble des paquets, ce qui est le plus souvent un mauvais choix pour la sécurité. Pour changer cette règle sur la chaine FORWARD de la table filter, la syntaxe est :
iptables --policy FORWARD DROP
ou encore
iptables -P FORWARD DROP
Pour laisser passer les paquets sur le port telnet qui viennent d'un réseau local (forme longue) :
iptables --append INPUT --protocol tcp --destination-port telnet --source 192.168.13.0/24 --jump ACCEPT
Pour ignorer les autres paquets entrants sur le port telnet (forme courte) :
iptables -A INPUT -p tcp --dport telnet -j DROP
Pour rejeter les paquets entrants sur le port 3128, fréquemment utilisé par les proxies :
iptables -A INPUT -p tcp --dport 3128 -j REJECT --reject-with tcp-reset
Pour effectuer une traduction d'adresse automatique pour l'ensemble des paquets partant par l'interface ppp0 qui représente fréquemment la connexion internet :
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Ces programmes permettent de configurer Netfilter graphiquement :
- Firestarter
- Guarddog
- NuFace[6]
- Dwall[7]
- Firewall Builder[8]
Les autres pare-feu libres
- Linux Ipchains, pare-feu libre du noyau Linux 2.2.
- Packet Filter ou PF, pare-feu libre de OpenBSD, et désormais dans les autres BSDs.
- IPFilter ou IPF, pare-feu libre de BSD et Solaris 10.
- Ipfirewall ou IPFW, pare-feu libre de FreeBSD.
- (en) (fr) Site officiel
- (fr) La page de manuel de la commande iptables
Source
Notes
- ↑ The netfilter core team [archive]
- ↑ Plus d'informations sur la page officielle [archive]
- ↑ Linux netfilter Hacking HOWTO [archive]
- ↑ a b Netfilter Extensions HowTo [archive]
- ↑ Voir dans le NAT HowTo section 6.3 [archive], Mappings Multiples, Dépassements et Clashs
- ↑ (en) Site officiel de NuFace [archive]
- ↑ (en) Site officiel de Dwall [archive]
- ↑ (en) Site officiel de Firewall Builder [archive]
Recherche sur Amazone (livres) : |
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 23/03/2009.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.