Entorno Chroot en debian Jessie

SFTP

Cuando trabajamos en modo cliente servidor, siempre es necesario la transferencia de archivos; para esto existen muchas aplicaciones que usan el protocolo FTP para realizar esta operación. Este protocolo en si es vulnerable ya que envía la información sin encriptar, ocasionando un grave problema de seguridad, es por ello que nos vemos en la necesidad de adoptar un mecanismo que nos brinde seguridad al momento de enviar o recibir archivos desde algún servidor remoto.

En esta entrada me enfocare en el mecanismo de seguridad que brinda OpenSSH, lo único que necesitas para hacer uso de este mecanismo es tener instalado el servidor de ssh que ya escribí sobre eso   en esta entrada ssh como interprete de ordenes seguro.

¿Qué necesito para transferir o descargar archivos del servidor remoto ?

  • Una aplicación que me permita hacer realizar conexión por FTP y SFTP, en este ejemplo puedes usar el ya conocido por todos Filezilla  que lo también lo puedes usar en plataformas diferentes a GNU/Linux.
  • Tener un usuario creado en el servidor para poder iniciar sesión
  • Saber el nombre del server o la dirección IP del mismo
  • Tener el puerto 22 abierto en tu Firewall

¿ Qué es SFTP?

 Según la Wikipedia:

El protocolo SFTP:  Permite una serie de operaciones sobre archivos remotos. SFTP intenta ser más independiente de la plataforma que SCP, por ejemplo, con el SCP encontramos la expansión de comodines especificados por el cliente hasta el servidor, mientras que el diseño SFTP evita este problema. Aunque SCP se aplica con más frecuencia en plataformas Unix, existen servidores SFTP en la mayoría de las plataformas.

¿Qué es Chroot?

Según Wikipedia:

chroot en los sistemas operativos derivados de Unix, es una operación que invoca un proceso, cambiando para este y sus hijos el directorio raíz del sistema. “chroot” puede referirse a la llamada de sistema chroot(2) o al programa ejecutable chroot(8). Comúnmente, el entorno virtual creado por chroot a partir de la nueva raíz del sistema se conoce como “jaula chroot”.

Ahora que ya sabes que es SFTP y Chroot y tienes un usuario en el servidor solo resta conectarte con filezilla  y realizar tus procesos de transferencia de archivos; pero como el tema de este día no es transferencia de archivos de forma segura, más bien vamos entrando un poco mas en el tema de la seguridad y hacer que los usuarios que se conecten a tu servidor no puedan escalar directorios; es decir que ingresen al directorio que tu le has asignado y sin acceso a la terminal por cuestiones de seguridad que un usuario silvestre puede romper tu esquema de seguridad, para ello es necesario hacer unas configuraciones extras a ssh, la cual explicare en los siguientes pasos.

Es necesario recalcar que toda la configuración se tiene que hacer en el servidor, en el cliente no tienes que hacer nada, simplemente saber las credenciales de acceso al servidor. Para lograr esta configuración es necesaria la edición del archivo de configuración de ssh.

  1. Edita el archivo que se encuentra en el directorio /etc/ssh/sshd_config 
    nano  /etc/ssh/sshd_config

    Localiza la siguiente linea  Subsystem sftp /usr/lib/openssh/sftp-server y sustituye por esta 

    Subsystem sftp internal-sftp
  2. Al final del archivo agrega las siguientes Líneas, dichas lineas forzaran a los usuarios a loguearse en un directorio único; es decir hacer funcionar el entorno enjaulado de chroot.
    Match group grupo-sftp #Grupo previamente creado al cual pertenecen los users.
             ChrootDirectory /home/%u #Directorio personal en el cual harán login 
             X11Forwarding no #Ejecutar GUI en server
             AllowTcpForwarding no #Redirección de puertos para tunel
             ForceCommand internal-sftp #Forzar el entorno chroot
  3. Guarda los cambios y reinicia el servicio ssh /et
    /etc/init.d/ssh restart
  4. Crea los usuarios del sistema o si ya los tienes agregados solo has las modificaciones respectivas con usermod  
    adduser tux
  5. Crea el grupo al cual pertenecerán los usuarios que estarán en la jaula 
    addgroup grupo-sftp
  6. Agrega el usuario al grupo grupo-sftp 
    usermod -G grupo-sftp
  7. No permitir que el usuario pueda usar la terminal 
    usermod -s /bin/false
  8. Haciendo propietario al root del directorio del usuario 
    chown root.root /home/tux
  9. Asignando el directorio en el cual iniciara al hacer login 
    usermod -d / tux
  10. Estableciendo los permisos al directorio 
    chmod 755 /home/tux
  11. Creando el directorio de trabajo en el directorio personal de cada usuario 
    mkdir /home/tux/documentos
  12. Haciendo propietario al usuario tux para que pueda escribir en el 
    chown tux:tux /home/tux/documentos

Ya con esos pasos estamos listos para probar el entorno enjaulado, crea 2 usuarios como mínimo para que veas que los usuarios inician en sus directorios asignados.  como lo pruebas, lo puedes hacer en el mismo servidor o usando filezilla 

 sftp tux@host

El comando anterior es para hacer las pruebas en el servidor, te pedirá confirmar la llave y luego la clave, y luego observa que se loguea en el directorio que asignaste y listo. Espero sea de ayuda para todos los que siguen este blog. 

Share on FacebookTweet about this on TwitterShare on Google+

Deja un comentario