CHROOT et SFTP

Préambule

Lorsque vous utilisez un compte système sur un serveur Linux disposant d’un serveur SSH, vous pouvez bénéficier de l’utilisation de sous systèmes tels que SFTP (Secure FTP) qui vous permettent d’utiliser le serveur SSH pour transférer des fichiers. Seul petit hic, par défaut, comme dans une session SSH classique, tous les users pourront se balader sur toute l’arborescence fichier de votre serveur Linux (en RW ou en RO selon les sections) ce qui est particulièrement non recommandé.

Il faut restreindre le sous système SFTP de votre serveur SSH au home directory de vos users, cela se nomme un CHROOT des users.

CHROOT

Création du Home Directory

Connectez vous sur votre serveur et créez de préférence un point d’entrée sous lequel vous positionnerez tous vos users, cela vous permettra de gérer plus facilement l’espace disque par la suite.

Imaginons dans notre exemple que notre root-dir SFTP soit le dossier /sftp monté sur une partition de type LVM de préférence.

root@serveur : ~ > mkdir -p /sftp/mon_user/RW
root@serveur : ~ > mkdir -p /sftp/mon_user/RO
root@serveur : ~ > chown -R root:root /sftp/mon_user
root@serveur : ~ > chmod -R 755 /sftp/mon_user
root@serveur : ~ > chmod -R 777 /sftp/mon_user/RW

Le principe étant au niveau du filesystem de donner l’autorité à root sur le home directory de votre user et de déléguer le contrôle des droits du user au serveur SSH.

Dans cet exemple, nous créons un dossier » RW » accessible en écriture au user » mon_user » et un dossier » RO » accessible uniquement en lecture seule par le user, par exemple pour y déposer des informations de votre choix (docs, etc).

Création du user

root@serveur : ~ > useradd mon_user -d /sftp/mon_user -s /bin/bash
root@serveur : ~ > echo "mon_user:mon_password" | passwd

Configuration du serveur SSH

Editez le fichier  » /etc/ssh/sshd_config  » et ajoutez y les lignes suivantes :

Match User mon_user
ChrootDirectory /sftp/mon_user
ForceCommand internal-sftp

Puis redémarrez votre serveur SSH tel que:

root@serveur : ~ > systemctl restart sshd


Voilà, votre user » mon_user » pourra se connecter à votre sous-système SFTP en utilisant votre serveur SSH mais sera contraint de rester dans son home directory.

Recommandations

Notez que les serveurs SSH mal configurés sont des points de faiblesse qui peuvent permettre à des pirates de prendre possession de votre serveur, vous devez respecter les consignes suivantes tant que faire se peut :

Affecter des mots de passe de minium 12 caractères à vos users incluant des majuscules, des minuscules, des chiffres et des caractères spéciaux.


Changez le port par défaut (TCP/IP 22) de votre serveur SSH car il sera scanné très vite par les hackers pour un port non standard, par exemple 55542 ou tout autre port de votre choix.

Laisser un commentaire

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