Configurando o iptables do Linux para conexões no modo FTP PASV

2

Tenho feito inúmeras pesquisas e aprendi um pouco a cada vez, mas não encontrei a solução para o meu problema.

Eu tenho a configuração do vsftpd, usando o SSL / TLS. Eu a pus em funcionamento conforme necessário, mas não consigo aplicar as regras de iptable abaixo. Principalmente o modo PASV não funciona. Com iptables -F , tudo funciona conforme o esperado. Assim que eu aplico as regras abaixo, ele se conecta, mas o cliente (CuteFTP) tenta entrar no modo PASV e expira.

minhas regras de tabelas ip são as seguintes:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# ssh
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

# web
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

# ssl
#-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

# subversion
-A INPUT -p tcp -m tcp --dport 3690 -j ACCEPT

# ftp + active ftp + pasv ftp
-A INPUT -p tcp --dport 21 -m state --state ESTABLISHED,NEW -j ACCEPT
-A INPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p tcp --dport 50000:60000 -m state --state RELATED,ESTABLISHED -j ACCEPT

# mysql
-A INPUT -p tcp -m tcp --dport 3306 -s 67.181.185.126 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -s 98.224.120.34 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -s 174.143.169.230 -j ACCEPT

# ping
-A INPUT -p icmp -j ACCEPT


-A INPUT -i lo -j ACCEPT
-A INPUT -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
COMMIT

Eu os carrego usando (para fins de teste):

iptables-restore < /etc/iptables.test.rules

Para referência, estou executando o Ubuntu 10.04 LTS, além disso, aqui estão algumas saídas que recebo com os seguintes comandos:

lsmod

Module                  Size  Used by
xt_conntrack            2303  1
xt_helper               1155  0
nf_nat_ftp              1751  0
nf_nat                 12653  1 nf_nat_ftp
ipv6                  220702  16
xt_state                1215  4
nf_conntrack_ftp        5108  1 nf_nat_ftp
nf_conntrack_ipv4       9505  7 nf_nat
nf_conntrack           43972  7 xt_conntrack,xt_helper,nf_nat_ftp,nf_nat,xt_state,nf_conntrack_ftp,nf_conntrack_ipv4
iptable_filter          2218  1
ip_tables              13794  1 iptable_filter
nf_defrag_ipv4          1051  1 nf_conntrack_ipv4
dm_mirror              11338  0
dm_region_hash          6224  1 dm_mirror
dm_log                  7341  2 dm_mirror,dm_region_hash
dm_snapshot            23956  0
dm_mod                 50258  3 dm_mirror,dm_log,dm_snapshot

locate _ftp

/lib/modules/2.6.33.5-rscloud/kernel/net/ipv4/netfilter/nf_nat_ftp.ko
/lib/modules/2.6.33.5-rscloud/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.33.5-rscloud/kernel/net/netfilter/nf_conntrack_ftp.ko
/lib/security/pam_ftp.so
/usr/share/man/man8/pam_ftp.8.gz

Além disso, minhas portas passivas vsftpd.conf são definidas da seguinte maneira:

pasv_min_port=50000
pasv_max_port=60000

Eu também tentei carregar o módulo com modprobe ip_conntrack_ftp , mas parece que não funciona. Através da saída acima, parece que o módulo não está nem no sistema ou é substituído por nf_conntrack_ftp ... nf_ modules ...

EDIÇÃO FINAL

Então, acho que encontrei minha resposta: link

Because the ftp helper modules must read and modify commands being sent over the command channel, they won't work when the command channel is encrypted through use of TLS/SSL.

Além disso, outro fato interessante que estava causando alguma confusão foi porque eu tinha nf_conntrack vs ip_conntrack .

If you are running kernel 2.6.19 or earlier, then the module names are ip_nat_ftp and ip_conntrack_ftp

teste com uname -r (obtém a versão do kernel)

Eu testei o acima desabilitando o TLS / SSL e o PASV funciona muito bem com RELATED,ESTABLISHED . No entanto, a principal razão pela qual desejo usar o TLS / SSL é para que o nome de usuário / senhas não sejam enviados claramente.

    
por farinspace 12.02.2011 / 08:51

3 respostas

2

Se você carregar o módulo do kernel ip_conntrack_ftp , isso deve ajudar a resolver seu problema. Você pode carregar o módulo com o seguinte comando

modprobe ip_conntrack_ftp

    
por 12.02.2011 / 09:14
3

Este não está correto:

-A INPUT -p tcp --dport 50000:60000 -m state --state RELATED,ESTABLISHED -j ACCEPT

Deve ser:

-A INPUT -p tcp --dport 50000:60000 -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT

    
por 18.02.2012 / 22:16
0

Identifique a porta passiva que geralmente é maior que 1023.

-A INPUT -p tcp --dport 50000:60000 -m state --state RELATED,ESTABLISHED -j ACCEPT

Altere esta linha com o intervalo de portas usado pelo modo Passivo.

    
por 12.02.2011 / 09:08