Proxmox et son firewall intégré : simple, efficace, indispensable
Proxmox

Proxmox et son firewall intégré : simple, efficace, indispensable

Table des matières

Les utilisateurs de Proxmox peuvent se sentir aimer, Proxmox intègre un pare-feu qui vous permet de protéger efficacement votre homelab, sans avoir besoin de déployer un système dédié comme pfSense ou OPNsense, ni de configurer manuellement iptables ou ufw sur chaque hôte.

Ce pare-feu ajoute une couche de sécurité essentielle car une machine exposée même brièvement peut devenir une porte d'entrée vers le reste de votre infra, que ce soit depuis l'extérieur (internet) ou via un service compromis en interne (mise à jour avec backdoor, déploiement accidentel d'une application malveillante, etc).

Utiliser le pare-feu intégré de Proxmox présente aussi des avantages, en cas de compromission d'une VM par exemple, les règles du pare-feu restent actives et ne peuvent pas être modifiées depuis cette VM !

Commençons donc par comprendre comment il fonctionne, puis nous verrons comment créer des règles en suivant les bonnes pratiques pour ne pas se retrouver bloqué hors de votre propre serveur ! 😄

Fonctionnement du pare-feu

Le pare-feu Proxmox se gère sur trois niveaux distincts, chacun ayant ses propres règles à l'exception des serveurs qui hérite des règles défini au niveau Datacenter.

Le premier niveau est le Datacenter. C'est là qu'on définit les règles globales qui s'appliquent à tous les serveurs. C'est important de savoir que si le pare-feu est désactivé à ce niveau les règles des autres niveaux ne seront pas prises en compte !

Le deuxième niveau est celui de des serveurs (nœuds). Les règles à ce niveau protègent le serveur lui même, mais ne contrôlent pas directement le trafic entre les machines virtuelles ou les conteneurs.Ce n'est pas comme au niveau du Datacenter, les VM et LXC n'hériteront pas des règles défini au niveau de l'hôte.

Le troisième niveau concerne les machines virtuelles ou conteneurs (VM/LXC). Les règles ici sont spécifiques à chaque instance et permettent de filtrer son trafic qu'importe leur OS.

À savoir avant de commencer

Avant d'activer et configurer le pare-feu Proxmox, il y a quelques points essentiels à comprendre pour éviter les mauvaises surprises.

Une fois activé le pare-feu bloque par défaut tout le trafic entrant, sauf ce que vous autorisez explicitement. Cela signifie qu'aucune connexion ne passe si vous n'avez pas défini de règles spécifiques.

Heureusement (ou pas) l'accès local à l'interface Web (port 8006/tcp) et SSH (port 22/tcp) reste ouvert par défaut, même si vous n'avez encore rien configuré.
Dans le cas où vous auriez activer le pare-feu sans définir de règle ça vous aurait fait gagner du temps en évitant d'avoir à le désactiver manuellement en accès direct à l'hôte néanmoins le reste du temps ça laisse la possibilité à tout les périphériques présents dans le même réseau que votre hyperviseur d'y accéder.
Il est donc important de préparer toutes vos règles avant d'activer le pare-feu.

Faites aussi attention à l'ordre des règles, celles qui sont en haut de la liste ont priorité sur les suivantes. Lorsqu'une nouvelle règle est crée, elle est placée tout en haut. Si c'est une règle de blocage, elle peut empêcher l'application des autres règles et donc vous bloquer l'accès.

Restreindre l'accès de gestion (Webui & SSH) à une adresse IP spécifique et bloquer l'accès local trop permissif

Pour ça nous allons seulement avoir à définir deux règles, au niveau Datacenter.

1. Autoriser une adresse spécifique

  • Interface : vmbr0 (à ajuster selon votre configuration réseau)
  • Source : IP autorisé
  • Destination : IP de l'hyperviseur
  • Ports : 8006, 22
  • Protocole : TCP
  • Action : ACCEPT

2. Bloquer tout autre trafic

  • Interface : vmbr0
  • Action : DROP
  • Log level : Warning

Cette règle doit être placée après la règle ACCEPT

Une fois l'ordre correctement vérifier, les règles peuvent être activés.

💡
Le paramètre Log level: Warning est optionnel, il permet de logger les tentatives bloquées. Consultables depuis l'interface Web, onglet "Firewall" > "Log" pour chaque niveau (Datacenter, hôte, VM).

Activation du pare-feu

Par défaut le pare-feu est désactivé au niveau Datacenter. Pour qu'il fonctionne correctement, il faut passer l'option Firewall sur Yes à tous les niveaux concernés :

  • Au niveau Datacenter, pour activer le pare-feu globalement sur votre infrastructure.
  • Au niveau de chaque hôte, pour activer le filtrage du trafic réseau sur ce serveur.
  • Au niveau de chaque VM ou conteneur (LXC), pour activer le filtrage spécifique à cette machine.

Après ça on peut aussi gérer l'activation des règles individuellement.

Exemple de protection d'un serveur web

Pour protéger cette VM qui héberge un serveur web, on va autoriser uniquement l'accès depuis une IP spécifique.

1. Autoriser l'accès

  • Source : IP autorisé
  • Macro : HTTP
  • Action : ACCEPT
💡
Une macro est un raccourci vers un ou plusieurs ports connus (ex : HTTP = port 80). C’est plus simple et évite les erreurs. Utilisez les pour les services courants comme HTTP, HTTPS, SSH, etc.

2. Bloquer tout autre trafic

  • Action : DROP
  • Logging : Warning

Cette configuration garantit que seul l'adresse autorisé peut accéder au serveur web, tout autre trafic est bloqué et loggé.


Komi

Passionnée par le self-hosting et tout ce qui gravite autour, je partagerais ici mes découvertes et guides pour aider chacun à se sentir à l’aise dans cet univers.