Objectifs du Projet
Ce projet fait suite à mon lab SOC/Homelab, dans lequel je notais déjà que la politique de filtrage pfSense était trop permissive et qu’une refonte selon les standards de l’ANSSI était nécessaire. J’ai pu récupérer un FortiGate 90D, qui va me permettre d’administrer un pare-feu physique largement utilisé en entreprise.
L’objectif est simple : remplacer des règles “tout autorisé” par une politique structurée, précise et documentée, en suivant la note technique DAT-NT-006 de l’ANSSI : Recommandations pour la définition d’une politique de filtrage réseau d’un pare-feu.
Le résultat attendu est une configuration qui pourrait tenir dans un contexte professionnel : chaque flux est justifié, le pare-feu lui-même est protégé, et les journaux permettent de tracer les événements.
Architecture et Contexte
Infrastructure
L’infrastructure est la suivante :
[Internet]
│
[Freebox — 192.168.1.1]
│
├── [PC Admin — 192.168.1.x]
│
[FortiGate 90D — WAN : 192.168.1.148]
│
├── [LAN interne — 10.0.0.x]
│ └── [Proxmox — 10.0.0.10]
├── [VLAN10-LAN — 10.10.10.0/24]
│ └── [VM Portfolio — 10.10.10.3]
├── [VLAN20-LAN — 10.20.20.0/24]
├── [VLAN30-LAN — 10.30.30.0/24]
└── [VLAN40-LAN — 10.40.40.0/24]
Le FortiGate est connecté en sortie sur ma box. Mon PC d’administration est lui aussi connecté à la box, ce qui signifie qu’il accède à l’interface d’administration du FortiGate depuis le WAN, c’est un point critique à sécuriser correctement.
État initial — Ce qui posait problème
Voici les règles en place avant intervention :
| Seq | Source | Destination | Service | Action | NAT | Log |
|---|---|---|---|---|---|---|
| 1 | internal | all | ALL | ACCEPT | Oui | Oui |
| 2 | VLAN10-LAN | all | ALL | ACCEPT | Oui | Oui |
| 3 | wan1 | proxmox | ALL | ACCEPT | Non | Oui |
| 4 | wan1 | VLAN10-LAN | ALL | ACCEPT | Non | Oui |
| 5 | all (implicit) | all | ALL | DENY | — | Oui |

Ces règles permettent de faire fonctionner l’accès à mon proxmox, mais elles posent plusieurs problèmes :
- Trop permissives : les règles 1 et 2 autorisent tout depuis le LAN/VLAN10 vers Internet, tous services confondus.
- Pas de restriction des services entrants : la règle 3 autorise tous les protocoles depuis Internet vers Proxmox — aucune raison d’exposer autre chose que le port de gestion.
- Pas de protection du pare-feu lui-même : rien n’empêche explicitement d’envoyer du trafic vers les interfaces du FortiGate.
- Pas de documentation : aucun commentaire sur les règles, impossible de savoir pourquoi elles existent en l’état.
C’est exactement ce que la note ANSSI décrit comme une dérive naturelle des configurations : règles surchargées, utilité méconnue, lisibilité nulle.
Le Modèle ANSSI — 6 Sections
La note technique DAT-NT-006 propose un modèle d’organisation en 6 sections rigoureusement ordonnées, basé sur un principe de sécurité positif : tout ce qui n’est pas explicitement autorisé est interdit.
| Section | Contenu |
|---|---|
| 1 | Règles d’autorisation des flux à destination du pare-feu |
| 2 | Règles d’autorisation des flux émis par le pare-feu |
| 3 | Règle de protection du pare-feu |
| 4 | Règles d’autorisation des flux métiers |
| 5 | Règles “antiparasites” (optionnel) |
| 6 | Règle d’interdiction finale |
Les conditions d’application sont simples : les règles sont évaluées séquentiellement de haut en bas, et la première règle correspondante s’applique. C’est exactement le comportement du FortiGate.
Application sur FortiGate
Compromis homelab
La note ANSSI recommande d’administrer le pare-feu depuis une interface réseau physique dédiée, isolée du reste du trafic. Dans mon homelab, cette séparation physique n’est pas toujours possible. Ici, le PC d’administration est connecté à la box sur le même réseau que le WAN du FortiGate (192.168.1.x). C’est un compromis acceptable à condition de restreindre précisément qui peut accéder à l’interface d’administration.
Section 1 — Flux à destination du pare-feu
Cette section concerne les règles qui autorisent l’accès à l’administration du FortiGate. L’objectif est de réduire la surface d’attaque au strict minimum.
Restriction des protocoles sur l’interface WAN
Tous les protocoles d’administration sont désactivés sauf HTTPS. SSH, Telnet, HTTP et PING ne doivent pas être exposés sur le WAN.

