Centos 5.X Jail SFTP con SCPonly y Centos 6.X

publicado por Carlos Torres el 25/03/2015 08:54

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.

En este caso, lo instalaremos desde los fuentes

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)

En Centos 6.X

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

Ver info en:

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

Links relacionados SCPOnly:

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


Añadir un comentario:

Nombre:

E-Mail:

Comentario: :

Enviar >>