Herramientas de usuario

Herramientas del sitio


linux:scponlyc

scponlyc

Existe en Ubuntu un package llamado scponly que viene no preconfigurado para que cada usuario esté confinado a una jaula (chroot), por lo que para poder usar esta característica de scponly debemos descargar los fuentes y compilarlos con soporte chroot. El ejecutable que tendrá soporte chroot se llama scponlyc en vez de scponly.

Compilación de fuentes

Accedemos a la web del producto, http://sublimation.org y vamos a la página de descargas

Tomamos nota del nombre del fichero a descargar, en nuestro caso http://sublimation.org/scponly/scponly-4.6.tgz, y cxd

# cd /usr/local/src
# wget http://sublimation.org/scponly/scponly-4.6.tgz

Una vez descargado el package que contiene los fuentes, lo descomprimimos en este mismo directorio

# tar xfz scponly-4.6.tgz

Esto crea el directorio scponly-4.6 en el lugar donde lo estamos descomprimiendo. Nos metemos en ese directorio y leemos los ficheros README, INSTALL, y BUILDING-JAILS.TXT

# ./configure --enable-chrooted-binary
# make
# make install

Al finalizar este proceso tendremos creado /usr/local/sbin/scponlyc.

Configurar scponlyc como shell

Para que el sistema pueda reconocer que scponlyc es un shell válido hay que añadirlo al fichero /etc/shells

# echo "/usr/local/sbin/scponlyc" >> /etc/shells

Creación de usuarios

La creación de usuarios para scponlyc se realiza con un script que se incluye en el package que hemos descomprimido anteriormente. EL script se llama “setup_chroot.sh”, y está en el directorio raiz del paquete desinatalado, en nuestro caso /usr/local/src/scponly-4.6.

Para tener a mano todo lo necesario para crear un usuario, copiamos dicho script al directorio /altroot (o donde nosotros queramos tenerlo).

Este script crea una jaula chroot con todo lo necesario excepto el fichero /dev/null, el cual es imprescindible para que los programas de la jaula funcionen con normalidad, por lo que tenemos dos opciones: o creamos dicho fichero después de cada ejecución del script, o incluimos en el script las instruciones necesarias para crearlo.

Yo he optado por esta segunda opción, asi que editamos el script, nos posicionamos en la última línea e insertamos las siguientes instrucciones:

#
# Creamos /dev/null dentro de la jaula
#
mkdir $targetdir/dev
mknod $targetdir/dev/null c 3 1
chmod 666 $targetdir/dev/null

Con esto ya tenemos instalado scponlyc y listo para crear usuarios ejecutando el script setut_chroot.sh

Diagnóstico de problemas

Al probar a hacer una transferencia con, por ejemplo, WinSCP, podemos recibir el error:

Error al conectar con WinSCP a un servidor SFTP instalado con scponlyc

o si usamos línea de comando, el error equivamente es:

C:\putty>psftp usuario@servidor
Using username "usuario"
Fatal: unable to initialise SFTP: could not connect

la causa es que la “jaula” chroot no está funcionando correctamente.

Para probar que el comando “sftp-server” pueda enjaularse correctamente, probemos con el comando:

root@server:/# chroot /altroot/home/usuario /usr/lib/sftp-server
Couldn't open /dev/null: No such file or directory

La razón del fallo es que falta el fichero /dev/null dentro de la jaula, o está creado de forma incorrecta.

El fichero /dev/null es un fichero especial de caracteres (tipo “c”), que hay que crear con el comando mknod:

mkdir /altroot/home/usuario/dev
mknod -m 666 /altroot/home/usuario/dev/null c 2 2
linux/scponlyc.txt · Última modificación: 2007/04/17 14:25 por jherrero