FTP, o File Transfer Protocol, es un protocolo estándar para enviar y recibir archivos desde servidores remotos. Es más fácil de usar que las alternativas de línea de comando como scp
, especialmente con interfaces GUI como FileZilla.
¿Qué es FTP?
En los viejos tiempos de Internet, los servidores FTP públicos eran una forma muy común de hacer que los archivos estuvieran disponibles para un gran número de personas. Hoy en día, FTP todavía existe y se usa ampliamente para tareas administrativas.
Si bien alguna forma de CLI de FTP se envía con la mayoría de los sistemas operativos principales, a los clientes de GUI les gusta FileZilla Haga que el proceso de mover archivos entre servidores sea tan simple como arrastrar y soltar desde el almacenamiento local al almacenamiento remoto, o viceversa. Todo el tráfico subyacente se gestiona mediante FTP.
Configurar esto requiere que instale y configure un servidor FTP, como vsftpd
, en la máquina remota a la que desea acceder.
Cabe señalar que los usuarios que inicien sesión a través de FTP tendrán acceso a su sistema, al igual que usted. Hay pasos que puede tomar para mitigar estos riesgos, como incluir el acceso en listas blancas y bloquear a los usuarios en sus directorios de inicio.
Instalación de vsftpd
Para comenzar, instale vsftpd
desde el administrador de paquetes de su distribución. Para sistemas basados en Debian como Ubuntu, eso sería de apt
:
sudo apt-get install vsftpd
A continuación, deberá iniciar el servicio y configurarlo para que se ejecute en el momento del arranque:
systemctl start vsftpd
systemctl enable vsftpd
FTP tiene dos métodos principales de autenticación:
- FTP anónimo, donde cualquiera puede iniciar sesión sin contraseña. Se utiliza para compartir archivos públicos y está deshabilitado de forma predeterminada.
- Inicio de sesión de usuario local, que permite a cualquier usuario
/etc/passwd
para acceder a FTP utilizando un nombre de usuario y una contraseña.
Probablemente desee habilitar el inicio de sesión de usuario local y mantener el acceso anónimo deshabilitado. Iniciar sesión en FTP con su cuenta de usuario le dará acceso a cualquier cosa a la que pueda acceder su cuenta.
Abrir /etc/vsftpd.conf
en su editor de texto favorito y cambie la siguiente línea a YES
:
local_enable=YES
Si desea poder cargar archivos, cambie write_enable
para YES
así como:
write_enable=YES
Con un reinicio de vsftpd
(systemctl restart vsftpd
), ahora debería poder iniciar sesión en FTP utilizando un cliente como FileZilla, o la CLI en su máquina personal.
Si solo desea habilitar FTP para usuarios específicos, puede incluir el acceso en la lista blanca. Abrir /etc/vsftpd.userlist
y agregue los nombres de cada cuenta que desee habilitar en líneas separadas.
nano /etc/vsftpd.userlist
Luego, agregue las siguientes líneas a /etc/vsftpd.conf
:
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
Esto restringirá el acceso solo a los usuarios definidos en el archivo de lista de usuarios y negará a todos los demás.
Si no desea que los usuarios accedan a archivos fuera de su directorio de inicio, puede colocarlos en una cárcel chroot, lo que evitará que interactúen con directorios de nivel superior. Puede habilitar esto descomentando la siguiente línea en /etc/vsftpd.conf
:
chroot_local_user=YES
Reiniciar vsftpd
con systemctl restart vsftpd
para aplicar los cambios.
Configuración de FTPS
El tráfico FTP estándar se envía sin cifrar como HTTP. Obviamente, esto no es genial, por lo que debe configurar vsftpd
para cifrar el tráfico con TLS.
Para hacerlo, genere una nueva clave y firme una solicitud con openssl
:
openssl genrsa -des3 -out FTP.key
openssl req -new -key FTP.key -out certificate.csr
vsftpd
necesita que se elimine la contraseña de esta clave, así que copie la clave y devuélvala a openssl
:
cp FTP.key FTP.key.orig openssl rsa -in FTP.key.orig -out ftp.key
Finalmente, genere un certificado TLS usando esta clave:
openssl x509 -req -days 365 -in certificate.csr -signkey ftp.key -out mycertificate.crt
Copie la clave y el certificado en /etc/pki/tls/certs/
:
cp ftp.key /etc/pki/tls/certs/ cp mycertificate.crt /etc/pki/tls/certs
Ahora que todos los certificados están configurados, puede volver a abrir /etc/vsftpd.conf
y agregue las siguientes líneas:
ssl_enable=YES allow_anon_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO rsa_cert_file=/etc/pki/tls/certs/mycertificate.crt rsa_private_key_file=/etc/pki/tls/certs/ftp.key ssl_ciphers=HIGH require_ssl_reuse=NO
Reiniciar vsftpd
con systemctl restart vsftpd
para aplicar los cambios.