Google+

jueves, 23 de febrero de 2012

SFTP con chroot


Para hacer un enjaulado de usuarios de sftp necesitaremos como requisito OpenSSH versión 5 ya que trae una característica importante para esto: Match

Primero crearemos el usuario enjaulado:

# useradd ismael
# passwd ismael

Ahora quitamos permisos para hacer login en la maquina, esto es opcional ya que no quiero que se loguee a la maquina ni por ssh:

# vi /etc/passwd

Buscamos nuestro usuario y cambios lo siguinte:
/bin/bash
Por:
/bin/false
Ahora nos aseguramos que tenemos la versión OpenSSH superior a la 5 si no es así procedemos a lo siguiente:
Descargar el software, a día de hoy 5.9p1
#wget http://openbsd.org.ar/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz
#tar zxvf openssh-5.9p1.tar.gz
#cd openssh-5.9p1
#./configure --prefix=/usr/local/openssh5 --with-md5-passwords
#make
#make install
Ahora editamos el archivo de configuración:

Si lo hemos compilado manual el archivo es este:
# vi /usr/local/openssh5/etc/sshd_config
Si no, este otro
# vi /etc/ssh/ssd_config

Cambiamos la linea:
Subsystem      sftp    /usr/local/openssh5/libexec/sftp-server

Por:
Subsystem       sftp    internal-sftp

Y añadimos esto otro:
Match User ismael
ChrootDirectory /home/ismael
ForceCommand internal-sftp
Como veis para el usuario ismael se le concede la carpeta /home/ismael

Fundamental, los permisos:
# chown -R ismael:ismael /home/ismael
# chown root:root /home/ismael

Y para arrancar si hemos compilado el software:
# /usr/local/openssh5/sbin/sshd
Si no, reiniciar el servicio ssh

Ahora probamos desde otra maquina y comprobamos que nos funcione:

# sftp ismael@serverftp
sftp> pwd
Remote working directory: /
Notas: Yo he usado la carpeta /home/ismael pero podéis usar la que queráis siempre que tenga permiso de root la carpeta padre, todo lo creemos desde nuestro sftp tendrá el propietario del usuario.