Restriction par IP — Trusted Hosts
La restriction Trusted Hosts est configurée sur le compte admin avec l’adresse IP du PC d’administration uniquement. Toute autre IP est rejetée avant même d’atteindre la page de login.

Section 2 — Flux émis par le pare-feu
Ces flux sont les communications initiées par le FortiGate lui-même : résolution DNS et synchronisation NTP. L’horloge doit être correcte. C’est une condition de fiabilité des journaux.
Section 3 — Règle de protection du pare-feu
La protection du pare-feu est assurée par deux mécanismes complémentaires déjà en place : la restriction des protocoles sur l’interface WAN et les Trusted Hosts. Ensemble, ils font que le FortiGate n’est joignable que depuis le PC admin, sur HTTPS uniquement.
La règle implicite DENY (section 6) complète cette protection en bloquant et journalisant tout trafic non couvert, y compris les tentatives d’accès au pare-feu lui-même.
Section 4 — Flux métiers
C’est ici que se trouvent les règles de transit, les flux qui traversent le FortiGate d’une interface à une autre. C’est l’essentiel de la politique, et c’est là que les règles initiales “all → all” ont été remplacées par des règles précises.
J’organise les règles en trois sous-groupes : les flux sortants vers Internet, l’accès admin aux VLANs, et l’accès admin à Proxmox.
Flux sortants — VLANs vers Internet
Chaque VLAN dispose d’une règle de sortie limitée aux protocoles strictement nécessaires. Une règle par VLAN pour maintenir la lisibilité et la traçabilité :
| From | Source | Destination | Service | Action | NAT | Log |
|---|---|---|---|---|---|---|
| VLAN10-LAN | net_VLAN10 | all | HTTP, HTTPS, DNS | ACCEPT | Oui | Oui |
| VLAN20-LAN | net_VLAN20 | all | HTTP, HTTPS, DNS | ACCEPT | Oui | Oui |
Flux sortants — LAN interne (Proxmox)
Proxmox a besoin d’accéder à Internet pour les mises à jour système et le téléchargement d’images. NTP est ajouté pour la synchronisation de l’horloge :
| From | Source | Destination | Service | Action | NAT | Log |
|---|---|---|---|---|---|---|
| internal | srv_proxmox | all | HTTP, HTTPS, DNS, NTP | ACCEPT | Oui | Oui |
Flux entrants — Accès admin aux VLANs
Le PC d’administration accède aux VMs des différents VLANs (HTTP/HTTPS pour les interfaces web, SSH pour l’administration). Une seule règle couvre les quatre VLANs grâce à la vue Global View du FortiGate :
| From | Source | Destination | Service | Action | NAT | Log |
|---|---|---|---|---|---|---|
| wan1 | ip_admin | VLAN10/20/30/40-LAN | HTTP, HTTPS, DNS, SSH | ACCEPT | Non | Oui |
Flux entrants — Accès à Proxmox depuis le PC admin
L’accès à l’interface web Proxmox (port 8006) est restreint au seul PC admin :
| From | Source | Destination | Service | Action | NAT | Log |
|---|---|---|---|---|---|---|
| wan1 | ip_admin | srv_proxmox | TCP 8006 | ACCEPT | Non | Oui |

Section 5 — Règles antiparasites (optionnel)
Cette section est facultative. Elle sert à supprimer des journaux certains flux non légitimes mais bruyants, typiquement les broadcasts NetBIOS ou autres flux de découverte réseau qui polluent les logs sans valeur ajoutée.
Cette section n’est pas implémentée dans la configuration actuelle. Les logs restent exploitables sans filtrage supplémentaire à ce stade.
Section 6 — Règle d’interdiction finale
Sur FortiGate, une règle implicite DENY existe en dernière position de la politique et ne peut pas être supprimée. Elle est journalisée par défaut. Elle couvre exactement ce que demande la section 6 du modèle ANSSI : bloquer et tracer tout trafic non explicitement autorisé.

