Cómo instalar FTP en Ubuntu 20.04 LTS

En este artículo veremos cómo instalar FTP en Ubuntu 20.04 LTS Focal Fossa, concretamente el servidor FTP vsFTPd, de modo que harás funcionar el protocolo de transferencia de archivos sobre tu servidor o VPS Ubuntu.

Antes de instalar FTP en Ubuntu 20.04

Para poder seguir los pasos de esta guía de instalación y configuración del servidor FTP vsFTPd en Ubuntu 20.04 LTS sólo necesitas partir de estos mínimos requisitos:

  • Un sistema Ubuntu 20.04 LTS Focal Fossa actualizado.
  • Un usuario con permisos de sudo.
  • Conexión a Internet.

Cómo instalar FTP en Ubuntu 20.04

Vamos a instalar el servidor FTP vsFTPd en Ubuntu 20.04 LTS desde los repositorios de la distribución, así que la primera acción será actualizar la información de los repositorios:

~$ sudo apt update

El paquete que instalaremos es vsftpd:

~$ sudo apt install -y vsftpd

Tras la descarga e instalación del servidor FTP vsFTPd se crea un nuevo servicio en Ubuntu 20.04, el servicio vsftpd.service o vsftpd, que queda en ejecución y habilitado para iniciar automáticamente con cada arranque del sistema.

Podemos comprobar el estado del servidor FTP en cualquier momento con el comando systemctl status vsftpd:

como instalar ftp en ubuntu 20.04 lts focal fossa

Cómo configurar el firewall UFW de Ubuntu 20.04 para vsFTPd

Si el firewall UFW está activado en Ubuntu 20.04 LTS habrá que permitir el acceso a los puertos estándar del servicio FTP, como son el puerto de comandos:

~$ sudo ufw allow ftp

Y el puerto de datos, para el modo activo:

~$ sudo ufw allow ftp-data

Cómo probar el servicio FTP en Ubuntu 20.04

Podemos hacer una prueba rápida del funcionamiento del servicio conectando desde otra máquina con un cliente como puede ser un navegador, usando el protocolo ftp:// e indicando la dirección IP, nombre de máquina o nombre DNS del servidor Ubuntu 20.04.

Por ejemplo, el servidor Ubuntu 20.04 LTS que usamos en este tutorial es accesible en el dominio ubuntu2004.local.lan, así que podemos utilizar ftp://ubuntu2004.local.lan como URL:

instalar ftp en ubuntu 20.04 lts focal fossa

Si todo va bien se mostrará un diálogo de identificación, ya que por defecto vsFTPd sólo permite el acceso a usuarios locales. Antes de intentar conectar conviene repasar la configuración.

Cómo configurar el servidor FTP en Ubuntu 20.04

Para configurar el servidor FTP vsFTPd en Ubuntu 20.04 LTS trabajaremos sobre su archivo de configuración principal, vsftpd.conf, que se encuentra en la ruta /etc/. A continuación veremos algunos de los ejemplos de configuración del servidor FTP vsFTPd más habituales.

Configurar el modo pasivo

La configuración por defecto del servidor FTP vsFTPd en Ubuntu 20.04 LTS utiliza el modo activo, lo que sólo permitirá conexiones de clientes que no se encuentren tras un firewall y que no intenten cambiar automáticamente al modo pasivo.

Por ejemplo, si conectamos desde un cliente de consola desde una máquina FreeBSD sin firewall, nos autenticamos y solicitamos un listado de nuestro directorio, la operación se realizará con éxito:

como instalar y configurar ftp en ubuntu 20.04 lts focal fossa

Sin embargo, si accedemos con un cliente de consola desde una máquina Debian con el firewall activado, a pesar de establecer conexión y autenticarnos, la operación de recuperación del listado del directorio falla:

instalar y configurar ftp en ubuntu 20.04 lts focal fossa

