jueves, 1 de diciembre de 2011

Instalar y configurar un servidor SFTP


Como prometimos en otro post, aquí está una pequeña explicación de cómo instalar y configurar nuestro propio servidor SFTP y así poder enviar archivos de forma segura por internet desde cualquier parte del mundo.

Para los que no conozcan esta forma de transmisión de archivos cliente servidor, recientemente publicamos dos post con una pequeña explicación de cómo funciona la comunicación entre el cliente y el server. Hay que tener en cuenta que se explica el funcionamiento de FTP y no de SFTP. Si intentamos capturar los paquetes salientes de nuestro PC de una comunicación con este protocolo, veremos que esta codificado, imposibilitando el entendimiento sencillo de SFTP. Pero estos post sí que nos dan una idea de su arquitectura de funcionamiento.

También en otro post ya publicado instalábamos y configurábamos un servidor SSH. Pues bien, si queremos usar un acceso remoto seguro como es SSH, también necesitaremos una forma segura de descargar y subir archivos. Por esto, SSH también trae un server SFTP con lo que solo necesitaremos seguir los pasos del post anterior para instalar el servidor SFTP.

La configuración de seguridad es la realizada para el servidor SSH, pero se puede realizar varios cambios que aumentaran la seguridad.

Para la configuración explicita de este servidor, primero crearemos un grupo de usuarios con acceso SFTP

Con el fin de ejemplificar la configuración, se crea un grupo y un usuario en el sistema. Además de sus directorios de la siguiente manera:

Creamos el grupo usuarios sftp y el usuario usuario1 como sigue:


sudo groupadd usuariossftp

sudo useradd -g usuariossftp -s /bin/false -d /home/usuariossftp/usuario1 usuario1

sudo passwd usuario1



Creamos un directorio jaula para el grupo usuario sftp y un directorio jaula para el usuario usuario1 específicamente:

sudo mkdir /home/usuariossftp

sudo mkdir /home/usuariossftp/usuario1



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

sudo chmod 755 /home/usuariossftp

sudo chmod 755 /home/usuariossftp/usuario1


Y añadimos una carpeta dentro del 'home' de usuario1 para que este pueda subir sus archivos:

mkdir /home/usuariossftp/usuario1/archivos

chown usuario1:usuariossftp /home/usuariossftp/usuario1/archivos

En un próximo pos seguiremos con la configuración de SFTP realizando el enjaulado de SFTP

Ya realizados los pasos explicados en la primera parte de este tema, podemos continuar con lo desarrollado en este post.

Lo más seguro es que al montar el servidor SFTP no nos interese que los usuarios que accedan a este servicio puedan leer y descargarse todos los archivos de nuestro sistema. Para evitar esto, realizaremos un enjaulado SFTP, con lo que limitaremos la navegación del cliente a unos determinados ficheros.

Para restringir esto debemos 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 línea 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
el enjaulado al usuario1 usamos la directiva Match como sigue:


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

Esto se coloca después de la línea Subsystem

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:


sudo /etc/init.d/ssh restart


Para finalizar una advertencia. Si antes en la configuración de ssh as introducido una línea tipo AllowUsers debes ponerla siempre antes de la línea Subsystem. Sino al reiniciar el servicio ssh te dará un error de esa línea.

Ya realizados los pasos explicados en la primera parte de este tema, podemos continuar con lo desarrollado en este post.

Lo más seguro es que al montar el servidor SFTP no nos interese que los usuarios que accedan a este servicio puedan leer y descargarse todos los archivos de nuestro sistema. Para evitar esto, realizaremos un enjaulado SFTP, con lo que limitaremos la navegación del cliente a unos determinados ficheros.

Para restringir esto debemos 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 línea 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
el enjaulado al usuario1 usamos la directiva Match como sigue:


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

Esto se coloca después de la línea Subsystem

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:


sudo /etc/init.d/ssh restart


Para finalizar una advertencia. Si antes en la configuración de ssh as introducido una línea tipo AllowUsers debes ponerla siempre antes de la línea Subsystem. Sino al reiniciar el servicio ssh te dará un error de esa línea.


Fuente:  nosolounix

No hay comentarios:

Publicar un comentario