Avec la sortie d'OpenSSH 4.9p1, vous n'avez plus besoin de recourir à des hacks tiers ni à des configurations de chroot compliquées pour confiner les utilisateurs dans leurs répertoires personnels ou leur donner accès aux services SFTP.
éditez / etc / ssh / sshd_config (/ etc / sshd_config sur certaines distributions) et définissez les options suivantes:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Assurez-vous que la directive «Match» se trouve à la fin du fichier. Cela indique à OpenSSH que tous les utilisateurs du groupe sftp doivent être chrootés vers leur répertoire de base (que% h représente dans la commande ChrootDirectory
Pour tous les utilisateurs que vous souhaitez chrooter, ajoutez-les au groupe sftp en utilisant:
# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe
La commande usermod ci-dessus ajoutera l'utilisateur joe au groupe sftp et définira leur shell sur / bin / false afin qu'ils ne puissent absolument jamais obtenir un accès à un shell. Les commandes chown et chmod définiront les autorisations requises pour le répertoire. Avec ces autorisations définies, l'utilisateur sera autorisé à télécharger et à télécharger des fichiers, mais ne pourra pas créer de répertoires ni de fichiers dans le répertoire racine.
Chrooter des comptes shell est un peu plus compliqué, car certains fichiers de périphérique et un shell doivent être disponibles dans le répertoire de base de l'utilisateur. Les commandes suivantes vont configurer un système chroot très basique sur Mandriva Linux:
# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe
Avec ce qui précède, l’utilisateur joe peut ssh et sera limité au chroot. Malheureusement, cela ne fait pas grand chose, mais cela vous donne une idée de la manière dont cela peut être mis en place. Selon ce que vous souhaitez fournir, vous devrez installer des bibliothèques et des fichiers binaires supplémentaires.
Créer un chroot
Installez les packages dchroot et debootstrap.
En tant qu'administrateur (c.-à-d. En utilisant sudo), créez un nouveau répertoire pour le chroot. Dans cette procédure, le répertoire /var/chroot
sera utilisé. Pour ce faire, tapez sudo mkdir /var/chroot
dans une ligne de commande.
En tant qu'administrateur, ouvrez-le
/etc/schroot/schroot.conf
dans un éditeur de texte. Tapez cd /etc/schroot
, suivi de gksu gedit schroot.conf
. Cela vous permettra d'éditer le fichier.
Ajoutez les lignes suivantes dans schroot.conf
, puis enregistrez et fermez le fichier. Remplacez
your_username
par votre nom d'utilisateur.
[lucid] description = Ubuntu Lucid location = / var / chroot priority = 3 utilisateurs = votre_nom_utilisateur groupes = sbuild root-groups = root
Ouvrez un terminal et tapez:
sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \
http://mirror.url.com/ubuntu/
Cela créera une 'installation' de base d'Ubuntu 10.04 (Lucid Lynx) dans le chroot. Le téléchargement des packages peut prendre un certain temps. Remarque: vous pouvez remplacer lucid par la version Ubuntu de votre choix. Remarque: vous devez modifier ce qui précède mirror.url.com
avec l'URL d'une archive miroir valide locale pour vous. Un chroot de base devrait maintenant avoir été créé. Tapez sudo chroot /var/chroot
pour passer à un shell racine à l'intérieur du chroot.
Mise en place du chroot
Vous pouvez suivre certaines étapes élémentaires pour configurer le chroot, en fournissant des fonctionnalités telles que la résolution DNS et l'accès à /proc
.
Remarque: Tapez ces commandes dans un shell extérieur au chroot.
Tapez ce qui suit pour monter le /proc
système de fichiers dans le chroot (requis pour la gestion des processus):
sudo mount -o bind /proc /var/chroot/proc
Tapez ce qui suit pour autoriser la résolution DNS depuis le chroot (requis pour l'accès Internet):
sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
Très peu de paquets sont installés par défaut dans un chroot (même sudo n'est pas installé). Utilisez apt-get install package_name
pour installer des paquets.