Esto ocurre porque el firewall de la máquina cliente impide la apertura de puertos de conexión para datos que solicita el servidor FTP.

Incluso si accedemos desde una máquina Windows sin firewall, aunque con el cliente de consola podríamos acceder sin problemas, al tratar de acceder desde navegadores como Google Chrome la operación podría fallar:

como configurar ftp en ubuntu 20.04 lts focal fossa

El problema en esta ocasión es que el cliente FTP del navegador intenta acceder en modo pasivo por defecto.

Por lo tanto configurar el modo pasivo del servidor FTP en Ubuntu 20.04 LTS será útil para muchos escenarios. Para ello editaremos vsftpd.conf:

~$ sudo nano /etc/vsftpd.conf

Añadiremos las siguientes directivas al final del archivo de configuración:

...
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30050

Obviamente puedes elegir el rango de puertos que te interese.

Terminada la configuración, guardamos los cambios y recargamos la configuración del servicio:

~$ sudo systemctl reload vsftpd

Si el servidor Ubuntu 20.04 LTS tiene activado el firewall UFW, habrá que permitir el acceso al rango de puertos que acabamos de configurar:

~$ sudo ufw allow 30000:30050/tcp

Ahora, cuando intentamos conectar con el cliente de consola desde la máquina protegida con firewall, bastará activar el modo pasivo con el comando passive después de la autenticación, con lo que las transferencias de datos funcionarán:

configurar ftp en ubuntu 20.04 lts focal fossa

Igualmente ocurrirá con aquellos clientes que, aun sin estar tras un firewall, intentan la conexión por defecto en modo pasivo:

ftp en ubuntu 20.04 lts focal fossa

Acceso anónimo

Todos los ejemplos que hemos visto hasta ahora implican autenticación de usuarios, pero quizás lo que queremos es tener simplemente un servicio anónimo de distribución de archivos. Para ello editaremos vsftpd.conf y buscaremos la directiva anoymous_enable:

...
anonymous_enable=NO
...

Cambiaremos el valor NO por YES, pero opcionalmente podemos añadir la directiva no_anon_password para que no se solicite contraseña, ya que no tendría mucho sentido:

...
anonymous_enable=YES
no_anon_password=YES
...

Guardamos los cambios y recargamos la configuración del servicio.

El directorio que se muestra a los usuarios anónimos se encuentra en la ruta /srv/ftp/, así que es ahí donde debemos organizar el contenido que queramos poner a disposición de los visitantes.

servidor ftp en ubuntu 20.04 lts focal fossa

El servidor FTP vsFTPd en Ubuntu 20.04 puede trabajar simultáneamente con acceso anónimo y con usuarios del sistema, así que habrá que indicar al cliente que utilicemos una u otra forma para conectar.

Acceso de usuarios del sistema

Por defecto el servidor FTP vsFTPd trabaja con los usuarios del sistema, que deberán autenticarse debidamente para acceder al servicio. Si sólo quieres usuarios anónimos podrás desactivar el acceso a usuarios del sistema modificando la directiva local_enable:

...
local_enable=YES
...

Cambiando el valor YES por NO se desactivará el acceso a los usuarios locales.

Pero si deseas mantenerlos hay ciertos ajustes que pueden ser interesantes, como que los usuarios locales puedan escribir en sus directorios:

...
# Uncomment this to enable any form of FTP write command.
#write_enable=YES
...

Descomentando la directiva write_enable manteniendo el valor YES los usuarios podrán crear o eliminar archivos y directorios:

...
write_enable=YES
...

Otra característica que puedes activar es el enjaulado de los usuarios, y es que por defecto los usuarios locales pueden navegar por todo el sistema de archivos de Ubuntu 20.04 LTS, cuando podría ser más interesante que solamente pudieran acceder a sus directorios personales. Para eso buscamos la directiva chroot_local_user:

...
#chroot_local_user=YES
...

Y la activamos:

...
chroot_local_user=YES
...

