SFTP y jaulas en Debian y en Ubuntu

4
112

¡Hola amigas y amigos!

Con este pequeño tutorial les queremos ofrecer una alternativa al uso de un Servidor FTP para la transferencia segura de archivos.

¿Por qué esta solución?

Frecuentemente necesitamos que nos copien archivos desde equipos remotos hacia nuestra máquina. Muchos me han preguntado al respecto: ¿instalo un servidor FTP?, ¿cómo instalo un servidor de ficheros basado en Samba?.

Si transitamos de lo sencillo a lo complejo ¿para qué complicarnos la vida si tenemos el OpenSSH-Server instalado?. Y si no lo tenemos, con el sencillo comando:

 # apt install ssh

¡ya lo tenemos!. A partir de ese momento seremos capaces de transferir archivos de forma segura vía el protocolo SFTPSSH File Transfer Protocol“, el cual utiliza el protocolo SSHSecure Shell” para la encriptación.

Por defecto, los usuarios con el permiso de iniciar una sesión remota vía ssh usuario@miequipo, serán capaces de ver la casi totalidad de los archivos almacenados en nuestro sistema, lo cual puede que no sea de nuestro agrado, o que por motivos de seguridad no lo debamos permitir.

Este artículo nos ayudará a configurar el OpenSSH-Server para que los usuarios que queramos queden restringidos a su directorio personal /home/usuario.

Aclaramos que:

  • con éste método, los usuarios enjaulados no podrán iniciar una sesión remota mediante ssh o el PuTTy. Sólo serán capaces de transferir archivos hacia o desde su directorio personal.

¿Cómo configuramos el Openssh-server?

  • Como el usuario root editamos el archivo /etc/ssh/sshd_config, y buscamos que la siguiente línea esté presente:
# nano /etc/ssh/sshd_config
----
Subsystem sftp /usr/lib/openssh/sftp-server
----
  • Al final del archivo, adicionamos:
Match group grupo-sftp
 ChrootDirectory %h
 X11Forwarding no
 AllowTcpForwarding no
 ForceCommand internal-sftp
  • Reiniciamos el servicio:
# systemctl restart ssh
# systemctl status ssh
 ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled)
   Active: active (running) since lun 2017-08-28 09:27:51 EDT; 5s ago
 Main PID: 6234 (sshd)
   CGroup: /system.slice/ssh.service
           └─6234 /usr/sbin/sshd -D

ago 28 09:27:51 systemd[1]: Started OpenBSD Secure Shell server.
ago 28 09:27:51 sshd[6234]: Server listening on 0.0.0.0 port 22.
ago 28 09:27:51 sshd[6234]: Server listening on :: port 22.

¿Cómo creamos el grupo y los usuarios?

Primero creamos el grupo que declaramos en el sshd_config. ¡Cuidado! con el nombre que escogimos anteriormente no vaya a ser que ya exista y sea un grupo del Sistema. Sino deseamos restringir a usuarios existentes en nuestro equipo, debemos crear nuevos usuarios para que puedan transferir archivos. Para que la jaula funcione, a los usuarios nuevos debemos hacerlos también miembros del grupo en cuestión.

# addgroup grupo-sftp
# adduser usuario1
# adduser usuario2
# adduser usuario2
...
# usermod -G grupo-sftp usuario1
# usermod -G grupo-sftp usuario2
# usermod -G grupo-sftp usuario2
  • Comprobamos la creación del grupo y de los usuarios:
# less /etc/passwd
# less /etc/group
# ls -l /home

Y deben aparecer los usuarios usuario1 y usuario2, así como los grupos grupo-sftp y los correspondientes a los usuarios creados. También, al listar el directorio /home, aparecerán los directorios personales de cada usuario creado.

¿Cómo modificamos los directorios personales para que funcione la jaula de forma efectiva?

Debemos aumentar la seguridad de las carpetas personales de cada usuario creado, de forma que no puedan crear carpetas adicionales debajo de su directorio personal y con permisos de escritura donde deseamos (no donde ellos quieran):

# chown root:root /home/usuario1 /home/usuario2
# chmod 755 /home/usuario1 /home/usuario2
# cd /home/usuario1
# mkdir documentos html_publico
# chown usuario1:usuario1 *
# cd /home/usuario2
# mkdir documentos html_publico
# chown usuario2:usuario2 *

Los usuarios pertenecientes al grupo grupo-sftp serán capaces de iniciar sesión con sus nombres y contraseñas vía SFTP solamente –sftp://usuario1@miequipo– y podrán transferir archivos desde y hacia el interior de los directorios ubicados por debajo de su carpeta personal -creadas por nosotros- pero no serán capaces de ver el resto de nuestro sistema de archivos.

Para la transferencia de archivos y carpetas, podemos utilizar cualquier navegador de archivos que soporte el protocolo SFTP., o programas como el WinSCP, FileZilla, etcétera.

La imagen a continuación es un ejemplo de lo explicado al acceder al equipo remoto leonardo-davinci.swl.fan:

sftp-leonardo

¡Esperamos que este artículo le sirva de utilidad práctica y hasta la próxima entrega!

4 Comentarios

  1. Gracias a ti, H2OGi por leer y comentar. La próxima entraga versará también sobre SSH: “Autenticación SSH mediante Llave Pública”. Espero que te sea útil.

  2. Hola,
    Es un placer encontrar lugares en la red, que comparten sus conocimientos de forma tan elegante como concisa.
    Espero poder seguir sus artículos, en la medida que me sea posible.
    😉

    • No había respondido antes por carecer de acceso a Internet después del paso del huracán Irma por Cuba.

      Es muy grato leer comentarios como el tuyo, Manuel. Me obliga a continuar escribiendo.

      Muchas Gracias por comentar y te espero en mi próxima entrega.

Dejar respuesta

Please enter your comment!
Please enter your name here