Durcissement d'un FortiGate 90D selon les recommandations ANSSI | Mickael Chaksoukane | Portfolio

Durcissement d'un FortiGate 90D selon les recommandations ANSSI

26 mars 2026

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 :

SeqSourceDestinationServiceActionNATLog
1internalallALLACCEPTOuiOui
2VLAN10-LANallALLACCEPTOuiOui
3wan1proxmoxALLACCEPTNonOui
4wan1VLAN10-LANALLACCEPTNonOui
5all (implicit)allALLDENYOui

alt text

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.

SectionContenu
1Règles d’autorisation des flux à destination du pare-feu
2Règles d’autorisation des flux émis par le pare-feu
3Règle de protection du pare-feu
4Règles d’autorisation des flux métiers
5Règles “antiparasites” (optionnel)
6Rè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.

alt text

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.

alt text


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é :

FromSourceDestinationServiceActionNATLog
VLAN10-LANnet_VLAN10allHTTP, HTTPS, DNSACCEPTOuiOui
VLAN20-LANnet_VLAN20allHTTP, HTTPS, DNSACCEPTOuiOui

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 :

FromSourceDestinationServiceActionNATLog
internalsrv_proxmoxallHTTP, HTTPS, DNS, NTPACCEPTOuiOui

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 :

FromSourceDestinationServiceActionNATLog
wan1ip_adminVLAN10/20/30/40-LANHTTP, HTTPS, DNS, SSHACCEPTNonOui

Flux entrants — Accès à Proxmox depuis le PC admin

L’accès à l’interface web Proxmox (port 8006) est restreint au seul PC admin :

FromSourceDestinationServiceActionNATLog
wan1ip_adminsrv_proxmoxTCP 8006ACCEPTNonOui

alt text


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é.

alt text


La Politique Finale

Voici un récapitulatif de la politique complète après refonte, en suivant les 6 sections ANSSI :

SectionRègleFluxAction
1 — Vers le pare-feuL1PC admin → FortiGate WAN (HTTPS)ACCEPT/LOG
2 — Émis par le pare-feuDNS/NTP configurés dans System > Settings
3 — Protection du pare-feuInterface WAN + Trusted Hosts + DENY implicite
4 — Flux métiersR1VLAN10 → Internet (HTTP/HTTPS/DNS)ACCEPT/NAT
R2VLAN20 → Internet (HTTP/HTTPS/DNS)ACCEPT/NAT/LOG
R3Proxmox → Internet (HTTP/HTTPS/DNS/NTP)ACCEPT/NAT/LOG
R4PC admin → VLANs (HTTP/HTTPS/DNS/SSH)ACCEPT/LOG
R5PC admin → Proxmox (TCP 8006)ACCEPT/LOG
5 — AntiparasitesNon implémenté
6 — Interdiction finaleR6all → 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.

TestFluxRésultat attendu
T1Accès interface admin FortiGate depuis PC (192.168.1.x)ACCEPT
T2Accès interface admin FortiGate depuis autre IPDENY
T3Proxmox → Internet (apt update)ACCEPT
T4VLAN10 → Internet (HTTP/HTTPS)ACCEPT
T5VLAN20 → Internet (HTTP/HTTPS)ACCEPT
T6PC admin → VLAN10 (SSH)ACCEPT
T7PC admin → VLAN10 (autre port non autorisé)DENY
T8PC admin → Proxmox (port 8006)ACCEPT
T9PC admin → Proxmox (autre port)DENY
T10Autre IP → Proxmox (port quelconque)DENY
T11VLAN10 → VLAN20 (inter-VLAN)DENY
T12Trafic non couvert → Règle finaleDENY + log visible

Quelques exemples : alt text


Sécurité Globale — Résumé

Recommandation ANSSIApplication FortiGate
R1 — Règles admin regroupées et précisesInterface WAN (HTTPS uniquement) + Trusted Hosts
R2 — Règles flux sortants pare-feu précisesSystem > DNS/NTP configurés précisément
R3 — Règle de protection du pare-feuInterface WAN + Trusted Hosts + règle DENY implicite
R4 — Règles métiers précises et organiséesFirewall Policies avec services explicites par VLAN
R5 — Règles antiparasites documentéesNon implémenté (logs exploitables sans filtrage)
R6 — Règle d’interdiction finale journaliséeRègle implicite DENY native FortiGate (loggée)
R7 — Gestion rigoureuse des objetsObjets nommés (adresses, services) par VLAN
R10 — Commentaires sur les règlesChamp Comments renseigné sur chaque règle
R14 — Politique testée après implémentationCahier 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.