Very Secure FTP Daemon (vsftpd) es un servidor FTP ligero para Linux. Este tema explica cómo instalar y configurar vsftpd en un Simple Application Server basado en Linux, y posteriormente verificar la conexión mediante FileZilla.
FTP transmite datos, incluidas las credenciales, en texto sin formato. Para cargas de trabajo de producción que requieren cifrado, considere usar SFTP o FTPS. Esta guía aborda vsftpd para casos de uso donde FTP es un requisito específico.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un Simple Application Server basado en Linux. Consulte Create a simple application server
Una contraseña configurada para el servidor. Consulte Set or reset the password of a server
FileZilla instalado en su computadora local. Descárguelo desde filezilla-project.org
Modos de conexión y autenticación FTP
FTP opera en dos modos de conexión:
Modo activo: El cliente envía la información de su puerto al servidor y este inicia la conexión de datos.
Modo pasivo: El servidor abre un puerto y envía dicha información al cliente, quien luego inicia la conexión. Esta guía configura el modo pasivo, ya que funciona mejor a través de firewalls y NAT.
FTP admite tres modos de autenticación:
|
Modo |
Seguridad |
Descripción |
|
Modo de usuario anónimo |
Más baja |
No requiere nombre de usuario ni contraseña. Adecuado solo para transferencias públicas de archivos. Evítelo en producción. |
|
Modo de usuario local |
Media |
Autentica contra usuarios locales de Linux. Se cubre en esta guía. |
|
Modo de usuario virtual |
Más alta |
Utiliza usuarios virtuales aislados del sistema. Requiere una configuración profesional. |
Esta guía cubre el modo de usuario local (recomendado) y el modo de usuario anónimo.
Paso 1: Instalar vsftpd
-
Compruebe si vsftpd ya está instalado. Algunos servidores desplegados con imágenes de aplicación incluyen vsftpd preinstalado; reinstalarlo podría causar conflictos.
vsftpd -vSi la salida muestra un número de versión, vsftpd ya está instalado:
vsftpd: version 3.0.2Si vsftpd ya está instalado, obtenga las credenciales de FTP de la documentación de su imagen de aplicación y continúe directamente en Paso 3: Abrir puertos del firewall.
-
Instale vsftpd. Este ejemplo utiliza CentOS 7. Para otras distribuciones, consulte Build an FTP site on an ECS instance.
sudo yum install -y vsftpdUn mensaje de éxito confirma la instalación.
-
Habilite el inicio automático de vsftpd durante el arranque:
sudo systemctl enable vsftpd.service -
Inicie vsftpd:
sudo systemctl start vsftpd.serviceNotaSi el servicio no se inicia y aparece el error
Job for vsftpd.service failed because the control process exited with error code, es posible que el puerto 21 ya esté en uso. Ejecutelsof -i:21para identificar el proceso y luego ejecutekill -9 <PID>para finalizarlo antes de reiniciar vsftpd. -
Verifique que vsftpd se esté ejecutando:
sudo netstat -antup | grep ftpSi el puerto del servicio FTP aparece en la salida, vsftpd se está ejecutando correctamente.
Paso 2: Configurar el modo de acceso
Elija uno de los siguientes modos. Se recomienda el modo de usuario local para mayor seguridad.
Modo de usuario local (recomendado)
-
Cree un usuario de Linux dedicado para el acceso FTP. Este ejemplo utiliza
ftptest.sudo adduser ftptest -
Establezca una contraseña para el usuario:
sudo passwd ftptestSiga las instrucciones para introducir y confirmar la contraseña.
-
Cree el directorio FTP:
sudo mkdir /var/ftp/test -
Asigne la propiedad del directorio a
ftptest:sudo chown -R ftptest:ftptest /var/ftp/test -
Realice una copia de seguridad del archivo de configuración de vsftpd antes de editarlo:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak -
Abra el archivo de configuración para editarlo:
NotaSi instaló vsftpd con
apt install vsftpd, el archivo de configuración se encuentra en/etc/vsftpd.conf.sudo vim /etc/vsftpd/vsftpd.confPresione
ipara entrar al modo de edición. -
Actualice los siguientes parámetros. Asegúrese de que ninguna de estas líneas esté comentada con
#y evite espacios al final de línea, ya que provocan errores al reiniciar vsftpd./etc/vsftpd/vsftpd.conf# Disable anonymous login anonymous_enable=NO # Allow local users to log in local_enable=YES # Listen on IPv4 listen=YESComente el listener IPv6 agregando
#al inicio de la línea:#listen_ipv6=YES -
Agregue los siguientes parámetros al final del archivo. Reemplace
39.105.xx.xxcon la dirección IP pública de su servidor./etc/vsftpd/vsftpd.conf# Set the home directory for local users after login local_root=/var/ftp/test # Restrict users to their home directory chroot_local_user=YES # Enable a list of users exempt from the chroot restriction chroot_list_enable=YES # Path to the exemption list file chroot_list_file=/etc/vsftpd/chroot_list # Enable passive mode pasv_enable=YES allow_writeable_chroot=YES # Public IP address of the server pasv_address=39.105.xx.xx # Passive mode port range (high-numbered ports reduce exposure) pasv_min_port=50000 pasv_max_port=50010Presione
Esc, escriba:wqy presioneEnterpara guardar y cerrar. -
Cree el archivo de lista de excepciones chroot. Los usuarios incluidos aquí no estarán restringidos al directorio principal. El archivo es obligatorio incluso si está vacío.
sudo vim /etc/vsftpd/chroot_listPresione
ipara entrar al modo de edición. Agregue los nombres de usuario exentos, uno por línea (deje el archivo en blanco si no se requieren excepciones). PresioneEsc, escriba:wqy presioneEnterpara guardar y cerrar. -
Detenga el firewall del sistema. vsftpd gestiona el acceso a puertos mediante el firewall de Simple Application Server configurado en el Paso 3.
sudo systemctl stop firewalld -
Habilite la autenticación por contraseña en la configuración SSH:
sudo vi /etc/ssh/sshd_configBusque
PasswordAuthenticational final del archivo y establézcalo enyes. PresioneEsc, escriba:wq!y presioneEnterpara guardar y cerrar. -
Reinicie vsftpd para aplicar todos los cambios:
sudo systemctl restart vsftpd.service
Modo de usuario anónimo
El modo anónimo permite que cualquier persona se conecte sin contraseña. Úselo únicamente para transferencias públicas de archivos en entornos que no sean de producción.
-
Abra el archivo de configuración de vsftpd:
NotaSi instaló vsftpd con
apt install vsftpd, el archivo de configuración se encuentra en/etc/vsftpd.conf.sudo vim /etc/vsftpd/vsftpd.confPresione
ipara entrar al modo de edición. -
Configure los siguientes parámetros. Los valores predeterminados varían según la distribución de Linux; compruebe que ambos valores sean
YESdespués de editar. Asegúrese de que ninguna de estas líneas esté comentada con#y evite espacios al final de línea./etc/vsftpd/vsftpd.confanonymous_enable=YES anon_upload_enable=YES listen=YES listen_ipv6=NO -
Agregue los siguientes parámetros al final del archivo. Reemplace
39.105.xx.xxcon la dirección IP pública de su servidor./etc/vsftpd/vsftpd.conf# Enable passive mode pasv_enable=YES # Passive mode port range pasv_min_port=50000 pasv_max_port=50010 # Public IP address of the server pasv_address=39.105.xx.xxPresione
Esc, escriba:wqy presioneEnterpara guardar y cerrar. -
Otorgue permisos de escritura en el directorio FTP predeterminado (
/var/ftp/pub):sudo chmod o+w /var/ftp/pub/ -
Reinicie vsftpd:
sudo systemctl restart vsftpd.service
Paso 3: Abrir puertos del firewall
Agregue reglas de entrada en el firewall de Simple Application Server para permitir el tráfico FTP. El modo pasivo requiere el puerto 21 y el rango de puertos pasivos. Consulte Manage a firewall para obtener instrucciones.
|
Tipo de aplicación |
Protocolo |
Rango de puertos |
|
FTP |
TCP |
21 |
|
Personalizado |
TCP |
|
Después de agregar las reglas, estas aparecen en la página Firewall:

