Tras la instalación de vsftpd en una instancia linux, el modo de conexión por defecto será FTP activo.
En una conexión FTP, la conexión de control siempre se realiza por el puerto 21 y en dirección cliente a servidor. La diferencia entre ambos modos, activo y pasivo, es básicamente el extremo que inicia la conexión de datos.
En el caso del FTP activo es el servidor quien inicia la conexión de datos y por lo tanto el cliente debe tener el puerto de datos abierto y a la escucha de conexiones. Esto puede ser un problema cuando estamos protegidos detrás de un firewall o cuando estamos en una red interna con NAT de direcciones.
Por el contrario, en modo pasivo es siempre el cliente quien inicia la conexión con el servidor, que previamente habrá asignado un puerto para dicha conexión de datos. Esto evita los problemas anteriores.
Como comentábamos, tras instalar vsftp, el modo de conexión por defecto es el modo activo, pero para activar el modo pasivo, podemos seguir unos sencillos pasos:
Apertura de puertos en Amazon EC2
En primer lugar tendremos que abrir un conjunto de puertos TCP. Nos sirve cualquier rango superior al puerto 1023, y serán los puertos disponibles para las conexiones de datos desde los clientes. Por ejemplo elegiremos los puertos del 1024 al 1048 y los abriremos en nuestro grupo de seguridad de Amazon EC2.
En segundo lugar necesitaremos configurar algunos parámetros en el archivo:
vim /etc/vsftpd/vsftpd.conf
Deberemos incluir o modificar las siguientes líneas:
anonymous_enable=NO pasv_enable=YES pasv_min_port=1024 pasv_max_port=1048 pasv_address=<IP de la instancia>
Si queremos restringir el acceso de los usuarios a su carpeta home, podemos añadir además:
chroot_local_user=YES
Una vez realizadas las modificaciones del archivo, solo nos queda reiniciar el servidor FTP:
/etc/init.d/vsftpd restart
Para sobrevivir a un reboot del servidor y que nuestro FTP siga funcionando, además podemos configurar el inicio automático del servicio con la siguiente línea:
chkconfig --level 345 vsftpd on
Hey! Qué opinas sobre el artículo?