
Espero que alguien pueda indicarme la dirección correcta aquí, por favor.
Ejecutando proftpd (con soporte tls) en una IP pública.
El cliente FTP se conecta, pero no puede realizar una lista del directorio. Cuando cambio la política "ENTRADA" en iptables a ACEPTAR, funciona.
Las siguientes son mis reglas relevantes de iptables:
$IPTABLES -A INPUT -i eno1 -s 0/0 -d x.x.x.x -p tcp --sport 1024:65535 -m multiport --dports 20,21,989,990 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d x.x.x.x --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
Tengo habilitados los módulos de conexión_seguimiento.
server ~ # lsmod | grep nf_conntra
nf_conntrack_ftp 24576 3
nf_conntrack 176128 8 xt_conntrack,nf_nat,xt_state,xt_nat,xt_helper,nf_conntrack_ftp,xt_CT,xt_MASQUERADE
nf_defrag_ipv6 24576 1 nf_conntrack
nf_defrag_ipv4 16384 1 nf_conntrack
libcrc32c 16384 2 nf_conntrack,nf_nat
También tengo habilitado nf_conntrack_helper en /proc
server ~ # cat /proc/sys/net/netfilter/nf_conntrack_helper
1
Respuesta1
proftpd (con soporte tls)
Ese soporte TLS es probablemente el culpable.
Normalmente, en un firewall inteligente, cuando permite FTP, necesita abrir el puerto para la conexión de control, TCP 21 y luego, en el protocolo FTP de texto claro, los módulos de conntrack pueden escanear y detectar la PORT
respuesta. Un módulo auxiliar de conexión FTP abrirá automáticamente el número de puerto que asigna el servidor FTP a ese cliente específico, según lo relacionado, lo que permitirá un control de acceso granular.
Cuando la conexión está cifrada con TLS, el firewall ya no puede detectar la respuesta del PUERTO y, por lo tanto, no abre automáticamente el puerto asignado. La solución para eso es:
corrija el rango de puertos que el servidor FTP usará para conexiones pasivas a un rango pequeño
PassivePorts min-pasv-port max-pasv-port
en su firewall abra tanto el puerto 21 como ese rango fijo de puertos para conexiones de datos