¿Cómo instalar y configurar vsftpd en Ubuntu 12.04?

Actualizado el 21 de septiembre, 2016. Por BlueHosting.

vsftpd o demonio FTP muy seguro (por sus siglas en inglés: very secure FTP daemon), es un servidor FTP para sistemas basados en Unix, incluido Linux. El programa fue creado para tener una protección muy robusta contra las posibles vulnerabilidades de FTP y soporta IPv6 y SSL.

FTP es inherentemente inseguro. Si usted debe usar FTP, considere el uso de FTP sobre SSL/TLS. De otro modo, lo mejor es usar SFTP, una alternativa seguro de FTP.

Esta guía está escrita para un usuario no root. Los comandos que requieren privilegios elevados están precedidos por sudo. Si usted inició sesión como usuario root obvie el uso del prefijo sudo.

Primer paso: Instalar vsftpd

Puede instalar vsftpd rápidamente en su servidor virtual privado ejecutando el siguiente comando en su shell o terminal:

sudo apt-get install vsftpd

Una vez que el archivo termine de descargarse, tendrá VSFTP en su servidor. De forma general, vsftpd estará ya configurado con una cantidad razonable de seguridad. Sin embargo, provee acceso a usuarios anónimos en su VPS.

Segundo paso: Configurar vsftpd

Una vez que vsftpd está instalado, puede ajustar la configuración.

Abra el archivo de configuración:

sudo nano /etc/vsftpd.conf

La modificación más relevante que debe hacer es cambiar el parámetro Anonymous_enable de YES a NO:

anonymous_enable=NO

Antes de este cambio, vsftpd permitía que usuarios anónimos y no identificados accedieran a los archivos en su servidor. Esto es útil si usted está buscando distribuir su información ampliamente, pero se considera un riesgo serio de seguridad en la mayoría de los casos.

Después de eso, quite el comentario en la línea de la opción local_enablecambiando el valor a YES. Adicionalmente, permita que el usuario puede escribir en el directorio quitando el comentario (almohadilla o numeral #) de la opcion write_enable y dejándolo con el valor YES:

local_enable=YES
write_enable=YES

Termine quitando el comentario en el parámetro chroot_local_user. Cuando esta línea se cambia a Yes, todos los usuarios locales serán encerrados dentro de su propio chroot y se negará el acceso a cualquier otra parte del servidor.

chroot_local_user=YES

Guarde y salga del archivo.

Debido a una actualización reciente de vsftpd, este programa está "rechazando la ejecución con root escribible dentro del chroot". Una forma práctica de abordar este problema es siguiendo los próximos pasos:

  1. Cree un nuevo directorio dentro del directorio home del usuario:

    mkdir /home/usuario/files
    

    Recuerde remplazar usuario por el nombre de usuario real.

  2. Cambie el propietario del archivo a root:

    chown root:root /home/usuario
    
  3. Haga todos los cambios necesarios dentro del subdirectorio files.

Finalmente, reinicie el servicio vsftpd:

sudo service vsftpd restart

Tercer paso: Acceder al servidor FTP

Una vez que haya instalado y configurado el servidor a su gusto, puede acceder a éste.

Puede llegar a su servidor FTP desde su navegador ingresando ftp:// seguido del nombre de dominio (o dirección IP) en su barra de direcciones e iniciando sesión con las credenciales apropiadas. Tenga en mente que solo será capaz de acceder al directorio home del usuario.

ftp://ejemplo.com

Otra alternativa es llegar al servidor FTP en la línea de comandos de su servidor virtual escribiendo:

ftp ejemplo.com

Cuando termine, simplemente utilice el comando exit de FTP para salir del shell FTP.

A continuación un ejemplo de la interfaz mostrada en el navegador:

Anexo 1 vsftpd Navegador

Cuarto paso: Solución de problemas - Apertura de puertos FTP y otras consideraciones

Si no puede acceder a su servidor a través de FTP puede que tenga reglas configuradas en su firewall que impiden el acceso.

Para que el servidor pueda transferir datos necesita un canal. El puerto 21 sirve para el establecimiento y control de la conexión FTP. El puerto 20 es el encargado propiamente de la transferencia de datos. Para habilitar la transferencia de datos en su herramienta favorita (software de su preferencia, línea de comandos o navegador), debe abrir dichos puertos y cargar un par de módulos para que las conexiones FTP no sean rechazadas. Siga los siguientes pasos sugeridos.

Cargue los siguientes módulos:

modprobe ip_nat_ftp
modprobe ip_conntrack_ftp

De forma muy general, el primer módulo modifica los paquetes para los computadores detrás de un firewall que ejecuta NAT y el segundo módulo permite que el firewall identifique los paquetes relacionados con ftp.

El siguiente paso es habilitar las conexiones entrantes y salientes en el puerto 21:

iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED,NEW -j ACCEPT -m comment --comment "Permitir conexiones ftp en el puerto 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Permitir conexiones ftp en el puerto 21"

Luego permita las conexiones entrantes y salientes en el puerto 20:

iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Permitir conexiones ftp en el puerto 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Permitir conexiones ftp en el puerto 20"

Finalmente permita el tráfico de entrada pasiva FTP

iptables -A INPUT  -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Permitir conexiones entrantes pasivas"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Permitir conexiones entrantes pasivas"

Los pasos anteriores son sugerencias generales, sin embargo, hay otras maneras de lograr el mismo objetivo. Lo exhortamos a investigar acerca de la configuración de reglas de firewall a través de iptables.

Recursos adicionales

Puede consultar los siguientes recursos en busca de información adicional con respecto a este tema. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos dar fe de la actualidad o precisión de los contenidos externos.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...