Configuration d'un environment chrooted pour une connexion SSH sécuritaire (PLESK)

Configuration d'un environment chrooted pour une connexion SSH sécuritaire (PLESK)

Problème

Avec un accès standard, les utilisateurs de Plesk peuvent se connecter par SSH et ont accès à pratiquement l'ensemble des fichiers du serveur, ce qui cause une faille de sécurité majeure.

Solution

Étape 1 (une seule fois, au besoin) :

Si vous prévoyez utiliser git et/ou ssh avec les comptes utilisateurs chrooted, il faut les ajouter au chroot template de Plesk puisqu'ils ne sont pas actifs par défaut.

  • Connectez-vous en root au serveur par SSH.
  • Exécuter le code suivant dans votre dossier home (~) ou autre.
wget https://plesk.zendesk.com/hc/article_attachments/360009607573/update_chroot.tar.gz
tar xf update_chroot.tar.gz
./update_chroot.sh --devices tty
./update_chroot.sh --add ssh
./update_chroot.sh --add touch
./update_chroot.sh --add nano
./update_chroot.sh --add curl
./update_chroot.sh --add /usr/bin/git*
./update_chroot.sh --apply all

Si vous voulez ajouter plus de fonctionnalités à l'environnement, vous pouvez le faire avec la commande ./update_chroot.sh --add <nom-du-programme> et ensuite appliquer les changements ./update_chroot.sh --apply all.

Étape 2 : activer l'environnement chrooted dans Plesk

  • Dans Plesk, créer un nouveau Service Plan SSH Chrooted Access
  • Dans l'onglet Permissions, pour l'option Management of access to the server over SSH, sélectionner Can allow access only to a chrooted environment afin de prévenir l'utilisation d'un shell non-chrooted par les utilisateurs.
  • Appliquer ce Service Plan aux comptes ayant un accès SSH.

Les utilisateurs ne devraient plus avoir accès au serveur en entier et peuvent maintenant seulement voir leurs propres fichiers.

NOTE: Comme les symlinks ne fonctionnent pas comme prévus dans un environnement chrooted, si une subscription utilise un symlink pour pointer un dossier vers un autre disque, vous devez utiliser mount à la place pour faire pointer le dossier. Plus de détails ici

Étape 3 : Utilisation de Git de Plesk

Utiliser la formule suivante pour accéder au repositories git gérés par Plesk, sans ajouter ssh:// :

<user>@<hostname>:~/git/<gitrepo>

par exemple :

jmcouillard@jmcouillard.com:~/git/jmcouillard.git

Pour pouvoir utiliser l'auto-deploy de Plesk lorsqu'on fait un push dans un répertoire git, il faut ajuster des paramètres.

Dans un environnement chroot, pour une certaine raison, il est impossible de trouver le serveur par l'adresse localhost, mais seulement par 127.0.0.1. Ce qui fait en sorte que l'auto-deploy ne fonctionne pas puisqu'il essaie de communiquer avec le serveur par curlavec localhost.

La solution trouvée pour corriger le problème est de changer les nameservers de Google de l'environnement chroot par ceux de CloudFlare.

Editer le fichier /var/www/vhosts/chroot/etc/resolv.conf et remplacer par ceci:

nameserver 1.1.1.1
nameserver 1.0.0.1
options rotate
options timeout:3

Ensuite refaire ceci pour distribuer le fichier :

./update_chroot.sh --apply all