Prison SSH

Dernière mise à jour : 03/02/2005

    Si vous avez un serveur que vous aimez bien, vous avez tous eu ce problème de crĂ©ation de compte pour lequel vous ne dĂ©sirez pas donner accès au système entier. Il existe plusieurs solutions possibles et une d'entre elle consiste Ă  donner accès Ă  un système virtuel, un chroot (de l'Anglais CHange ROOT). De par son design, le projet OpenSSH ne permet pas de faire ceci d'emblĂ©e. La bonne nouvelle est qu'un projet existe pour vous permettre de faire cela avec vos utilisateurs. Vous pouvez donc prendre le patch (ou bien la version complète d'OpenSSH patchĂ©e) Ă  cette adresse : http://chrootssh.sourceforge.net. Le projet est bien maintenu et propose un patch pour toutes les versions d'OpenSSH.

    Je vous propose donc ici de mettre en place une prison SSH pour les utilisateurs sensibles. Gardez bien en tĂŞte qu'il est primordial que vous sĂ©curisiez Ă©galement votre prison SSH si vous installez des binaires (et il vous en faudra). J'ai installĂ© ce système sur une Debian SID (unstable) mais il est bien sĂ»r possible de l'installer sur n'importe quel système disposant d'openssh et des sources. Pour Debian, il vous donc d'abord installer les sources et les patcher. Pour ceci faĂ®tes :

    Notez bien qu'au moment de rĂ©daction de cet article, la version utilisĂ©e par SID est la 3.8.1p1, j'ai donc tĂ©lĂ©chargĂ© le patch correspondant Ă  cette version. On applique ensuite le patch et on compile Ă  la mĂ©thode Debian. Il vous faudra d'ailleurs installer quelques paquets supplĂ©mentaires pour pouvoir compiler un paquet avec rules, si le système se plaind de ne pas trouver certains fichiers, utilisez le site en ligne pour rechercher un paquet : http://www.debian.org/distrib/packages. Après avoir compilĂ© le paquet, installez-le (comme montrĂ© avec la dernière commande dpkg plus haut). VoilĂ , SSH est prĂŞt Ă  recevoir son nouvel utilisateur.

    Pour poursuivre, il vous faut comprendre que chroot crĂ©e un environnement virtuel sur votre système. Nous prendrons ici l'exemple que le système virtuel se trouve dans /home/chroot. Imaginons Ă  prĂ©sent que votre utilisateur s'appelle albert. Vous allez donc crĂ©er un rĂ©pertoire dans /home/chroot/home/albert en Ă©xecutant : mkdir /home/chroot/home/albert. Pour crĂ©er l'environnement virtuel, j'ai utilisĂ© un script dont l'original vient de ce site. J'ai eu un souci sur le script, je l'ai donc modifiĂ© pour qu'il marche correctement sous Debian, tĂ©lĂ©chargez donc create_chroot_env.txt et sauvez-le quelque part.

    Modifez Ă  prĂ©sent votre /etc/passwd pour que le chemin $HOME de votre utilisateur ressemble Ă  ceci : /home/chroot/./home/albert. En effet, pour que le patch chroot-ssh marche correctement, il est crucial d'insĂ©rer un point avant le home du chroot. Il ne reste alors qu'Ă  crĂ©er votre chroot, utilisez le script en faisant : create_chroot_env albert il devrait alors comme un grand copier tous les fichiers nĂ©cessaires Ă  votre chroot. RedĂ©marrez Ă  prĂ©sent le dĂ©mon SSH (sur Debian, nul besoin de le faire, le système le fait automatiquement lors de l'installation du paquet patchĂ©) et tentez de connecter votre utilisateur, vous devriez donc obtenir ceci :

    Il est important de savoir comment ensuite ajouter un utilisateur Ă  votre système de prison SSH. Vous devez crĂ©er un compte classique, mais utilisez pour ceci la commande suivante :

    Il vous suffit alors de lui attribuer un mot de passe (un paquet très pratique existe sous Debian du nom de makepwd). Il faut ensuite modifier les fichiers /home/chroot/etc/{passwd,group} afin d'ajouter votre nouvel utilisateur sur le modèle du prĂ©cĂ©dent (et avec le bon uid/gid).

    Et voilĂ , c'est rĂ©ussi. Votre utilisateur possède Ă  prĂ©sent un login sur votre serveur mais sans la possibilitĂ© d'exĂ©cuter des binaires sensibles ou bien de pouvoir dĂ©terminer le type de serveur. Cela est Ă©galement très pratique pour pouvoir utiliser sftp (secure FTP) et bĂ©nĂ©ficier ainsi de transfert sĂ©curisĂ©s.