Tables Netfilter
Tables Netfilter
Les tables Netfilter constituent la base de l'organisation du filtrage des paquets sous Linux. Chaque table a un rôle spécifique dans le traitement des paquets réseau.
Vue d'ensemble
Tables principales
| Table | Fonction | Usage principal |
|---|---|---|
| filter | Filtrage des paquets | Pare-feu |
| nat | Translation d'adresses | Redirection et masquage |
| mangle | Modification des paquets | Marquage et modification des en-têtes |
| raw | Gestion des connexions | Configuration du connection tracking |
Table filter
Description
La table filter est la table par défaut d'IPTables. Elle est utilisée pour le filtrage des paquets et la prise de décision concernant l'autorisation ou le blocage du trafic.
Chaînes disponibles
- INPUT : Paquets destinés au système local
- OUTPUT : Paquets générés par le système local
- FORWARD : Paquets routés à travers le système
Exemples d'utilisation
Filtrage basic
# Autoriser le trafic HTTP entrant iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
# Bloquer une adresse IP iptables -t filter -A INPUT -s 192.168.1.100 -j DROP
Filtrage avancé
# Limiter les connexions SSH iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min -j ACCEPT
# Protéger contre les scans iptables -t filter -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
Table nat
Description
La table nat gère la translation d'adresses réseau (NAT) et la redirection de ports. Elle permet de modifier les adresses source et destination des paquets.
Chaînes disponibles
- PREROUTING : Modification des paquets entrants avant routage
- POSTROUTING : Modification des paquets sortants après routage
- OUTPUT : Modification des paquets générés localement
Types de NAT
Source NAT (SNAT)
Modification de l'adresse source des paquets sortants.
# Configuration SNAT classique iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1
# Masquerading (SNAT dynamique) iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Destination NAT (DNAT)
Modification de l'adresse destination des paquets entrants.
# Redirection de port iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:8080
# Load balancing simple iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 192.168.1.10:80 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.11:80
Table mangle
Description
La table mangle permet de modifier les en-têtes des paquets et de marquer les paquets pour un traitement ultérieur.
Chaînes disponibles
- PREROUTING
- INPUT
- FORWARD
- OUTPUT
- POSTROUTING
Fonctionnalités principales
Marquage des paquets
# Marquer les paquets pour QoS iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
Modification des en-têtes
# Modifier le TTL iptables -t mangle -A PREROUTING -j TTL --ttl-set 64
# Modifier le TOS iptables -t mangle -A PREROUTING -p tcp --dport 22 -j TOS --set-tos 0x10
Table raw
Description
La table raw permet de configurer les exemptions au suivi de connexion (connection tracking).
Chaînes disponibles
- PREROUTING
- OUTPUT
Utilisation typique
Désactivation du connection tracking
# Désactiver pour certains ports iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
# Désactiver pour certaines adresses iptables -t raw -A PREROUTING -s 192.168.1.0/24 -j NOTRACK
Priorités de traitement
Ordre de traitement des tables
- raw
- mangle
- nat (DNAT)
- filter
- nat (SNAT)
Schéma de flux
| Paquet entrant | Paquet sortant |
|---|---|
| raw (PREROUTING) | raw (OUTPUT) |
| mangle (PREROUTING) | mangle (OUTPUT) |
| nat (PREROUTING) | nat (OUTPUT) |
| mangle (INPUT) | mangle (POSTROUTING) |
| filter (INPUT) | nat (POSTROUTING) |
Bonnes pratiques
Organisation des règles
- Utiliser la table appropriée pour chaque type d'opération
- Minimiser l'utilisation de la table mangle
- Organiser les règles par fonction
- Documenter les modifications complexes
Performance
- Placer les règles les plus utilisées en premier
- Éviter les règles redondantes
- Utiliser judicieusement le connection tracking
- Monitorer l'impact des règles complexes
Sécurité
- Vérifier les règles avant application
- Tester les configurations
- Sauvegarder les configurations fonctionnelles
- Maintenir une documentation à jour
Dépannage
Problèmes courants
- Conflit entre règles
- Ordre incorrect des règles
- Problèmes de connexion tracking
- Issues de performance
Outils de diagnostic
- iptables -L -v -n
- iptables-save
- conntrack -L
- tcpdump