Não é possível definir a regra iptables para FTPS (pure-ftpd com TLS)

2

Estou executando o pure-ftpd com suporte a TLS, tudo funciona bem até ativar o iptables. Com o trabalho iptables eu posso conectar ao ftp, mas não consigo obter lista de arquivos.

O módulo ip_conntrack_ftp está ativado e este é o meu conjunto de regras para ftps:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 989 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 990 -j ACCEPT
    
por B14D3 16.02.2012 / 14:00

1 resposta

2

FTP no modo passivo envolve o cliente fazendo uma segunda conexão de dados ao servidor em um número de porta indicado na conexão de controle na porta 21. O módulo conntrack detecta a conexão de controle e detecta o número da porta da conexão de dados e trata a conexão de dados de entrada como RELATED, que normalmente seria aceita por esta regra:

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

No entanto, quando a conexão de controle é criptografada, o módulo conntrack não pode detectar o número da porta e, portanto, a conexão de entrada não é aceita. A solução é configurar seu servidor FTP com um intervalo de portas para usar no modo passivo ( PassivePortRange como @ cyberx86 mencionado) e configurar o firewall para aceitar todas as conexões de entrada para esse intervalo, por exemplo:

iptables --append INPUT --protocol tcp --dport 10000:10100 --jump ACCEPT
    
por 26.04.2012 / 01:21