Introducción
Este artículo describe cómo instalar y configurar un servidor FTP en Ubuntu 20.04 LTS Focal Fossa que usa para compartir archivos entre sus dispositivos.
FTP (Protocolo de transferencia de archivos) es un protocolo de red estándar que se utiliza para transferir archivos desde y hacia una red remota. Hay varios servidores FTP de código abierto disponibles para Linux. Los más conocidos y ampliamente utilizados son PureFTPd , ProFTPD y vsftpd . Instalaremos vsftpd (Very Secure Ftp Daemon), un servidor FTP estable, seguro y rápido. También le mostraremos cómo configurar el servidor para restringir a los usuarios a su directorio de inicio y cifrar toda la transmisión con SSL / TLS.
Aunque FTP es un protocolo muy popular, para transferencias de datos más seguras y rápidas, debe usar SCP o SFTP.
Instale vsftpd en Ubuntu 20.04
El paquete vsftpd está disponible en los repositorios de Ubuntu. Para instalarlo, ejecute los siguientes comandos:
sudo apt update
sudo apt install vsftpd
El servicio ftp se iniciará automáticamente una vez que se complete el proceso de instalación. Para comprobar esto, imprima el estado del servicio:
sudo systemctl status vsftpd
El resultado debe mostrar que el servicio vsftpd está en funcionamiento:
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-03-08 20:07:47 CET; 19s ago
Main PID: 182697 (vsftpd)
Tasks: 1 (limit: 2286)
Memory: 588.0K
CGroup: /system.slice/vsftpd.service
└─182697 /usr/sbin/vsftpd /etc/vsftpd.conf
Mar 08 20:07:47 TEST-SERVER-1 systemd[1]: Starting vsftpd FTP server...
Mar 08 20:07:47 TEST-SERVER-1 systemd[1]: Started vsftpd FTP server.
Configurar vsftpd
La configuración del servidor vsftpd se almacena en el archivo /etc/vsftpd.conf
.
La mayoría de las configuraciones del servidor están bien documentadas dentro del archivo. Para conocer todas las opciones disponibles, visite la página de documentación de vsftpd .
En las siguientes secciones, revisaremos algunas configuraciones importantes necesarias para configurar una instalación segura de vsftpd.
Comience abriendo el archivo de configuración vsftpd:
sudo nano /etc/vsftpd.conf
1. Acceso FTP
Permitiremos el acceso al servidor FTP solo para usuarios locales. Busque las directivas anonymous_enable
y local_enable
compruebe la correspondencia de configuración de las líneas siguientes:
2. Habilita las cargas
Busque y elimine el comentario de la directiva write_enable
para permitir cambios en el sistema de archivos, como cargar y eliminar archivos:
3. Cárcel de Chroot
Para evitar que los usuarios de FTP local accedan a archivos fuera de sus directorios de inicio, descomente la línea que comienza con chroot_local_user
:
De forma predeterminada, por razones de seguridad, cuando chroot está habilitado, vsftpd se negará a cargar archivos si el directorio donde los usuarios están bloqueados es modificable.
Utilice una de las soluciones a continuación para permitir cargas cuando chroot está habilitado:
Método 1. - La opción recomendada es mantener chroot habilitado y configurar directorios FTP. En este ejemplo, crearemos un directorio ftp
dentro de la casa del usuario, que servirá como chroot y un directorio uploads
grabable para cargar archivos:
Método 2. - Otra opción es habilitar la directiva allow_writeable_chroot
:
Utilice esta opción solo si necesita otorgar al usuario acceso de escritura a su directorio de inicio.
4. Conexiones FTP pasivas
De forma predeterminada, vsftpd usa el modo activo. Para usar el modo pasivo, configure el rango de puertos mínimo y máximo:
Se puede utilizar cualquier puerto para conexiones FTP pasivas. Cuando el modo pasivo está habilitado, el cliente FTP abre una conexión al servidor en un puerto aleatorio en el rango que ha elegido.
5. Restricción del acceso de los usuarios
Puede configurar vsftpd para permitir el acceso solo a ciertos usuarios. Para hacer esto, agregue las siguientes líneas al final del archivo:
Cuando esta opción está habilitada, debe especificar explícitamente qué usuarios pueden iniciar sesión agregando nombres de usuario al archivo /etc/vsftpd.user_list
(un usuario por línea).
6. Transmisiones seguras con SSL / TLS
Para cifrar las transmisiones FTP con SSL / TLS, debe tener un certificado SSL y configurar el servidor FTP para usarlo.
Puede utilizar un certificado SSL existente firmado por una autoridad certificadora de confianza o crear un certificado autofirmado.
Si tiene un dominio o subdominio que apunta a la dirección IP del servidor FTP, puede generar rápidamente un certificado SSL Let's Encrypt gratuito .
Generaremos una clave privada de 2048 bits y un certificado SSL autofirmado que tendrá una vigencia de diez años:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Tanto la clave privada como el certificado se guardarán en el mismo archivo.
Una vez que se crea el certificado SSL, abra el archivo de configuración vsftpd:
sudo nano /etc/vsftpd.conf
Busque las directivas rsa_cert_file
y rsa_private_key_file
cambie sus valores en la ruta del archivo pam
y establezca la directiva ssl_enable
en YES
:
A menos que se especifique lo contrario, el servidor FTP solo utilizará TLS para realizar conexiones seguras.
Reinicie el servicio vsftpd
Una vez que haya terminado de editar, el archivo de configuración de vsftpd (excluidos los comentarios) debería verse así:
Guarde el archivo y reinicie el servicio vsftpd para que los cambios surtan efecto:
sudo systemctl restart vsftpd
Abre el cortafuegos
Si está utilizando un cortafuegos UFW , deberá permitir el tráfico FTP.
Para abrir el puerto 21
( puerto de comando FTP), el puerto 20
( puerto de datos FTP) y 30000-31000
(rango de puerto pasivo), ejecute los siguientes comandos:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
Para evitar ser bloqueado, asegúrese de que la puerta 22
esté abierta:
sudo ufw allow OpenSSH
Vuelva a cargar las reglas de UFW deshabilitando y volviendo a habilitar UFW:
sudo ufw disable
sudo ufw enable
Para verificar los cambios, ejecute:
sudo ufw status
Status: active
To Action From
-- ------ ----
20:21/tcp ALLOW Anywhere
30000:31000/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
20:21/tcp (v6) ALLOW Anywhere (v6)
30000:31000/tcp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Crea un usuario de FTP
Para probar el servidor FTP, crearemos un nuevo usuario.
- Si el usuario al que desea otorgar acceso FTP ya existe, omita el primer paso.
- Si lo establece
allow_writeable_chroot=YES
en el archivo de configuración, omita el tercer paso.
Cree un nuevo usuario llamado newftpuser
:
sudo adduser newftpuser
Agregue el usuario a la lista de usuarios FTP permitidos:
echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
Cree la estructura del directorio FTP y establezca los permisos correctos:
sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550 /home/newftpuser/ftp
sudo chmod 750 /home/newftpuser/ftp/upload
sudo chown -R newftpuser: /home/newftpuser/ftp
Como se discutió en la sección anterior, el usuario podrá subir sus archivos al directorio ftp/upload
.
En este punto, su servidor FTP es completamente funcional. Debería poder conectarse al servidor mediante cualquier cliente FTP que pueda configurarse para usar el cifrado TLS, como FileZilla .
Deshabilitar el acceso al shell
De forma predeterminada, al crear un usuario, a menos que se especifique explícitamente, el usuario tendrá acceso SSH al servidor. Para deshabilitar el acceso de shell, cree un nuevo shell que imprimirá un mensaje informando al usuario que su cuenta está limitada solo al acceso FTP.
Ejecute los siguientes comandos para crear el archivo /bin/ftponly
y hacerlo ejecutable:
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Agregue el nuevo shell a la lista de shells válidos en el archivo /etc/shells
:
echo "/bin/ftponly" | sudo tee -a /etc/shells
Cambie el shell de usuario a /bin/ftponly
:
sudo usermod newftpuser -s /bin/ftponly
Puede usar el mismo comando para cambiar el shell de todos los usuarios a los que desea otorgar acceso FTP únicamente.
Conclusión
Le mostramos cómo instalar y configurar un servidor FTP seguro y rápido en su sistema Ubuntu 20.04 LTS Focal Fossa.