La Politique Finale
Voici un récapitulatif de la politique complète après refonte, en suivant les 6 sections ANSSI :
| Section | Règle | Flux | Action |
|---|---|---|---|
| 1 — Vers le pare-feu | L1 | PC admin → FortiGate WAN (HTTPS) | ACCEPT/LOG |
| 2 — Émis par le pare-feu | — | DNS/NTP configurés dans System > Settings | — |
| 3 — Protection du pare-feu | — | Interface WAN + Trusted Hosts + DENY implicite | — |
| 4 — Flux métiers | R1 | VLAN10 → Internet (HTTP/HTTPS/DNS) | ACCEPT/NAT |
| R2 | VLAN20 → Internet (HTTP/HTTPS/DNS) | ACCEPT/NAT/LOG | |
| R3 | Proxmox → Internet (HTTP/HTTPS/DNS/NTP) | ACCEPT/NAT/LOG | |
| R4 | PC admin → VLANs (HTTP/HTTPS/DNS/SSH) | ACCEPT/LOG | |
| R5 | PC admin → Proxmox (TCP 8006) | ACCEPT/LOG | |
| 5 — Antiparasites | — | Non implémenté | — |
| 6 — Interdiction finale | R6 | all → all (ALL) | DENY/LOG |
Validation
Une politique de filtrage n’a de valeur que si elle est testée. J’ai validé chaque flux attendu après la mise en place des nouvelles règles.
| Test | Flux | Résultat attendu |
|---|---|---|
| T1 | Accès interface admin FortiGate depuis PC (192.168.1.x) | ACCEPT |
| T2 | Accès interface admin FortiGate depuis autre IP | DENY |
| T3 | Proxmox → Internet (apt update) | ACCEPT |
| T4 | VLAN10 → Internet (HTTP/HTTPS) | ACCEPT |
| T5 | VLAN20 → Internet (HTTP/HTTPS) | ACCEPT |
| T6 | PC admin → VLAN10 (SSH) | ACCEPT |
| T7 | PC admin → VLAN10 (autre port non autorisé) | DENY |
| T8 | PC admin → Proxmox (port 8006) | ACCEPT |
| T9 | PC admin → Proxmox (autre port) | DENY |
| T10 | Autre IP → Proxmox (port quelconque) | DENY |
| T11 | VLAN10 → VLAN20 (inter-VLAN) | DENY |
| T12 | Trafic non couvert → Règle finale | DENY + log visible |
Quelques exemples :

Sécurité Globale — Résumé
| Recommandation ANSSI | Application FortiGate |
|---|---|
| R1 — Règles admin regroupées et précises | Interface WAN (HTTPS uniquement) + Trusted Hosts |
| R2 — Règles flux sortants pare-feu précises | System > DNS/NTP configurés précisément |
| R3 — Règle de protection du pare-feu | Interface WAN + Trusted Hosts + règle DENY implicite |
| R4 — Règles métiers précises et organisées | Firewall Policies avec services explicites par VLAN |
| R5 — Règles antiparasites documentées | Non implémenté (logs exploitables sans filtrage) |
| R6 — Règle d’interdiction finale journalisée | Règle implicite DENY native FortiGate (loggée) |
| R7 — Gestion rigoureuse des objets | Objets nommés (adresses, services) par VLAN |
| R10 — Commentaires sur les règles | Champ Comments renseigné sur chaque règle |
| R14 — Politique testée après implémentation | Cahier de tests réalisé |
Ce que ce projet m’a apporté
Ce projet m’a permis de passer d’une configuration “ça marche” à une configuration “c’est justifié”.
Le modèle en 6 sections de l’ANSSI s’est révélé être une méthode de mise en place efficace d’une politique de filtrage. Il ne s’agit pas d’une contrainte bureaucratique mais d’un cadre qui force à catégoriser chaque règle et à se poser la question “pourquoi ce flux existe-t-il ?”. Et c’est exactement cette rigueur qui manquait dans la configuration initiale. Appliqué méthodiquement, il permet de construire une politique lisible, justifiable et auditables en peu de temps.
Ce projet m’a également permis de prendre en main l’administration d’un FortiGate, pare-feu physique largement déployé en entreprise. L’interface FortiOS, la gestion des objets, la distinction entre trafic transit et trafic local (Local-In Policies), la vue Global View pour gérer des règles multi-interfaces. Autant de spécificités que l’on ne retrouve pas sur pfSense et qui sont directement transposables en environnement professionnel.
Enfin, la partie validation est souvent sous-estimée. Créer des règles prend du temps, mais les tester et vérifier que les compteurs de hits correspondent à ce qu’on attend, c’est la seule façon de s’assurer que la politique fonctionne vraiment comme prévu.
