Skip to main content

Instalar servidor FTP y restringir el acceso a los usuarios en Linux

Instala tu propio servidor restringiendo el acceso a cada usuario a una serie de rutas específicas garantizando la seguridad de tu sistema

Hola a todos en otro post. En esta ocasión os vamos a enseñar como instalar y configurar un servidor ftp en nuestro sistema y restringir a cada usuario el acceso a una serie concreta de directorios pero, antes de nada, y para todos aquellos que empiezan, vamos a explicar que es el protocolo ftp.

 

Qué es el protocolo ftp

El protocolo FTP (File Transfer Protocol) o en español Protocolo de Transferencia de Ficheros, es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol) basado en la arquitectura Cliente – Servidor. Desde un equipo, independientemente del sistema operativo, un usuario puede conectarse a un servidor para descargar datos o para subir sus datos a dicho servidor.

Este servicio es ofrecido por la capa de aplicación del modelo de capas de red TCP/IP al usuario que normalmente, lo hace a través de los puertos 20 o 21. Este protocolo fue diseñado para una transferencia rápida entre el servidor y el cliente pero, no es lo que diríamos seguro. Esto lo digo porque el protocolo ftp, realiza una transferencia de ficheros en texto plano, en otras palabras, si en el proceso hubiese alguien escuchando podría ver los datos tal cual han sido enviados.  Como solución a este problema, podemos utilizar para la conexión sftp o scp para esta transferencia de archivos pero, con la peculiaridad de qué de esta otra forma, los datos se envían encriptados asegurando la privacidad en el envío de datos.

Volviendo al asunto del que hablábamos en un principio, para la instalación del servidor ftp, vamos a utilizar la herramienta vsftd.

 

Instalación de vsftpd

Para instalar nuestro servicio ftp deberemos instalar la herramienta vsftpd de la siguiente forma en máquinas Debian

 

Configuración vsftpd

Para configurar nuestro servidor, deberemos editar el fichero vsftpd.conf, nosotros lo haremos utilizando vim

En este archivo nos vamos a centrar en los parámetros que necesitamos por ahora

  • listen = YES -> Con esta opción especificamos si queremos iniciar el servicio al iniciar el sistema.
  • anonymous_enable = NO -> Con esta opción controlamos si los usuarios anónimos puedan conectarse a nuestro sistema. Por seguridad se establecerá en no.
  • local_enable = YES -> Permitimos o denegamos que los usuarios locales, es decir, el sistema en el cual está instalado pueden loguearse o no.
  • write_enable = YES -> Para permitir o no que los usuarios además de descargar puedan subir sus propios ficheros.
  • local_umask = 022 -> La umask establece los permisos para aquellos directorios y ficheros que se creen nuevos en el servidor. Estableceremos el valor 022 (755 para directorios y 644 para ficheros).
  • chroot_local_user = YES -> Esta directiva la utilizaremos para enjaular al usuario en su directorio y evitar que pueda navegar por todo el sistema.
  • chroot_list_enable = YES -> Con esta directiva podemos especificar aquellos usuarios que queremos que tengan permisos para acceder al árbol del sistema.
  • chroot_list_file = /etc/vsftpd.chroot_list -> Con esta opción, indicamos el fichero donde estará el listado de usuarios que pueden navegar por encima de los directorios del servidor, es decir, podrá salir de su home de usuario.
  • allow_writeable_chroot = YES -> Con esta directiva indicamos al servidor que el usuario enjaulado puede escribir en el servidor.

 

Creación del grupo ftp

En este caso, los usuarios que se conectarán deberán tener ciertos permisos, para ello vamos a crear un grupo ftp que los englobe a todos

Con nuestro grupo ya creado, vamos a crear una shell fantasma para que no puedan entrar directamente a la consola del servidor

Con nuestra shell fantasma creada, vamos a añadirla al listado de shells del sistema, editamos el fichero

Y al final añadimos la carpeta previamente creada

 

Creación de nuestro usuario ftp

Ahora que ya tenemos configurado nuestro servidor, vamos a crear un usuario con el que poder acceder vía ftp y le asignamos los permisos correctos.

Vamos a crear la carpeta home para el usuario, en nuestro caso lo hemos llamado usuarioftp y a la carpeta que engloba los usuarios para este servicio, la hemos llamado ftp

Con la opción -p indicamos que si los padres no existen, nos cree el árbol completo.

Vamos a crear nuestro usuario ftp

Vamos a explicar los parámetros utilizados en este comando

  • Lo primero la palabra clave useradd para la creación de un nuevo usuario
  • Con -g especificamos el grupo del usuario
  • Con la opción -d especificamos la ruta de la home de nuestro usuario
  • Utilizando la opción -c especificamos el nombre completo de nuestro usuario
  • La última palabra, «usuarioftp», sería el nombre de nuestro usuario

Ahora añadimos una contraseña a nuestro usuario con el comando

Tendremos que ingresar la contraseña dos veces para que el sistema nos la valide y acepte.

Ahora vamos a darle permisos al usuario en su home

 

Enjaulando al usuario

Ahora que ya tenemos nuestro grupo y usuario creados, así como la configuración del servidor, sólo nos queda enjaular a dicho usuario. Esto quiere decir que el usuario no podrá escalar en la jerarquía del directorio y sólo permanecerá en su propio directorio.

Buscamos nuestro usuario en el fichero /etc/passwd

Copiamos los datos de nuestro usuario, en nuestro caso

Y lo pegamos en el fichero /etc/vsftpd.chroot_list

 

Con todo esto ya sólo nos faltaría reiniciar el servicio ftp

 

Conexión con el servidor ftp

Ahora probamos la conexión, como vemos en la siguiente imagen

Instalar servidor FTP y restringir el acceso a los usuarios en Linux

 

Ya tenemos nuestro usuario creado y enjaulado para conectarse por ftp. Para aquellos interesados, en los próximos días, crearé un post explicando como trabajar desde un servicio ftp y resolveré aquellas dudas que expongáis en los comentarios. Gracias por leernos y nos vemos en el próximo post.

 

2 thoughts on “Instalar servidor FTP y restringir el acceso a los usuarios en Linux

    1. Hola Jon,

      De que forma lo has configurado?, qué has copiado y pegado exactamente?
      Con respecto a las opciones que se indican, chroot_local_user y allow_writeable_chroot, entiendo que las has habilitado.
      Puedes darme más información de cómo has configurado el servicio con el fin de poder ayudarte a solucionar tu problema concreto.

      Saludos

Deja un comentario

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