Virtualisation domestique – Tutoriel Proxmox (Suite) – Partie 7

Mercredi, 23 Mai 2018 06:00 Okimi
Imprimer
Note des utilisateurs: / 8
MauvaisTrès bien 

Nous avons vu dans la précédente partie quelques réglages de base de Proxmox VE 5.1. Nous allons aller un peu plus loin dans cette 3ème partie en essayant de sécuriser un peu plus les accès à notre serveur de virtualisation

 

Ajouter un nouveau compte administrateur

Il est recommandé, pour des raisons de sécurité, de ne pas utiliser le compte root pour se connecter, surtout depuis l'extérieur de votre domicile. Sous Linux, le compte root a les pleins pouvoirs et il est souhaitable qu'il ne tombe pas entre de mauvaises mains. Nous allons donc créer un nouvel utilisateur avec des droits restreints pour l'usage courant de Proxmox.

En ligne de commande (le Shell Proxmox est suffisant), tapez :

Adduser [nom_que_vous_voulez]

Ensuite renseignez un mot de passe (attention, il ne s'affiche pas et c'est tout à fait normal). Puis confirmez-le. Validez les autres questions et tapez y pour finaliser.

 

Petit aide mémoire des commandes de gestion utilisateurs et groupes sur cette page :
https://wiki.debian-fr.xyz/Commandes_utilisateurs_et_groupes#usermod

 

Repassez ensuite sur l'interface de Proxmox et allez dans la partie Datacenter, Permissions. Si plusieurs personnes peuvent avoir accès au serveur, vous pouvez créer un groupe Administrateur et un groupe Utilisateur. Mais dans un cadre domestique cette étape est facultative (à moins que vous ayez une famille nombreuse).

Passez au menu Utilisateurs et cliquez sur Ajouter :

Tapez le nom d'utilisateur que vous venez de créer en ligne de commande, conservez le type d'authentification Linux PAM et sélectionnez le groupe Administrateur que vous avez précédemment créé (facultatif).

Cliquez ensuite sur le menu Permissions pour donner les pleins pouvoirs à votre nouvel administrateur. Les permissions d'un compte se définissent à l'aide de 3 paramètres :

- Le chemin
- Le compte utilisateur ou le groupe
- Le rôle




Le chemin correspond à l'arborescence de la colonne de gauche dans Proxmox. Quelques possibilités :
/  (racine) :

