Cómo instalar FTP en CentOS 8

En esta ocasión veremos cómo instalar FTP en CentOS 8 paso a paso, de modo que puedas configurar este servicio en tu servidor o VPS CentOS para distribuir archivos públicamente o para tus usuarios, teniendo en cuenta el firewall de CentOS y el cifrado TLS.

Antes de instalar FTP en CentOS 8

Para seguir esta guía de instalación de FTP en CentOS 8 necesitas cumplir estos pocos requisitos:

  • Un sistema CentOS 8 actualizado.
  • Acceso a consola como usuario con privilegios de sudo, o el mismo root.
  • Conexión a Internet.

Ya que vamos a utilizar paquetes presentes en los repositorios de la distribución, una buena idea es actualizar la información de los repositorios en incluso atcualizar los paquetes ya instalados en el sistema:

~$ sudo yum update -y

Cómo instalar FTP en CentOS 8

Para instalar un cliente FTP en CentOS 8 si lo único que quieres es conectar a otros servicios, el paquete que estás buscando es ftp, que puedes instalar con yum:

~$ sudo yum install -y ftp

Si lo que quieres instalar es el servidor FTP para tu máquina CentOS 8, entonces optaremos por vsFTPd, y el paquete que buscamos es vsftpd:

~$ sudo yum install -y vsftpd

Tras la descarga e instalación del paquete se crea un nuevo servicio en CentOS 8, el servicio vsftpd.service o simplemente vsftpd. Este servicio no queda en ejecución, ni tampoco está activado para iniciar automáticamente en cada arranque de CentOS 8.

Debemos iniciar el servicio para poder empezar a trabajar con él, y también tenemos que activarlo para su inicio automático. Todo esto podemos hacerlo en un único comando:

~$ sudo systemctl enable --now vsftpd

Podremos comprobar el estado del servicio en cualquier momento con el comando systemctl status vsftpd:

como instalar ftp en centos 8

Configurar el firewall para el servicio FTP en CentOS 8

Por defecto el firewall de CentOS 8 no permite conexiones entrantes, así que es necesario añadir la excepción correspondiente:

~$ sudo firewall-cmd --permanent --zone=public --add-service=ftp

Para aplicar estos cambios hay que recargar la configuración del firewall:

~$ sudo firewall-cmd --reload

A partir de este momento es posible conectar al servicio FTP de CentOS 8 desde otros sistemas en red.

Permitir conexiones en modo pasivo

