Existe-t-il un moyen simple de restreindre un utilisateur SCP/SFTP à un répertoire? Toutes les méthodes que j'ai rencontrées m'obligent à mettre en place une prison chroot en copiant des binaires, mais je ne pense pas que cela devrait être nécessaire.
SSH prend en charge le chrootage natif d'un utilisateur SFTP. Vous avez juste besoin de fournir
ChrootDirectory
Dans votre fichier de configuration sshd et redémarrez sshd.
Si vous ne faites que sftp, vous n'avez rien d'autre à faire. Malheureusement, cela ne fonctionne pas pour scp. Pour Shell interactif, vous devrez copier les binaires et les nœuds/dev dans le chroot.
Un exemple de configuration, pour un seul utilisateur, testuser:
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
Quelques éléments à prendre en compte, à partir de la page de manuel sshd_config:
Tous les composants du nom de chemin doivent être des répertoires appartenant à la racine qui ne sont Accessibles en écriture par aucun autre utilisateur ou groupe. Après le chroot, sshd (8) change le répertoire de travail En répertoire personnel de l'utilisateur.
Recherchez ChrootDirectory dans man sshd_config pour plus d'informations.
Un chroot est une méthode relativement simple. Étant donné que le système d'exploitation dispose déjà de cette fonction de sécurité, les rédacteurs de démons ne tentent généralement pas de la réimplémenter.
Rssh est livré avec un guide sur la mise en place d'une prison chroot. Il se trouve dans le fichier CHROOT
de la distribution source. En bref, vous devez avoir:
/usr/bin/scp
, /usr/libexec/openssh/sftp-server
, /usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
) Qu'elles utilisent, également copiées/etc/passwd
(Très probablement pas une copie mais dérivée du maître)/dev/null
, /dev/tty
, Ainsi qu'une prise /dev/log
Pour la journalisation (et vous devez dire à votre démon syslog d'écouter sur cette prise)Astuce supplémentaire qui n'est pas dans la documentation rssh: Si vous avez besoin que certains fichiers soient accessibles dans une prison chroot, vous pouvez utiliser bindfs ou Linux mount --bind
Pour créer des hiérarchies de répertoires supplémentaires de l'extérieur la prison. bindfs
permet au répertoire remonté d'avoir des autorisations plus restrictives, par exemple en lecture seule. (mount --bind
Ne l'est pas sauf si vous appliquez un correctif du noyau; Debian a inclus ce correctif depuis à East Lenny mais la plupart des autres distributions ne l'ont pas été en 2011.)