analytics

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.

3 comentarios:

  1. Esta muy bien el blog, pero podrias poner un buscador para buscar el articulo que se necesite. He estado buscando por los meses el instalacion y configuracion del cliente freeIPA y no lo he encontrado.

    ResponderEliminar
  2. ¿como puedo poner mysql y postgress en un usuario enjaulado para que nada mas el usuario pueda ver sus bases de datos?

    ResponderEliminar
    Respuestas
    1. En esta pagina explica como hacer la gestión de usuarios en MySQL: http://dev.mysql.com/doc/refman/5.0/es/adding-users.html Respecto a Potgress no lo he usado nunca.

      Eliminar