Une compilation de documentations   { en , fr }

Forcer le chroot d'utilisateur sous Openssh

Étiquettes:
Créé en:
Auteur:
Xavier Béguin

Modification du fichier de configuration du serveur OpenSSH

Pour limiter un utilisateur se connectant au serveur OpenSSH à l'utilisation du protocole d'échange de fichiers SFTP et restreindre ses accès à un environnement chrooté , il faut modifier la configuration du daemon OpenSSH.

Celle-ci est conservée, sous les systèmes Debian GNU/Linux, dans le fichier /etc/ssh/sshd_config, mais le chemin ou le nom de ce fichier peuvent être différent sur d'autres systèmes. Sous Debian, vous devrez commencer par commenter la ligne ci-dessous fournie par défaut, car elle doit être remplacée. Effectuer la modification suivante si votre configuration contient déjà une ligne Subsystem sftp … :

-Subsystem      sftp    /usr/lib/openssh/sftp-server
+#Subsystem      sftp    /usr/lib/openssh/sftp-server

Les éditions de fichiers et les commandes données dans cette page doivent se faire sous le superutilisateur root.

Pour limiter les accès d'un utilisateur dont le login serait hkrustofski à son répertoire personnel /home/hkrustofski, on pourra ensuite ajouter les lignes suivantes à ce même fichier /etc/ssh/sshd_config (ou le fichier équivalent si vous utilisez un autre système) :

Subsystem sftp internal-sftp
Match User hkrustofski
	ChrootDirectory /home/hkrustofski
	ForceCommand internal-sftp

À propos de cette configuration, notez que :

  • il est possible de désigner plusieurs utilisateurs en séparant leur login par une virgule (par exemple user1,user2 au lieu de hkrustofski ;

  • il est aussi possible d'utiliser un format spécial pour désigner le répertoire de chroot. Par exemple, %h est remplacé par le répertoire personnel de l'utilisateur, et %u par son login. C'est pratique lorsque l'instruction Match s'applique à plusieurs utilisateurs ;

  • la directive Match n'a rien de spécifique au chroot, et peut s'utiliser dans ce fichier pour appliquer n'importe quelle configuration particulière à :

    • un ou plusieurs utilisateurs (User user1[,user2,...]),
    • à un groupe d'utilisateurs (remplacer User ... par Group ...),
    • ou aux connexions provenant de machines ou réseaux spécifiques (au lieu de User, utilisez les mot-clefs Host ou Address).

Tout ceci est décrit plus en détails dans la page de manuel sshd_config(5) (recherchez-y les mots-clefs Match, ChrootDirectory, ForceCommand et Subsystem).

Redémarrage du serveur OpenSSH

Vous devrez ensuite redémarrer le serveur SSH:

service ssh reload

L'utilisateur hkrustofski, en se connectant à l'aide de la commande sftp (ou via les fonctionnalités SFTP des outils de transfert de fichiers comme Filezilla, FireFTP, etc.), ne pourra pas voir ni accéder à d'autres fichiers et répertoires que ceux présents sous son répertoire /home/hkrustofski.

Attention, lorsque vous testez votre accès SSH, n'utilisez pas la commande ssh, mais sftp ou scp (ou tout autre client utilisant le protocole SFTP), car la connexion avec le clieht ssh n'ouvrirait pas de shell, mais afficherait un simple message énigmatique, puisque l'accès au shell n'est plus possible et que le serveur ne répond qu'aux commandes SFTP.