Mostramos cómo montar un servidor de FTP usando el paquete vsftp sobre un equipo con el sistema operativo Linux CentOS 7 Minimal. Aunque no es lo recomendable explicamos cómo dar acceso al superusuario root a este servidor de FTP con permisos para recorrer todas las carpetas del equipo. Repetimos que por seguridad no es lo recomendable pero es útil para determinados entornos muy controlados donde queremos acceder a todas las carpetas de un equipo Linux desde otros equipos con Windows.

Requisitos para montar servidor FTP en Linux

Los requisitos básicos para montar un servidor de FTP en Linux son:

  • Disponer de un equipo con Linux CentOS 7 Minimal.
  • Este equipo debe tener conexión a Internet para descargar el paquete vsftp.
  • Necesitaremos un usuario y contraseña con permisos para instalar software en el equipo Linux.
  • Para nuestro ejemplo necesitaremos la contraseña del superusuario root, pues será el que usemos para acceder al servidor de FTP.
  • Si queremos permitir el acceso externo (desde fuera de la red LAN) a nuestro servidor FTP deberemos disponer de acceso al router o cortafuegos de nuestra red, para hacer el NAT (redirección o mapeo de puerto) correspondiente. Repetimos que esto es muy peligroso si se usa FTP y no SFTP y si se habilita el acceso del superusuario root, en este caso solo se recomienda el acceso desde algún equipo controlado de la LAN.

Instalar y configurar vsftp en Linux CentOS 7 Minimal

La instalación de este paquete es muy simple, es suficiente con ejecutar el siguiente comando Linux:


yum install vsftp

Si encuentra el paquete correctamente la instalación se realizará correctamente en cuestión de segundos.

A continuación podremos configurar, de manera básica al menos, la aplicación vsftp. Por ejemplo recomendamos deshabilitar el acceso de usuarios anónimos (sin contraseña), para ello editaremos el fichero vsftpd.conf que suele estar en /etc/vsftpd:

vi /etc/vsftpd/vsftpd.conf

Si lo editamos con vi deberemos pulsar la tecla «a» para habilitar la inserción de texto. Buscaremos la línea anonymous_enable=YES y la cambiaremos por:

anonymous_enable=NO

Por otro lado, si queremos permitir que vsftp use los usuarios locales del equipo Linux deberemos añadir o modificar si existe la línea local_enable y ponerla a valor YES:

local_enable=YES

A continuación indicaremos a vsftp que habilite la seguridad a través de fichero de usuarios, desde el que le indicaremos qué usuarios locales del equipo tendrán acceso al FTP. Para ello añadiremos las siguientes líneas:

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

Guardaremos los cambios en el fichero pulsando la tecla Escape y luego escribiendo «:wq» y pulsando INTRO.

Una vez guardados los cambios en el fichero vsftpd.conf deberemos añadir el fichero indicado en la última línea de configuración anterior: /etc/vsftpd/user_list, que debe contener los nombres de los usuarios a los que les permitiremos acceso FTP a nuestro servidor. Para ello:

vi /etc/vsftpd/user_list

Si ya existe eliminaremos todos los nombres de usuarios que no queremos que accedan por FTP al equipo y dejaremos solo aquellos a los que les permitamos el acceso:

Montar servidor FTP en equipo Linux CentOS 7 Minimal con vsftp

En nuestro caso solo hemos dejado el usaurio root, si queremos permitir el acceso a otros usuarios del sistema operativo Linux los añadiríamos en este fichero.

Por último, para permitir que los usuarios con permisos puedan navegar y listar todas las carpetas del equipo deberemos ejecutar el siguiente comando (que no es recomendable por seguridad):

setsebool -P allow_ftpd_full_access 1

Si queremos permitir el acceso externo a nuestro servidor FTP deberemos abrir el puerto ftp en el firewall de Linux CentOS 7. Para ello usaremos el comando:

firewall-cmd –permanent –zone=public –add-service=ftp –permanent

Recargaremos el firewall para aplicar los cambios:

firewall-cmd –reload

Teniendo en cuenta que en este artículo estamos explicando el acceso con FTP y no con SFTP, por lo tanto los puertos que se emplearán serán el 20 y el 21.

Si queremos que el servicio FTP se inicie automáticamente cada vez que se arranque el equipo ejecutaremos este comando:

systemctl enable vsftpd

Una vez configurado vsftp reiniciaremos el servicio para aplicar los cambios con el comando:

systemctl restart vsftpd

Por último, si disponemos de un router o cortafuegos en nuestra red y queremos permitir el acceso a nuestro servidor FTP desde fuera de la LAN (desde Internet), deberemos hacer un NAT en el cortafuegos o router, un mapeo o redirección de puertos.

Habilitar acceso externo a nuestro servidor FTP haciendo NAT, mapeo o redirección de puertos

Como ejemplo usaremos un router cualquiera (en nuestro caso de Vodafone). En cualquiera deberemos buscar la opción de NAT o de redirección de puertos:

Habilitar acceso externo a nuestro servidor FTP haciendo NAT, mapeo o redirección de puertos

Pulsaremos en el + para añadir una nueva redirección e indicaremos el puerto y la IP de destino (la de nuestro servidor Linux de FTP):

Habilitar acceso externo a nuestro servidor FTP haciendo NAT, mapeo o redirección de puertos

Aplicaremos los cambios y, de esta forma, ya tendremos acceso desde fuera de nuestra red al servidor FTP usando la IP pública proporcionada por nuestro proveedor de servicios de Internet ISP:

Habilitar acceso externo a nuestro servidor FTP haciendo NAT, mapeo o redirección de puertos

Acceso a servidor FTP Linux usando Filezilla Client desde equipo Windows

Como ejemplo para comprobar que nuestro servidor FTP sobre Linux con vsftp funciona correctamente podremos usar Filezilla Client, una aplicación gratuita que es un cliente FTP. En nuestro caso descargaremos e instalaremos este software en un equipo con Windows. Una vez instalado lo abriremos y crearemos una nueva conexión:

  • Servidor: IP  o nombre de red del servidor Linux CentOS (si accedemos desde fuera de la red LAN deberemos introducir la IP pública o el dominio si lo tenemos con la zona FTP apropiada redirigida a la IP pública).
  • Puerto: no es necesario establecerlo, tomará el de defecto.
  • Protocolo: seleccionaremos «FTP – Protocolo de Transferencia de Archivos». Siempre teniendo en cuenta, como hemos repetido varias veces, que no es seguro y el recomendable es el SFTP, que no es objeto de este artículo.
  • Cifrado: seleccionaremos «Only use plain FTP (insecure)». Como indica la selección este tipo de conexión no es segura dado que la contraseña viajará en texto plano sin cifrar.
  • Modo de acceso: seleccionaremos «Normal».
  • Usuario: el nombre del usuario al que hayamos dado permisos de acceso FTP, en nuestro caso el superusuario root (este proceso no es seguro).
  • Contraseña: la contraseña del usuario anterior.
Acceso a servidor FTP Linux usando Filezilla Client desde equipo Windows

Pulsando en «Conectar», si todo es correcto, accederemos a todas las carpetas del equipo Linux:

Acceso a servidor FTP Linux usando Filezilla Client desde equipo Windows