Opcionalmente, si quieres permitir conexiones en modo pasivo al servidor debes configurar el firewall para ello, ya que si un cliente FTP intenta conectar en modo pasivo puedes obtener el error «ftp: connect: No existe ninguna ruta hasta el `host’«.

Permitiremos la conexión en los puertos TCP del 10000 al 10100:

~$ sudo firewall-cmd --permanent --zone=public --add-port=10000-10100/tcp

Hay que recargar la configuración del firewall para aplicar los cambios y recuerda configurar estos puertos en la configuración de vsFTPd.

Cómo configurar vsFTPd en CentOS 8

A la hora de configurar el servicio FTP vsFTPd en CentOS 8 tendremos que trabajar sobre sus archivos de configuración, ubicados en la ruta /etc/vsftpd/.

El archivo principal es vsftpd.conf, ya que es donde más ajustes realizaremos.

Para que cualquier cambio que hagamos en la configuración de vsFTPd se aplique, será necesario reiniciar el servicio:

~$ sudo systemctl restart vsftpd

Modo pasivo

Es recomendable que el servidor FTP pueda funcionar en modo pasivo, para lo cual debemos determinar un número de puertos a los que desviar las transmisiones de datos de los clientes.

En este ejemplo vamos a configurar los puertos del 10000 al 10100, pero puedes especificar partiendo de otro puerto base, y con rangos mayores o menores según las expectativas de uso y número de usuarios simultáneos que tengas.

Editaremos vsftpd.conf:

~$ sudo nano /etc/vsftpd/vsftpd.conf

Y añadiremos al final este bloque:

...
# MODO PASIVO
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10100

Guardados los cambios, hay que reiniciar el servidor vsFTPd.

Acceso anónimo

Por defecto vsFTPd no permite conexiones anónimas, que son interesantes si queremos ofrecer archivos públicamente, como los repositorios de CentOS, por ejemplo.

En primer lugar debemos saber que la ruta configurada por defecto para conexiones anónimas es /var/ftp/, así que es ahí donde debemos colocar los archivos que queremos distribuir.

Buscaremos la directiva anonymous_enable en el archivo vsftpd.conf:

...
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
...

Cambiaremos su valor a YES:

anonymous_enable=YES

Tras guardar los cambios y reiniciar el servicio, podremos conectar de forma anónima.

Puedes comprobarlo accediendo desde un navegador, introduciendo la dirección IP o dominio de tu servidor CentOS 8:

como configurar ftp en centos 8

Conexiones seguras SSL/TLS del servicio FTP en CentOS 8

Si vas a mantener las conexiones de los usuarios de CentOS 8 deberías protegerlas mediante cifrado. Para ello generaremos e instalaremos una clave RSA con su correspondiente certificado:

~$ sudo openssl req -newkey rsa:2048 -x509 -nodes -days 365 -keyout /etc/pki/tls/private/vsftpd.key -out /etc/pki/tls/certs/vsftpd.crt

Es interesante contestar a la pregunta sobre el «Common Name» con el dominio de la máquina CentOS 8 que se utilizará como dirección en las conexiones.

Editamos el archivo vsftpd.conf y añadimos este bloque al final del mismo:

...
# SSL
rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt
rsa_private_key_file=/etc/pki/tls/private/vsftpd.key
ssl_enable=yes
allow_anon_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

Básicamente activamos el cifrado SSL, configuramos las rutas de la clave RSA y el certificado que creamos anteriormente, forzamos el uso de seguridad para usuarios locales, etc.

Reiniciamos el servicio vsftpd y ahora para acceder con usuario y contraseña debemos configurar el cliente FTP con la opción de FTP explícito sobre TLS.

Las conexiones anónimas podrán funcionar tanto con TLS como sin cifrado alguno.

Acceso a usuarios locales

Por defecto el acceso a usuarios locales está habilitado, en modo lectura/escritura. De ello son responsables estas directivas de vsftpd.conf:

...
local_enable=YES
...
write_enable=YES
...

Si quieres permitir acceso a usuarios en modo sólo lectura, modifica el valor de write_enable a NO. Y si quieres deshabilitar por completo el acceso de usuarios, cambia el valor de local_enable a NO.

Enjaular a los usuarios locales (chroot)

En caso de permitir el acceso a usuarios locales, por defecto estos al conectar pueden salir de sus directorios personales, navegando por todo el sistema de archivos de CentOS 8. Normalmente este comportamiento no es deseable en un servidor FTP, por lo que se suele configurar el enjaulado o chroot del usuario. Editaremos el archivo vsftpd.conf y buscaremos la directiva chroot_local_user:

...
#chroot_local_user=YES
...

Esta directiva está desactivada por defecto así que eliminaremos el carácter # inicial, y añadiremos la directiva allow_writeable_chroot:

...
chroot_local_user=YES
allow_writeable_chroot=YES
...

Ahora los usuarios pueden acceder a su directorio personal, y es el único lugar en el que podrán navegar.

Conclusión

Ahora ya sabes cómo instalar y configurar el servicio FTP en CentOS 8, de modo que podrás permitir acceso anónimo y privado, con transmisión cifrada, etc. Ya no tienes excusa para no distribuir fácilmente tus archivos.

Si tienes dudas o preguntas, sugerencias, notificaciones, etc. puedes dejar un comentario.

¡Apoya este sitio!

¿Te ha sacado de un atolladero esta guía de instalación y configuración de FTP en CentOS 8 con vsFTPd? Pues si quieres agradecérnoslo, puedes contribuir mínimamente al mantenimiento de este sitio y elaboración de más guías y tutoriales sobre CentOS 8 y otros sevicios además de FTP, y puedes hacerlo…

Invitándonos a un café:

 

O dejando una propina en PayPal:

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

8 comentarios en «Cómo instalar FTP en CentOS 8»

    • ¡Hola, Javier! Te recomiendo algún cliente gráfico como Filezilla. Una vez establecida la conexión con el servidor el resto es trabajar con ventanas y arrastrar y soltar archivos, no tiene más misterio.

      Responder
  1. Hola, primero que todo quiero felicitarlos por sus manuales y ayudas, son excelentes. En mi caso he seguido al pie de la letra algunas configuracioes e instalaciones de LAMP y Moodle en Centos 8 en este mismo sitio. Pero en este último he experimentado algunos problemas de error, he pegado el siguiente código tras ejecutar la instrucciones de modificar el archivo vsftpd.conf para cifrado seguro, luego de guardar los cambios y recargar el servicio vsftpd, tengo esto:

    Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Wed 2021-02-17 17:48:08 -03; 46s ago
    Process: 4414 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=2)
    Main PID: 4185 (code=killed, signal=TERM)

    feb 17 17:48:08 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon…
    feb 17 17:48:08 localhost.localdomain vsftpd[4414]: 500 OOPS: SSL: cannot load RSA certificate
    feb 17 17:48:08 localhost.localdomain systemd[1]: vsftpd.service: Control process exited, code=>
    feb 17 17:48:08 localhost.localdomain systemd[1]: vsftpd.service: Failed with result ‘exit-code>
    feb 17 17:48:08 localhost.localdomain systemd[1]: Failed to start Vsftpd ftp daemon.

    Si me pueden orientar se lo agradecería. Mil gracias por compartir la información.

    Responder
    • Hola, Mauricio. O no has creado archivo de la clave RSA, o las rutas especificadas en vsftpd.conf no son correctas. Revísalo, seguro que funcionará.

      Responder

Deja un comentario