Esta característica no se puede activar si la raíz del directorio personal (es decir, el directorio /home/usuario) es escribible, para evitar eliminar archivos o directorios esenciales, así que o cambiamos los permisos de estos directorios (como ocurre en servicios de hosting, por ejemplo), o añadimos la directiva allow_writeable_chroot:

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

Seguridad TLS

En el caso de acceder con usuarios locales es importante usar conexiones cifradas. Para cifrar las conexiones se utiliza una clave RSA y un certificado, por lo que la configuración por defecto del servidor FTP vsFTPd hace referencia al certificado que incluye en Ubuntu 20.04 LTS el paquete ssl-cert. Sin embargo, este certificado normalmente está creado para el nombre de máquina, por lo que si accedemos con un dominio el cliente FTP podría mostrar una advertencia.

Por ejemplo, la máquina Ubuntu 20.04 LTS sobre la que desarrollamos este tutorial tiene el nombre de máquina ubuntu2004 y es accesible en el dominio ubuntu2004.local.lan, por lo que si estuviera activado el modo SSL y accediésemos con un cliente como Filezilla usando el dominio recibiríamos un aviso:

El cliente nos avisa de que hemos accedido al servicio FTP de la máquina ubuntu2004.local.lan, pero el certificado que proporciona el servidor está asociado al nombre ubuntu2004. La conexión es posible y totalmente funcional, aunque el aviso puede ser molesto o simplemente poco «profesional».

Como alternativa podemos instalar certificados firmados para el dominio con el que vayamos a conectar, o crear certificados autofirmados, por ejemplo con el comando openssl:

~$ sudo openssl req -x509 -newkey rsa:2048 -days 3650 -nodes -out /etc/ssl/certs/ubuntu2004.local.lan.crt -keyout /etc/ssl/private/ubuntu2004.local.lan.key

Nos aseguraremos de consignar en el campo «Common Name» el dominio al que queremos asociar el certificado (ubuntu2004.local.lan en este ejemplo):

...
Common Name (e.g. server FQDN or YOUR name) []:ubuntu2004.local.lan
...

Editamos vsftpd.conf y buscamos la sección de configuración SSL:

...
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
...

Cambiaremos el valor NO por YES y actualizaremos las rutas del certificado y la clave privada si no queremos usar los archivos por defecto:

...
rsa_cert_file=/etc/ssl/certs/ubuntu2004.local.lan.crt
rsa_private_key_file=/etc/ssl/private/ubuntu2004.local.lan.key
ssl_enable=YES
...

Guardados los cambios conviene reiniciar el servidor FTP:

~$ sudo systemctl restart vsftpd

Ahora, al establecer conexión cifrada observaremos que sí coincide el nombre común del certificado con el dominio que usamos para conectar:

Como detalle, el servidor FTP vsFTPd no cifra las conexiones anónimas, por lo que para algunos clientes habrá que especificar que se conecte con el protocolo estándar al acceder anónimamente.

Conclusión

Ahora que sabes cómo instalar el servidor FTP en Ubuntu 20.04 LTF Focal Fossa ya puedes crear un servicio de distribución de archivos tanto en red local como desde Internet, o posibilitar trabajar a los usuarios del sistema con sus archivos personales en red.

Si tienes preguntas, dudas, sugerencias de mejoras o actualizaciones del artículo, quieres notificar algún error, etc. puedes dejar un comentario.

¡Apoya comoinstalar.me!

¿Ya puedes transferir archivos gracias a esta guía de instalación y configuración del servidor FTP vsFTPd en Ubuntu 20.04 LTS Focal Fossa? En caso afirmativo, y si te apetece agradecérnoslo, puedes contribuir con el mantenimiento de este sitio y la creación de nuevos artículos dejando una propina de 1 $ en PayPal:

O, si te sientes especialmente agradecido, invitándome a un café:

¡Gracias!

Valora esta entrada

4.7/5 - (4 votos)

Deja un comentario