Architecture des réseaux · Étape 18

Filtre les flux inter-VLAN avec nftables

Applique une politique restrictive sur le routeur, autorise seulement les flux nécessaires et utilise les compteurs pour expliquer chaque décision.

Durée indicative · ~1 h 30Niveau intermédiairePrérequis conseillé · Leçon 17 — routage inter-VLAN fonctionnelPratique · TP
L’idée reçue

« Les VLAN sécurisent déjà le réseau. »

Ils séparent les domaines Ethernet. Dès qu’un routeur relie les VLAN, les flux deviennent possibles. La sécurité dépend alors de règles explicites, testées et documentées.

La politique cible est la suivante :

Source
Destination
Décision
Administration · VLAN 10
Tous les VLAN
Autoriser
Utilisateurs · VLAN 20
Services · TCP 8080
Autoriser
Utilisateurs · VLAN 20
Services · TCP 2222
Bloquer
Tout retour établi
Source de la connexion
Autoriser
Tout autre flux
Bloquer

01Préparer les VLAN et les services

sudo ./module4-segmentation-lab.sh router

Dans deux terminaux distincts, lance sur le serveur :

sudo ip netns exec m4-srv python3 -m http.server 8080 --bind 10.40.30.31
sudo ip netns exec m4-srv nc -lk 2222

Avant le pare-feu, les utilisateurs atteignent les deux ports :

sudo ip netns exec m4-users curl -s http://10.40.30.31:8080/ | head
sudo ip netns exec m4-users nc -zvw 1 10.40.30.31 2222

02Charger une politique restrictive

cat > /tmp/m4-filter.nft <<'EOF'
flush ruleset

table inet filter {
chain forward {
  type filter hook forward priority filter; policy drop;

  ct state invalid counter drop
  ct state established,related counter accept

  iifname "eth0.10" counter accept

  iifname "eth0.20" oifname "eth0.30"     tcp dport 8080 counter accept

  counter drop
}
}
EOF

sudo ip netns exec m4-r1 nft -f /tmp/m4-filter.nft
sudo ip netns exec m4-r1 nft list ruleset
Comprends pourquoi le retour fonctionne

La première requête HTTP des utilisateurs correspond à la règle du port 8080. Les paquets de réponse appartiennent ensuite à une connexion established. La règle conntrack autorise ce trafic de retour sans ouvrir tous les flux depuis le VLAN services.

03Tester les décisions

sudo ip netns exec m4-users curl -s http://10.40.30.31:8080/ | head
sudo ip netns exec m4-users nc -zvw 2 10.40.30.31 2222
sudo ip netns exec m4-admin1 nc -zvw 1 10.40.30.31 2222
Le service web reste accessible aux utilisateurs. Le port 2222 expire car le pare-feu supprime les paquets. L’administration atteint ce même port grâce à la règle basée sur eth0.10.

04Lire les compteurs comme preuves

sudo ip netns exec m4-r1 nft -a list chain inet filter forward

Relance chaque test et observe quelles règles augmentent. Un compteur nul indique qu’un paquet n’a jamais correspondu à la règle ; ce n’est pas la même chose qu’une règle qui correspond puis décide de bloquer.

1RouteLe paquet atteint-il le routeur ?
2Interfaceiifname et oifname attendues ?
3Étatnew, established ou invalid ?
4RègleQuel compteur augmente ?

05Distinguer drop et reject

La politique actuelle utilise drop : le client attend une expiration. Pour un réseau interne, un reject explicite peut parfois accélérer le diagnostic. Il révèle toutefois davantage d’informations. Ce choix fait partie de la politique de sécurité, pas seulement de la syntaxe.

Panne volontaire

Écris une règle qui ne correspond jamais

  1. remplace temporairement eth0.20 par eth0.200 ;
  2. recharge le fichier ;
  3. teste le service web ;
  4. compare le compteur de la règle web avec celui du drop final ;
  5. corrige le nom d’interface et valide.

06Nettoyer

sudo ip netns exec m4-r1 nft flush ruleset
sudo ./module4-segmentation-lab.sh cleanup

Ce que tu retiens

Une bonne politique part d’un besoin de flux, utilise une règle de retour stateful, limite les autorisations et conserve des preuves avec les compteurs. Les VLAN segmentent ; le pare-feu décide.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.