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

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

17 marzo, 201727 septiembre, 2017 Iván Martínez Linux

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.

 

2Qué 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.

 

3Instalación de vsftpd

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

sudo apt-get install vsftpd

1

sudo apt-get install vsftpd


 

Configuración vsftpd

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

sudo vim /etc/vsftpd.conf

1

sudo vim /etc/vsftpd.conf


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

 

4Creació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

sudo groupadd ftp

1

sudo groupadd ftp


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

sudo mkdir /bin/ftp

1

sudo mkdir /bin/ftp


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

sudo vi /etc/shells

1

sudo vi /etc/shells


Y al final añadimos la carpeta previamente creada

/bin/ftp

1

/bin/ftp


 

5Creació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

mkdir -p /home/ftp/usuarioftp

1

mkdir -p /home/ftp/usuarioftp


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

Vamos a crear nuestro usuario ftp

sudo useradd -g ftp -d /home/ftp/usuarioftp -c "Nombre usuario" usuarioftp

1

sudo useradd -g ftp -d /home/ftp/usuarioftp -c "Nombre usuario" usuarioftp


Vamos a explicar los parámetros utilizados en este comando

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

sudo passwd usuarioftp

1

sudo passwd usuarioftp


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

sudo chown -R usuarioftp:ftp /home/ftp

1

sudo chown -R usuarioftp:ftp /home/ftp


 

6Enjaulando 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

cat /etc/passwd | grep usuarioftp

1

cat /etc/passwd | grep usuarioftp


Copiamos los datos de nuestro usuario, en nuestro caso

usuarioftp:x:1001:114:usuarioftp:/home/ftp/usuarioftp:

1

usuarioftp:x:1001:114:usuarioftp:/home/ftp/usuarioftp:


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



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

sudo service vsftpd restart

1

sudo service vsftpd restart


 

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.