Sécurisation du login sous Proxmox

Rédaction le 05/12/2018

Update : Depuis 12/2019, j’ai rédigé un article (cliquez ici) pour la mise en place de Proxmox 6 et de toute sa configuration, je ne peux que vous conseiller d’y passer !

Un des nombreux articles à suivre qui regrouperont toutes les modifications que j’ai réalisées pour paramétrer et configurer au mieux Proxmox. Cet article trouve logiquement sa place dans la configuration “matériel”.

Avant de partir tête baissée dans la mise en place des machines virtuelles, il convient de paramétrer au mieux Proxmox. Vous trouverez donc plusieurs articles en lien avec la configuration de Proxmox à adapter à votre cas si nécessaire.

Si vous êtes dans le cas où vous vous voulez pouvoir accéder à votre console proxmox à distance, il faut la protéger des visiteurs correctement.

https://doc.ubuntu-fr.org/fail2ban

Si vous souhaitez aller plus loin dans fail2ban ou comprendre ce qui me conduit à le paramétrer ainsi !

Une solution est aussi de ne pas la rendre accessible directement mais de passer un VPN dédié entre votre routeur et l’équipement qui s’y connectera. Ainsi, vous serez sur le réseau de votre maison par le biais d’un tunnel sécurisé privé. J’ai préféré cette option là, je ferai le point dans un article bientôt.

Ici, avant d’attaquer une machine virtuelle qui “publiera” les services auxquels nous souhaitons accéder, il faut un minimum sécuriser l’accès à Proxmox par le biais de l’outil fail2ban.

Un coup d’avance, dans le cas de Jeedom, il est déjà configuré, rien à faire de ce côté. Entrez dans la console de votre utilisateur proxmox récemment créé puis passez en root par su – (pour rappel, Bitvise SSH / Putty ou Console dans l’interface Proxmox) :

apt-get install fail2ban

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

nano /etc/fail2ban/jail.local

Installons fail2ban puis copions le fichier de base au cas où et éditons-le !

Les configurations sont les suivantes :

  • ignoreip : retirer le # devant pour décommenter la ligne. Personnellement j’ajoute 192.168.2.0/254 pour indiquer que les adresses de mon réseau local sont autorisées.
  • bantime : idem et je passe ce temps à 24h, ici en secondes – la durée du banissement du l’utilisateur qui force le login,
  • findtime : idem et je le passe à 1h – la durée où l’utilisateur va essayer de rentrer X logins …
  • maxretry : idem, ce sont les X logins, ici 3.

Pour résumer, j’autorise mon réseau local à se tromper, mais de l’extérieur si quelqu’un rentre plus de 3 fois un mauvais login / mot de passe pendant 1h, il est viré 24h. Et comme je veux le savoir, je vais ajouter la notification par email.

Configuration de fail2ban (1)

Descendez un peu plus bas dans le fichier et recherchez la partie #ACTIONS. J’y configure :

  • l’adresse de destination [email protected] ;
  • ‘adresse d’email d’envoi de la notification de bannissement (ici [email protected] – mettez un email compréhensible c’est de lui que vous recevrez ces alertes, utile pour faire un filtre par dossier ou règles d’emails) ;
  • la configuration d’envoi de l’emails mta = mail (sendmail ne semble pas fonctionner).
Configuration de fail2ban (2)

Descendez dans le fichier (encore et toujours, non pas aussi bas, juste avant !) et juste avant la partie # JAILS (pour rappel vous pouvez faire une recherche de mots-clés pour aller plus vite par CONTROL+W) :

  • modifier l’action de notification par action = %(action_mwl)s pour être notifié par email du qui est banni,
  • et modifier les prisons de bannissement ici au nombre de 3 : SSHD, SSHD-ddos (contre les attaques de type DDOS), Proxmox !
Configuration de fail2ban (3)

SSHD et SSHD-DDOS étant déjà présents normalement, il suffit de les activer en remplaçant le false par true. Ajoutez la prison Proxmox où nous allons nous protéger sur le port 8006 :

[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
logpath = /var/log/daemon.log
maxretry = 4
bantime = 3600

Configuration de la prison Proxmox (le bantime est de l’heure)

Un fichier supplémentaire est nécessaire pour cette prison, les autres existants déjà – que l’on édite ainsi :

nano /etc/fail2ban/filter.d/proxmox.conf

[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
ignoreregex =

Puis le classique : on redémarre le service et on vérifie que tout est OK :

service fail2ban restart

service fail2ban status

fail2ban-client status

On redémarre le service, on vérifie son statut et on vérifie que les prisons sont bien actives
3 prisons actives sous fail2ban

A ce stade, vous voilà sécurisé ! Vous pouvez tester. Essayez de vous logguer que ce soit sous SSH par Bitvise ou Putty et si vous vous trompez, vous serez interdits ! L’idiot… mais non !

Quelques commandes à connaître en cas de fausses manipulations :

fail2ban-regex /var/log/daemon.log /etc/fail2ban/filter.d/proxmox.conf

Permet de tester un filtre, ici celui de proxmox

iptables -L

iptables -D f2b-sshd n°de ligne (1ère ligne etc)

iptables -L

La première commande permet de voir la liste des adresses IP bloquées
Relevez le numéro de ligne puis retirez la avec la seconde commande
La troisième commande permet de s’assurer qu’elle n’est plus bloquée !

Voilà, un point important, la capacité de sécuriser et de recevoir une notification par email en cas de blocage d’un utilisateur malveillant ou étourdi !

La conclusion de cet article !

On se retrouve bientôt pour une configuration plus poussée de Proxmox avec la surveillance de l’onduleur et les notifications attachées.

Si vous avez aimé cet article, faites le savoir, partagez-le ! Et n’hésitez pas à me supporter 🙂

One thought on “Sécurisation du login sous Proxmox

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *