En versiones anteriores de ssh 4.9 es posible hacer chroot (jail) a una cuenta de sftp (scp) mediante la utilidad scponly.
Este shell, que es de lo que se trata en realidad, permite las conexiones SFTP sin abrir un shell por el canal ssh.
Descargar la última versión de scponly en:
http://sourceforge.net/projects/scponly/files/
Descargar y configurar la instalación para permitir creación de jail:
./configure --enable-chrooted-binary
Construir binarios
$make
Instalar binarios
$make install
Editar /etc/shells usando un editor y añade la siguiente línea al fina:
... /usr/local/sbin/scponlyc
Una vez instalado, hay un script para crear el jail con binarios (estructura de archivos) y crear el usuario (de modo interactivo). Debido a que se abre una sesión ssh es necesario la creación de esta estructura de directorios mínima. Ejecutar lo siguiente:
$make jail
El script realiza algunas preguntas:
Username to install [scponly] nombre_usuario home directory you wish to set for this user [/home/nombre_usuario] name of the writeable subdirectory [incoming]
Para que una cuenta chrootee en el directorio de usuario (escribible) y despues sea el direcotrio por defecto del scp/sftp, el homedir en /etc/password se debe especificar tal que:
/home/userchroot//writable/subdir
Tras el make jail, CentOS (5.X), "sftp-server" no funciona correctamente. Si hemos establecido /chroot/dir/ como ruta principal del chroot, se han de realizar los siguientes pasos para que el jail funcione correcatamente:
editar /chroot/dir/etc/ld.so.conf y reemplazar el contenido por:
/lib /usr/lib
Si es un sistema de 64-bits, entonces:
/lib64 /usr/lib64
Realizar los siguientes pasos:
$cp /lib64/ld-linux-x86-64.so.* /chroot/dir/lib64/ $cp /lib64/libnss_files.so.2 /chroot/dir/usr/lib64/ (for scp and id -un) $ldconfig -r /chroot/dir/ $cp /etc/group /chroot/dir/etc/
Crear el fichero de Selinux
$mkdir /chroot/dir/etc/selinux
y crear un fichero llamado "config" e insertar las siguientes lineas:
SELINUX=disabled SELINUXTYPE=targeted SETLOCALDEFS=0
Crear el dispositivo null
$mkdir /chroot/dir/dev $mknod /chroot/dir/dev/null c 1 3 $chmod 666 /chroot/dir/dev/null
Otras Cuestiones:
Para habilitar el debug:
/usr/local/etc/scponly/debuglevel
(pasarlo del valor 0 a 2)
Permisos del directorio "incoming":
drwxr-xr-x 3 nombre_usuario nombre_grupo 4096 ene 30 18:37 incoming
(Son importantes estos permisos, unos muy relajados, darán error y no autenticarán si se usan authorized_keys)
A partir de la versión 4.9 de ssh ya es posible crear perfiles chrooteados de sftp, tanto de susuarios como de grupos. Configurando directamente sshd_config
https://serverfault.com/questions/591781/creating-sftp-users-and-jailing-to-chroot-on-centos-user-authentication-error
https://serverfault.com/questions/584986/bad-ownership-or-modes-for-chroot-directory-component
http://tipstricksandmore.blogspot.com.es/2009/05/centos-51-chrooting-sftp-using-scponly.html
http://sourceforge.net/projects/scponly/files/
http://serverfault.com/questions/381535/ssh-cannot-start-sftp-server-when-trying-to-force-internal-sftp
https://github.com/scponly/scponly/wiki/Faq