Enjaulado SFTP

1. Introducción

El enjaulado es una técnica mediante la cuál se proporciona al usuario una acceso limitado al sistema de ficheros Linux. Normalmente se realiza el enjaulado dentro de la home de cada usuario y el acceso se limita a ésta, de forma que el directorio raíz para un usuario enjaulado / se corresponde con el directorio home real /home/usuario del sistema de archivos.

El SFTP o SSH File Transport Protocol Protocolo de Transferencia de Archivos SSH (algunas veces llamado Protocolo de Transferencia de Archivos Seguro o SFTP) es un protocolo de red que proporciona transferencia de archivos y funcionalidad de manipulación sobre cualquier flujo de datos confiable. Normalmente se utiliza con la versión dos del protocolo SSH (puerto 22 TCP) para brindar transferencia de archivos segura, aunque está pensado para poder utilizarse con otros protocolos también.

OpenSSH fue creado como una alternativa de código abierto al la suite software propietario Secure Shell ofrecida por SSH Communications Security. Está desarrollado como parte del proyecto OpenBSD.
Los usuarios de telnet, rlogin y ftp no pueden hacer que su contraseña se transmita encriptada sobre Internet. OpenSSH encripta todo el tráfico (incluyendo la contraseña) para eliminar que escuchen la conexión, que esta sea hackeada y otros ataques. Adicionalmente, OpenSSH provee capacidades para tunelización y varios métodos de autenticación y soporta todas las versiones del protocolo SSH.

El presente tutorial es válido desde la versión 4.8p1 del port de openssh-server en GNU/Linux (ver Referencias).
2. Instalación de OpenSSH

Instale el paquete OpenSSH contenido en los repositorios de Debian, ejecutando lo siguiente:

# aptitude install openssh-server
# aptitude install openssh-client

Con esto, los usuarios del sistema podrán ingresar vía SFTP, pero cuidado, si se deja la configuración de esta manera, los usuarios podrán navegar por todo el sistema arriesgando así la confidencialidad de los demás usuarios y del propio sistema. Para evitar que esto suceda, OpenSSH puede configurarse de tal manera que el usuario pueda conectarse al servidor pero enjaulado en su directorio. Esto quiere decir que tendrá acceso solo al directorio donde están sus datos y no podrá subir de este nivel.
3. Creación de un grupo de usuario con acceso SFTP

Para ejemplificar la configuración se crea un grupo y un usuario en el sistema, además de sus directorios de la siguiente
manera.

Cree un directorio jaula para el grupo usuariosftp y un directorio jaula para el usuario usuario1 específicamente:

# mkdir /home/usuariossftp
# mkdir /home/usuariossftp/usuario1

Cambie los permisos de los directorios a 755 con los siguientes comandos:

# chmod 755 /home/usuariossftp
# chmod 755 /home/usuariossftp/usuario1

Cree el grupo usuariossftp y el usuario usuario1 como sigue:

# groupadd usuariossftp
# useradd -g usuariossftp -s /bin/false -d /home/usuariossftp/usuario1 usuario1
# passwd usuario1

Y añadí una carpeta dentro del ‘home’ de usuario1 para que éste pueda subir sus archivos:

# mkdir /home/usuariossftp/usuario1/archivos
# chown usuario1:usuariossftp /home/usuariossftp/usuario1/archivos
4. Configuración del enjaulado SFTP

Para configurar un servidor SFTP restringido uno debería usar las directivas ForceCommand y ChrootDirectory en el archivo de configuración sshd_config, que se encuentra en /etc/ssh/sshd_config.

Primero hay que cambiar, la linea en /etc/ssh/sshd_config,

Subsystem sftp /usr/lib/openssh/sftp-server

escribiendo en su lugar:

Subsystem sftp internal-sftp

Puede restringirse el servicio a usuarios o a grupos de usuarios, de modo que si se requiere aplicar enjaulado al usuario1 usamos la directiva Match como sigue:

.
.
UsePAM yes
Match user usuario1
ChrootDirectory /home/usuariossftp/usuario1
ForceCommand internal-sftp

Para el enjaulado del grupo usuariossftp se hace de manera similar (de esta forma aparecerán en el directorio raíz todos los usuarios que hayamos creado):

.
.
Match group usuariossftp
ChrootDirectory /home/usuariossftp
ForceCommand internal-sftp

 

Así, todos los usuarios que pertenezcan a este grupo irán a la jaula especificada en ChrootDirectory.

Para que la configuración tome efecto, restablezca ssh con el comando:
# /etc/init.d/ssh restart
5. Permisos y propietarios de la jaula

Para que el enjaulado vía SFTP pueda darse, el propietario del directorio jaula y los directorios sobre este, debe ser root. Así para este ejemplo, las carpetas /home, /home/usuariossftp y /home/usuariossftp/usuario1 deberán ser propiedad de root con los permisos 755. Esta es una restricción del ChrootDirectory en OpenSSH.

Si dejásemos de esta forma la configuración anterior, el usuario no tendría privilegios de escritura sobre su directorio. Para solucionar este problema, se crea al usuario el directorio ‘archivos’, dentro de la jaula, que sea de su propiedad, y es allí donde él podrá tanto escribir como leer sus archivos.
6. Otras configuraciones

Otras configuraciones ayudan a mantener la seguridad del sistema ante los posibles accesos malintencionados por parte de usuarios no permitidos. Alguna de estas son:

Reducir el tiempo de autenticación a un valor menor, en este caso a 30 segundos y restringir el acceso al usuario root. Esto se hace en la sección autenticación del archivo /etc/ssh/sshd_config:
LoginGraceTime 30
PermitRootLogin no

Se le puede permitir el acceso solo a algunos usuario o grupos de usuarios con las directivas AllowUsers y AllowGroups respectivamente, listando a continuación de las directivas los usuarios o grupos que tendrán permitido el acceso. Así como se puede permitir el acceso solo a usuario y grupos específicos con las directivas anteriores, se puede denegar el acceso a usuario y grupos con las directivas DenyGroups y DenyUsers

Puede mejorarse la seguridad del sistema en el acceso vía SFTP, haciendo diversas configuraciones en el archivo /etc/ssh/sshd_config, para ello consulte la página de manual aquí referenciada.
7. Referencias
http://www.openssh.com/
http://en.wikipedia.org/wiki/SSH_file_transfer_protocol
http://undeadly.org/cgi?action=article&sid=20080220110039
http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config
www.favshare.com/es/pdf/servidores…/enjaulado-SFTP.pdf
http://www.esdebian.org/foro/32577/como-enjaulo-usuarios-conectarse-via-…
http://www.debian-administration.org/articles/590

Fuente: http://www.esdebian.org/wiki/enjaulado-sftp

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *