
Espero que alguém possa me indicar a direção certa aqui, por favor.
Executando proftpd (com suporte tls) em um IP público.
O cliente FTP se conecta, mas não consegue fazer uma listagem de diretórios. Quando altero a política "INPUT" no iptables para ACCEPT, ela funciona.
A seguir estão minhas regras relevantes do 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
Eu tenho os módulos connection_tracking habilitados.
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
Eu também tenho nf_conntrack_helper habilitado em/proc
server ~ # cat /proc/sys/net/netfilter/nf_conntrack_helper
1
Responder1
proftpd (com suporte tls)
Esse suporte TLS é provavelmente o culpado.
Normalmente em um firewall inteligente quando você permite o FTP você precisa abrir a porta para a conexão de controle, TCP 21 e então, no protocolo FTP de texto não criptografado, os módulos conntrack podem procurar e detectar a PORT
resposta. Um módulo auxiliar FTP conntrack abrirá automaticamente o número da porta que é atribuído pelo servidor FTP a esse cliente específico, conforme relacionado, permitindo sair do controle de acesso granular.
Quando a conexão é criptografada com TLS, o firewall não consegue mais detectar a resposta PORT e, portanto, não abre automaticamente a porta atribuída. A solução para isso é:
corrigir o intervalo de portas que o servidor FTP usará para conexões passivas em um pequeno intervalo
PassivePorts min-pasv-port max-pasv-port
no seu firewall abra a porta 21 e aquele intervalo fixo de portas para conexões de dados