Sftp con chroot

De zerutek

Saltar a: navegación, buscar

20/05/2011

sftp con chroot

Los accesos a los sistemas son siempre incómodos, pero las últimas versiones de ssh ayudan a solucionar éste problema.

Este artículo intenta ser una aproximación útil tanto en sistemas AIX como en Linux.

Requerimientos

Se requiere una versión de OpenSsh 4.9p1 o superior

Creando la estructura chroot

Para poder realizar ésta operativa, vamos a crear una nueva estructura, que será la que vean y a la que accedan los usuarios que deseen dejar o recoger datos.

En nuestros ejemplos vamos a permitir a los usuarios a acceder al directorio /var/log, para lo que vamos a crear una estructura de acceso en /srv/chroot.

  • Creamos la estructura a utilizar
mkdir -p /srv/chroot/var/log
  • El directorio a utilizar para el chroot tiene que tener como usuario y grupo a root.
chown root:root /srv/chroot

AIX

  • Definimos el montaje "vinculado" de /srv/chroot/var/log, en el fichero /etc/filesystems
/srv/chroot/var/log:
        dev             = /var/log
        vfs             = namefs
        mount           = true
        options         = ro,nosuid
  • Montamos
mount /srv/chroot/var/log


Linux

  • Definimos el montaje "vinculado" de /srv/chroot/var/log, en el fichero /etc/fstab
/var/log /srv/chroot/var/log bind bind,ro,nosuid 1 2
  • Montamos
mount /srv/chroot/var/log

Creación de usuario y grupo de acceso al chroot

  • Añadir al /etc/passwd
sftp_chroot_user:!:13666:13666:Usuario acceso SFTP:/home/sftp_chroot_user:/bin/false
  • Añadir al fichero /etc/group
sftp_chroot:!:13666:

Linux

  • Añadir al fichero /etc/shadow
sftp_chroot_user:!!:14510:0:99999:7:::

Nota

Esto tarea también se puede realizar a base de useradd o similar.

Configuración de OpenSSH para que utilice el chroot

Aquí indicamos al ssh que todos los usuarios pernecientes al grupo sftp_chroot sean alojados en el chroot generado para tal fin. Ésto acción se puede realizar por usuario o grupo.

  • Añadir a /etc/ssh/sshd_config
# Configuracion jaula

Match group sftp_chroot
        ForceCommand internal-sftp
        ChrootDirectory /srv/chroot

Nota

El parámetro ChrootDirectory admite como parámetro los comodines %h para el HOME del usuario, o %u para el nombre de usuario.

Algunas consideraciones sobre contraseñas

El ejemplo descrito el home del usuario no está dentro del chroot. Ésto implica que si utilizamos un esquema de atenticación basados en parejas de claves (públicas/privadas), las claves van a estar fuera del alcance del usuario, por lo que no va a poder introducir las claves públicas necesarias para el acceso, recayendo la labor en el administrador de la máquina. Se pueden usar otras configuraciones para permitir al usuario modificar sus claves públicas, estando el chroot dentro del home del usuario.