Sécurité

Pare-feu Proxmox : le piège du firewall=1 qui ne filtre rien

Un audit de notre propre parc l'a montré : des machines avec le pare-feu « activé » sur leur interface étaient en réalité ouvertes au monde. Le pare-feu Proxmox exige deux conditions, pas une, et les règles du datacenter ne protègent jamais les invités. Anatomie du piège, vérification en une commande, et la recette complète.

Dessin au trait fin : un interrupteur en position allumée à côté d'un cadre de porte vide que des flèches traversent librement, illustration d'un pare-feu activé qui ne filtre rienDessin au trait fin : un interrupteur en position allumée à côté d'un cadre de porte vide que des flèches traversent librement, illustration d'un pare-feu activé qui ne filtre rien
Sommaire (4 sections)
  1. Trois niveaux, et une hiérarchie contre-intuitive
  2. Le piège : un interrupteur sans circuit
  3. Notre audit : 4 machines protégées sur 9
  4. La recette complète

Le pare-feu de Proxmox a une interface trompeusement simple : une case Firewall sur la carte réseau de chaque machine, cochée par défaut à la création. Cochée = protégé, n'est-ce pas ? Non. Cette case est un interrupteur… qui peut n'être relié à aucun circuit. Nous l'avons constaté sur notre propre parc lors d'un audit : des machines à IP publique, pare-feu « activé », en réalité ouvertes au monde entier. Voici l'anatomie exacte du piège, et comment vérifier chez vous en trente secondes.

Trois niveaux, et une hiérarchie contre-intuitive #

Le pare-feu Proxmox se configure à trois niveaux : datacenter (cluster entier), nœud (chaque hyperviseur), et invité (chaque VM/CT). L'intuition dit que les règles du datacenter « ruissellent » vers tout ce qu'il contient. La réalité du code est autre : les règles du niveau datacenter et du niveau nœud protègent les hyperviseurs eux-mêmes : leur SSH, leur interface d'admin. Elles ne s'appliquent jamais au trafic des invités. Croire qu'une règle datacenter « SSH restreint à nos IP » couvre le parc entier, c'est laisser chaque VM à IP publique exposer son propre SSH au monde.

Le piège : un interrupteur sans circuit #

Pour qu'un invité soit réellement filtré, il faut deux conditions cumulatives : la case firewall=1 sur son interface réseau, et un fichier de règles propre à l'invité (/etc/pve/firewall/<vmid>.fw) contenant au minimum enable: 1 et une politique. La case seule ne fait rien : pas de politique par défaut, pas de blocage implicite, le trafic passe intégralement. Et comme la case est cochée d'office à la création, le parc se remplit naturellement de machines qui affichent un pare-feu sans en avoir un.

Bash
# La vérification, depuis un noeud du cluster :
ls /etc/pve/firewall/
# cluster.fw  105.fw  133.fw ...

# Croiser avec les invités qui portent une IP publique :
# toute machine exposée SANS son <vmid>.fw est un trou.

# Et le juge de paix : tester DEPUIS L'EXTÉRIEUR
nmap -Pn <ip-publique-du-guest>

Notre audit : 4 machines protégées sur 9 #

Chiffres réels de notre audit interne : sur neuf machines à IP publique, seules quatre avaient un fichier de règles. Cinq « pare-feu activés » ne filtraient rien. Cerise instructive : un fichier de règles actif référençait un invité… supprimé depuis longtemps : le symétrique du piège, la règle sans machine. Deux leçons : ce défaut ne se voit pas dans l'interface (tout a l'air normal), et il ne se détecte que par un audit qui croise la liste des fichiers de règles avec la liste des machines exposées.

La recette complète #

INI
# /etc/pve/firewall/<vmid>.fw : le minimum vital d'un guest exposé
[OPTIONS]
enable: 1
policy_in: DROP
policy_out: ACCEPT

[RULES]
IN ACCEPT -p tcp -dport 80
IN ACCEPT -p tcp -dport 443
# SSH : jamais ouvert au monde, restreint à un ipset d'IP d'administration
IN ACCEPT -source +admin-ips -p tcp -dport 22
  • À la création de toute machine exposée : la carte réseau et son fichier de règles se posent ensemble, jamais l'un sans l'autre. C'est une ligne de check-list, pas un souvenir.
  • Les ipsets (définis au niveau datacenter) centralisent les listes d'IP d'administration : une IP change, un seul endroit à modifier.
  • À la suppression d'une machine : retirer son fichier de règles : les règles orphelines sont le bruit qui masquera le prochain vrai trou.
  • Périodiquement : re-scanner depuis l'extérieur. Un pare-feu se prouve, il ne se suppose pas.

Ce piège est un cas d'école de notre conviction sur la sécurité comme série de détails vérifiés : l'outil est bon, l'interface est claire, et le défaut naît précisément de ce que tout a l'air configuré. L'audit qui l'a débusqué chez nous fait partie de ce que nous appliquons aux infrastructures que nous infogérons. Si vos machines exposées n'ont jamais été scannées depuis l'extérieur, commencez par ça.

À propos
01/À lire ensuiteTrois articles

Articles liés

Sécurité

Un verrou périmé, c'est un scan qui ment

Les fichiers de verrouillage de dépendances sont la source de vérité des analyses de sécurité. Quand une chaîne d'intégration les réécrit en silence au lieu d'échouer, l'analyse lit de fausses versions et rend un verdict rassurant. Comment on l'a découvert, et ce qu'on a changé.

dépendanceschaîne logicielle
Sécurité

446 vulnérabilités, puis zéro : ce que change un inventaire qui dit vrai

Chaque machine scannait ses propres images, personne ne voyait le parc. En centralisant l'analyse sur l'inventaire réel — 111 images uniques au lieu de 25 bases locales —, le compteur est passé de 446 à 0 dans la soirée. Récit d'un chantier de mesure, pas de correction.

vulnérabilitésconteneurs
Sécurité

Intégrer un SIEM sur un parc de 38 machines : Wazuh, du dimensionnement au calibrage

Un journal qui reste sur la machine compromise ne vaut rien. Nous avons déployé Wazuh sur l'ensemble du parc en deux jours : VM dédiée, rétention de douze mois, 38 agents en trois vagues, et surtout un calibrage qui fait passer le bruit de 1 250 alertes par machine à 8 pour tout le parc. Les pièges de l'installeur, de la conformité en conteneur, et les détections maison qui comptent vraiment.

wazuhsiem

Et maintenant

Détecter avant que ça coûte ?

Journaux centralisés, alertes, correctifs décidés, sauvegardes restaurées pour de vrai. Premier échange gratuit.

Discuter de votre projet

Réponse sous 24 h ouvrées, par l'un des deux fondateurs. Ou par téléphone : 07 59 96 14 99.