Donne accès à la totalité du serveur en cochant la case Propager (à toute l'arborescence).

/storage/NFS1512  (ou NFS1512 est le nom de votre espace de stockage) :

Autorise (ou interdit) l'accès à seulement un espace de stockage précis.

/vms/101  (ou 101 est le n° d'identifiant d'une machine virtuelle) :

Autorise (ou interdit) l'accès à une machine virtuelle ou un container distinct.


Les rôles sont un ensemble de privilèges qui s'appliquent à un utilisateur ou un groupe. Il est par exemple possible d'interdire l'accès (NoAccess) à une VM ou un espace de stockage défini ou de n'autoriser que la création et la gestion des VM sans droits d'accès sur le système Proxmox lui-même (PVEVMAdmin). Je ne vais pas vous détailler ici tous les privilèges et tous les rôles. Je vous invite donc à lire ces 2 liens :

https://www.ordinoscope.net/index.php/Informatique/Softwares/Proxmox/PVE/Permissions_(GUI)

https://pve.proxmox.com/wiki/User_Management

Pour voir si vous avez bien compris, vous pouvez créer un 2ème utilisateur qui vous servira à la gestion de base des machines virtuelles. Mais pour éviter de recréer un compte dans Linux, vous pouvez utiliser le mode d'authentification PVE qui reste interne à Proxmox.

Pour l'exemple, j'ai créé un groupe Utilisateur (facultatif) et un utilisateur que j'ai nommé Coyote qui va seconder mon administrateur Bipbip (si vous ne connaissez pas ces 2 personnages, je ne peux plus rien pour vous ). L'utilisateur Coyote étant plus maladroit (et plus malveillant) que Bipbip, je ne vais lui autoriser qu'un contrôle restreint des machines virtuelles en lui affectant un rôle PVEVMUser.

Voilà, vous avez maintenant 2 comptes supplémentaires et plus vraiment de raison d'utiliser le compte root pour vous connecter à Proxmox.


Interdire l'accès SSH au compte root

Pour sécuriser un peu plus le serveur, nous allons désactiver l'accès direct SSH du compte root. Pour commencer quittez votre session root dans Putty puis reconnectez-vous avec le compte administrateur ou utilisateur précédemment créé.

Tapez su – pour élever les droits d'accès puis tapez le mot de passe du compte root.


Editez ensuite le fichier de configuration de SSH en tapant :

nano /etc/ssh/sshd_config


Puis remplacez la ligne PermitRootLogin yes par PermitRootLogin no

Tapez ensuite simultanément sur les touches CTRL et O de votre clavier puis Entrée pour enregistrer les modifications puis CTRL et X pour quitter. Relancez le service pour appliquer les modifications en tapant :

service sshd reload

Bloquer les connexions indésirables avec Fail2ban :


Fail2ban est un outil de sécurité, développé en langage Python, qui va analyser en temps réel les fichiers log des services Linux pour détecter des comportements suspects comme les tentatives de connexion erronées. Il peut ensuite bloquer les adresses IP responsables (en utilisant IPtables et Netfilter) et prévenir éventuellement l'administrateur.

L'installation se fait en ligne de commande avec les droits superutilisateur (root) et comme à chaque fois sur Linux, il faut commencer par mettre à jour la liste des paquets.

apt-get update

ou

apt-get update && apt-get dist-upgrade  pour mettre à jour les paquets puis Linux/Proxmox.


Puis on installe le paquet fail2ban qui installera automatiquement Python :

apt-get install fail2ban


Fail2ban fonctionne sur un système de filtres et de prisons (jails). Les fichiers de configuration se trouvent dans /etc/fail2ban. Celui qui nous intéresse tout particulièrement est jail.conf. Nous allons commencer par en faire une copie sous le nom de jail.local car il ne faut pas modifier le fichier jail.conf au risque de voir toutes les modifications écrasées lors d'une mise à jour de Fail2ban.

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


Ensuite on édite le fichier jail.local et on se cramponne à son siège.

nano /etc/fail2ban/jail.local


Oui je sais au premier coup d'œil, quand on est débutant, ça fait un peu peur. Mais pas de panique, Fail2ban est assez simple à configurer. Déjà, souvenez vous que toutes les lignes qui commencent par # sont des commentaires.

Dans la première partie [DEFAULT], vous trouvez les réglages par défaut, communs à toutes les prisons. Les paramètres à modifier ou à compléter sont :

ignoreip = 127.0.0.1/8

Cette ligne permet d'exclure du bannissement les adresses IP renseignées. Ajoutez un espace derrière le 8 et indiquez au minimum l'adresse de votre PC ce qui vous évitera quelques déboires. Si vous ne la connaissez pas ou qu'elle est susceptible de changer (DHCP) vous pouvez indiquer la totalité des adresses de votre réseau local en utilisant le codage CIDR. Mais je vous conseille plutôt de fixer les adresses IP de votre réseau.
Exemple : ignoreip = 127.0.0.1/8 192.168.1.15 ou  ignoreip = 127.0.0.1/8 192.168.1.0/24

bantime = 600 (valeur par défaut)

C'est la durée de bannissement de l'adresse IP bloquée. Par défaut, la valeur est de 600 secondes soit 10 minutes. Je conseille de mettre au moins 1 jour soit 86400 secondes.

findtime = 3600 (valeur par défaut)

C'est le temps, toujours en secondes, depuis lequel une anomalie est recherchée dans les logs. La valeur par défaut est 1 heure et convient parfaitement. Evitez de mettre une valeur plus importante pour éviter de charger Fail2ban.

maxretry = 3 (valeur par défaut)

Une adresse IP sera bannie par défaut après 3 tentatives infructueuses. Je préfère mettre 4.


Le prochain bloc qui nous intéresse est le bloc ACTIONS. On y trouve notamment les réglages utiles pour recevoir par mail une alerte de blocage. Les paramètres à modifier sont :

 

destemail = root@localhost (valeur par défaut)

C'est l'adresse mail du destinataire (généralement c'est vous) qui recevra les alertes.

sender = root@localhost (valeur par défaut)

C'est l'adresse mail de l'expéditeur. Vous pouvez laisser celle par défaut ou la personnaliser avec par exemple : sender = fail2ban.mon_serveur@toto.fr

mta = sendmail (valeur par défaut)

C'est la méthode d'envoi des mails par Fail2ban. Personnellement j'ai du repasser à l'ancienne méthode mta = mail pour recevoir les alertes.


Juste avant le bloc JAILS, vous pouvez modifier le paramètre action = %(action_)s et le remplacer par action = %(action_mw)s pour recevoir des détails sur l'adresse IP bloquée ou action = %(action_mwl)s pour recevoir en plus les lignes du log où l'adresse apparait.

Le fichier de configuration Jail.conf (et donc notre copie Jail.local) contient les paramètres de prisons (jails) de nombreux services Linux comme SSHD, APACHE, POSTFIX, etc … Il suffit de les activer en ajoutant une ligne enabled = true et éventuellement de personnaliser bantime et maxretry pour chaque prison.

Nous allons activer SSHD pour filtrer les accès SSH (port 22) et ajouter une prison non configurée par défaut pour filtrer les accès à l'interface de Proxmox.
Dans les parties [sshd] et [sshd_ddos] ajoutez la ligne :

enabled = true


Créez une nouvelle prison (où vous voulez dans le fichier) pour le filtrage de Proxmox avec ces paramètres :

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


Enfin, enregistrez le fichier en tapant CTRL et O puis Entrée et CTRL et X pour quitter l'éditeur Nano.

Il nous reste à créer le fichier de configuration du filtre proxmox en tapant :

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


et à y ajouter ces lignes :

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


Enregistrez et quittez Nano. Voilà c'est fini pour la configuration de Fail2ban. Il reste juste à redémarrer le service pour appliquer les modifications en tapant :

service fail2ban restart


Vous pouvez vérifier le statut du service Fail2ban et des prisons avec les commandes suivantes :

fail2ban-client status
fail2ban-client status sshd  ou  fail2ban-client status proxmox


Pour tester un filtre vous pouvez utiliser la commande fail2ban-regex. Pour le filtre proxmox, il faudra taper :

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


Pour tester le blocage, vous pouvez rentrer plusieurs fois de suite un mot de passe erroné en ayant pris soin auparavant de mettre en commentaire (#) votre adresse IP dans la ligne ignoreip. Je vous conseille fortement avant ce genre de test de mettre une valeur de bantime faible (120 secondes par exemple) pour ne pas vous retrouver bloqué 24h et de tester les prisons les unes après les autres (en commentant enabled = true) pour vous garder une porte d'accès ouverte (soit SSH, soit HTTPS).

Utiliser le Firewall intégré à Proxmox

 

Je ne vais pas vous expliquer le fonctionnement du firewall de Proxmox car je ne connais pas assez le sujet. Sachez cependant qu'il est possible de filtrer les accès entrant et sortant au niveau du Datacenter, de l'hôte et/ou des machines virtuelles.
Par défaut le firewall de Proxmox est désactivé. Si vous souhaitez l'utiliser, commencez par créer une règle qui autorise les accès de votre PC aux ports 8006 (interface graphique) et 22 (SSH). Vous trouverez plus d'infos sur ces liens :
https://pve.proxmox.com/wiki/Firewall
https://blog.waccabac.com/gestion-du-pare-feu-de-proxmox-ve-4/

Ajouter un certificat SSL signé avec Let's Encrypt

 

Je ne l'ai pas encore fait personnellement mais vous trouverez toutes les infos sur ce tutoriel :  https://blog.zwindler.fr/2017/05/02/proxmox-lets-encrypt/


A suivre :

Le prochain article sera un tutoriel d'installation de OpenMediaVault 4 qui permettra de réaliser un NAS.

 

NOUVEAU : Retrouvez nos articles en Vidéos sur YouTube

 

Cet article vous est proposé par Domotics: Domotics habite dans la région Toulousaine. Il est ingénieur en informatique et électronicien amateur. La domotique est pour lui une passion qu'il pratique depuis 1999. En 2003, il décide de partager ses expériences sur le magazine et le forum de touteladomotique.com.

En 2014, il crée sa société de conseils en Domotique ID2domotique.com et sa boutique en ligne laboutiquededomotique.com. Profitez de l'expérience et l'expertise de Domotics en faisant appel à ses services. Les conseils sont gratuits ...

Mise à jour le Mardi, 22 Mai 2018 21:03