Tables Netfilter

De Travail-Ivan 2
Version datée du 7 novembre 2024 à 22:40 par Ivan (discussion | contributions) (Page créée avec « = 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 === {| class="wikitable" ! Table !! Fonction !! Usage principal |- | filter || Filtrage des paquets || Pare-feu |- | nat || Translation d'adresses || Redirection et masquage |- | mangle || Modification des paquets || Marquage et m... »)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)

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

  1. raw
  2. mangle
  3. nat (DNAT)
  4. filter
  5. 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

Voir aussi