Maintenant que ma nouvelle installation de Proxmox VE tourne à merveille suite aux déboires que j’ai pu avoir chez mon ancien prestataire, je vais vous dévoiler quelques-unes de mes techniques de sioux pour sécuriser un peu plus un hôte Proxmox, car en configuration par défaut ce n’est pas très excitant. Ces quelques billes ne transformeront pas votre hôte en forteresse inviolable, mais il sera déjà un peu plus blindé ! 😁
Sécuriser SSH
Un petit tour dans /etc/ssh/sshd_config rapidement, et on va procéder au changement de quelques paramètres, tout d’abord le port par défaut sur lequel SSH écoute. Le 22 étant le port par défaut, on va le changer. Naturellement, on évitera de mettre un port qui est déjà utilisé pour une autre application ou qui pourrait être bloqué par un éventuel pare-feu. Ensuite, l’option PermitRootLogin ne doit surtout pas être à yes mais à without-password, prohibit-password ou à no. Les deux premières options peuvent être utilisées avec des clefs SSH, tandis que la dernière bloquera complètement le login en root, forçant un su une fois la connexion avec un utilisateur standard établie.
Rejeter les tentatives de connexion avec une autre IP
Dans /etc/hosts.allow, on va pouvoir définir les adresses IP qui sont autorisées à communiquer avec certains services installés sur la machine. Il peut être judicieux de rejeter les connexions SSH sur toutes les IP sauf une. Par exemple, celle d’un VPN et éventuellement d’une de vos machines virtuelles si vous avez une VM dédiée à l’administration.
Dans cet exemple, je n’autorise qu’une IP à se connecter et je bloque toutes les autres.
sshd : 192.168.1.2 : allow
sshd : all : deny
Autoriser l’accès à l’interface web de Proxmox uniquement sur une adresse ou un range d’IP
Par défaut, l’interface web de Proxmox est accessible sur le port 8006 pour tout le réseau internet. Le moteur web étant basé sur Apache, il est possible d’appliquer des règles allow et deny toutes simples pour n’autoriser l’accès à l’interface web que sur les IP que l’on souhaite. Ici aussi, utiliser un VPN peut s’avérer utile car on déplace derrière une authentification supplémentaire le portail web.
On édite avec nano le fichier /etc/default/pveproxy, puis on saisit les IP qu’on souhaite autoriser ou refuser comme ceci :
ALLOW_FROM= »192.168.1.2,192.168.2.12″
DENY_FROM= »all »
POLICY= »allow »
Un redémarrage de l’interface web est nécessaire :
pveproxy restart
Installer fail2ban
fail2ban est une application tournant en tâche de fond qui écoute les divers logs système et applicatifs et repère les tentatives de brute-force et place en cas d’échecs répétés de connexion les IP dans les règles de rejet du pare-feu ; en conséquence, toutes les IP (ou plage) voient leurs connexions rejetées pendant un certain laps de temps durant la configuration. Celle par défaut suffit normalement pour le peu de services qui sont en théorie installés sur l’hôte.
apt install fail2ban
Le fichier de configuration le plus intéressant est /etc/fail2ban/jail.conf car c’est ici que l’on peut éventuellement ajouter des services à monitorer.
En dehors de ces astuces, je ne saurai que conseiller de créer des utilisateurs avec le minimum de privilège par VM, créer un compte pour l’administration du datastore, et de passer par un VPN pour vous connecter en SSH ou en web. Vous pouvez trouver plus de documentation sur ces liens concernant fail2ban, pveproxy et sshd_config.