iptables permite-me ligar por FTP, mas não consigo obter a listagem dir [duplicada]

1

Eu tenho um conjunto bastante restritivo de regras iptables com a seguinte regra que me permite conectar por ftp

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

Os clientes podem se conectar ok, mas é sobre isso, a seguinte saída do cliente ftp pouco antes de as coisas caírem pode ajudar:

Command:    MLSD
Error:  Connection timed out
Error:  Failed to retrieve directory listing

Quando interrompo as tabelas IP, tudo funciona conforme esperado

Lançamento do CentOS 5.5 (Final)

proftpd-1.3.3c-3

    
por stew 20.01.2011 / 11:16

4 respostas

6

Você precisará de uma regra adicional para permitir conexões "relacionadas". Isso se deve ao protocolo FTP usando uma porta para comandos e outra para dados.

iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Além disso, há um módulo do kernel que você precisará carregar para rastrear as conexões relacionadas. Chama-se ip_conntrack_ftp, mas a maneira como você carrega depende da sua distro.

Em sistemas hedrat-ish, tenha um ogle em /etc/sysconfig/iptables-config

    
por 20.01.2011 / 11:55
2

Apenas para quebrar a diferença:

FTP ativo : o cliente se conecta à porta 21 no servidor. Este é o canal de controle. Obter arquivos ou listagens de diretório são transferências de dados e o servidor tenta se conectar ao cliente para enviá-lo. Isso quase nunca funciona hoje em dia, dada a maneira como a maioria dos clientes é NATted e protegida por firewall.

FTP passivo : Ainda precisa haver um canal de dados, mas desta vez, o servidor envia um número de porta de volta ao cliente e o cliente inicia outra conexão de volta para o servidor nessa porta.

A razão pela qual você está expirando com a conexão de dados em passivo é que a porta de dados ainda está bloqueada. Dependendo do seu software de servidor FTP, você normalmente pode especificar o intervalo de portas que o servidor envia (por exemplo: 50000-50010). Você também precisa aceitar conexões de entrada nesse intervalo de portas. (Certifique-se de limitar também o número de conexões simultâneas para o mesmo número de portas disponíveis.)

Não estou familiarizado com o proftpd, mas acho que isso permite que você faça o que precisa fazer.

Editar A resposta da Noodl é a melhor aposta para permitir a conexão de dados, embora você possa querer ser específico sobre o intervalo de portas de qualquer maneira, para facilitar o rastreamento.

    
por 20.01.2011 / 11:57
0

Tente configurar seu cliente para usar FTP passivo, supondo que você esteja usando um NAT, que deve funcionar.

No filezilla está nas configurações de conexão, na linha de comando eu acho que "passivo" deve ativá-lo, faça isso antes do comando ls / dir.

    
por 20.01.2011 / 11:23
0

Você pode usar o módulo nettrack conntrack:

modprobe nf_conntrack_ftp 

E para ser carregado na inicialização, em / etc / sysconfig / iptables-config:

IPTABLES_MODULES="nf_conntrack_ftp"
    
por 20.01.2011 / 12:02