vsftpd
Cada vez que instalo centos
, solo configuro el entorno de cárcel para los usuarios y el resto es la configuración predeterminada vsftpd
. Creo un usuario e intento conectarme con filezila
el cliente ftp, pero no pude conectarme en modo pasivo. Siempre cambio al transfer settings
modo activo para conectarme exitosamente, ftp server
de lo contrario obtengo
Error: Failed to retrieve directory listing
Entonces, ¿hay alguna manera de cambiar alguna directiva en vsftp.conf
el archivo y podemos conectarnos con el modo pasivo al servidor?
Respuesta1
Para configurar el modo pasivo para vsftpd, necesita configurar algunos parámetros en vsftpd.conf.
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
Esto habilita el modo pasivo y lo restringe al uso de los once puertos para conexiones de datos. Esto es útil ya que necesita abrir estos puertos en su firewall.
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
Si después de probar todo esto funciona, guarde el estado de su firewall con
service iptables save
que actualizará el /etc/sysconfig/iptables
archivo.
Para hacer esto en CentOS 7, debes usar el nuevo firewalld, no iptables:
Encuentra tu zona:
# firewall-cmd --get-active-zones
public
interfaces: eth0
Mi zona es 'pública', así que la configuro como pública, agrego el rango de puertos y luego recargamos:
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload
¿Qué sucede cuando haces una conexión?
Su cliente establece una conexión con el servidor vsftpd en el puerto 21.
El servidor responde al cliente diciéndole a qué puerto conectarse dentro del rango especificado anteriormente.
El cliente realiza una conexión de datos en el puerto especificado y la sesión continúa.
Hay una gran explicación de los diferentes ftp.modosaquí.
Respuesta2
Para habilitar el modo pasivo, establezca las siguientes opciones de configuración en su vsftp.conf:
pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx
Por supuesto, puede cambiar el puerto de inicio y fin, y debe reemplazar los xxx con la IP pública de su servidor.
Además, debes abrir el rango de puertos del modo pasivo en tu firewall. En centos, puede cargar el ip_conntrack_ftp
módulo para manejar conexiones ftp en su firewall. Edite /etc/sysconfig/iptables-config
y agregue ip_conntrack_ftp a la opción IPTABLES_MODULES. Luego reinicie iptables:
/sbin/service iptables restart
Respuesta3
Al lado de pasv_enable=YES
, especifique un rango de puertos en el que VSFTP ejecutará el modo PASV:
pasv_min_port=50000
pasv_max_port=50999
pasv_enable=YES
No olvide configurar iptables para permitir la transmisión de paquetes en estos puertos:
iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
Respuesta4
Por lo general, no es el servidor ftp, vsftpd, sino el firewall como iptable el que impide que se utilice el modo pasivo (bloqueando la conexión tcp necesaria para la transferencia de datos).