Paso 4: Verificar la conexión FTP
Utilice FileZilla para confirmar que el servidor FTP es accesible.
Este ejemplo utiliza FileZilla 3.64.0. La interfaz puede variar en otras versiones.
Abra FileZilla.
Vaya a File > Site Manager.
Haga clic en New site (N) en la esquina inferior izquierda del cuadro de diálogo Site Manager.
-
Introduzca un nombre para el nuevo sitio y configure la conexión:

Parámetro
Valor
Name
Un nombre personalizado para el sitio. Ejemplo:
test-01.Protocol
FTP
Host
Dirección IP pública del servidor (ejemplo:
121.43.XX.XX)Port
21
Logon type
Anonymous (para modo anónimo) o Normal (para modo de usuario local)
Para el modo de usuario local, establezca Logon type en Normal e introduzca el nombre de usuario y la contraseña de FTP.
Haga clic en Connect.
Una vez conectado, utilice FileZilla para cargar, descargar o eliminar archivos. La interfaz se divide en cuatro secciones:

|
Sección |
Descripción |
|
① |
Estado de la conexión, comandos y resultados de tareas |
|
② |
Computadora local: listado de directorios y archivos |
|
③ |
Servidor remoto: listado del directorio FTP. En modo anónimo, el directorio predeterminado es |
|
④ |
Cola de transferencia y registros de tareas |
Referencia de configuración de vsftpd
El directorio /etc/vsftpd contiene tres archivos clave:
/etc/vsftpd/vsftpd.conf: el archivo de configuración principal/etc/vsftpd/ftpusers: los usuarios en este archivo tienen denegado el acceso FTP (lista de bloqueados)/etc/vsftpd/user_list: los usuarios en este archivo tienen permitido el acceso FTP (lista de permitidos)
Parámetros de control de inicio de sesión
|
Parámetro |
Descripción |
|
|
Acepta usuarios anónimos |
|
|
Omite la solicitud de contraseña para usuarios anónimos |
|
|
Directorio principal para usuarios anónimos |
|
|
Acepta usuarios locales |
|
|
Directorio principal para usuarios locales |
Parámetros de permisos
|
Parámetro |
Descripción |
|
|
Permite que todos los usuarios carguen archivos |
|
|
Máscara de permisos de archivo para cargas de usuarios locales |
|
|
Aplica umask a los permisos de archivos cargados |
|
|
Permite que usuarios anónimos carguen archivos |
|
|
Permite que usuarios anónimos creen directorios |
|
|
Permite que usuarios anónimos modifiquen o eliminen archivos |
|
|
Propietario asignado a archivos cargados por usuarios anónimos |