Configurando o vsftpd, trava no comando list

6

Eu instalei o vsftpd e configurei-o. Quando tento me conectar ao servidor ftp usando o Transmit, ele consegue se conectar, mas trava na Listagem "/"

Em seguida, recebo uma mensagem dizendo: Não foi possível recuperar a listagem de arquivos para "/". Conexão de controle expirou.

Tem alguma coisa a ver com o meu iptables? Minhas regras estão listadas:

*filter


#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT


#  Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


#  Allows all outbound traffic
#  You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT


# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT


#  Allows SSH connections
#
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT


# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT


# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7


# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT
    
por Castaglia 24.10.2010 / 03:54

4 respostas

5

A configuração do seu servidor iptables não é (diretamente) o problema. Muito provavelmente, a conexão de dados FTP do servidor está sendo impedida de acessar seu computador cliente. Por padrão, o FTP usa o chamado modo "ativo", pelo qual o servidor realmente tenta abrir a conexão de dados de volta ao cliente. Os roteadores NAT de consumo normalmente bloqueiam isso, levando ao tempo limite de conexão que você anotou.

Defina seu cliente de FTP para usar o modo "passivo" e ele deve funcionar. Se isso não acontecer, verifique se o módulo do kernel nf_conntrack_ftp (os kernels mais antigos chamam de ip_conntrack_ftp ) está carregado no servidor:

sudo lsmod | grep conntrack_ftp

Se o comando acima não retornar nada, o módulo não será carregado e você precisará carregá-lo da seguinte forma:

sudo modprobe nf_conntrack_ftp

Além disso, você deve garantir que o módulo seja carregado no momento da inicialização, colocando nf_conntrack_ftp em /etc/modules .

O módulo do kernel nf_conntrack_ftp rastreia o estado das conexões FTP no servidor. Isso permitirá que a conexão do modo "passivo" do seu computador cliente seja aceita pela regra de estado RELATED na sua cadeia INPUT.

    
por 24.10.2010 / 04:35
2

Primeiro, verifique se o vsftpd está bloqueado para portas exclusivas para o modo ativo e passivo:

ftp_data_port=20
listen_port=21
pasv_min_port=64000
pasv_max_port=64321

Agora altere seus iptables para ter certeza de que essas portas podem atravessar as regras e você deve estar configurado. Por padrão, as portas passivas são aleatórias; definindo o acima e corrigindo seus iptables você resolve o "problema do firewall duplo" para que os clientes possam trabalhar de qualquer lugar.

    
por 16.01.2011 / 20:07
1

Eu não faço iptables, mas é claro como dia a partir do conjunto de regras que você está mostrando que você precisa aprender um pouco mais sobre como funciona o FTP.

O FTP é um serviço "ímpar", pois possui uma porta de controle e uma porta de dados. Não é suficiente abrir apenas a porta 21, que é apenas a porta de controle. As portas de dados dependem se você estiver usando transferência ftp ativa ou passiva.

Eu não sei como o iptables funciona, mas você precisa melhorar o conjunto de regras para que ele também aceite tráfego na porta 20 para dados de ftp (se você quiser usar transferências de porta de FTP padrão)

Caso contrário, você precisa configurar o filtro de pacotes para trabalhar com a transferência passiva de dados e dizer ao seu cliente para usar essa forma de comunicação / transferência de dados também.

Você encontrará este site útil: link

    
por 24.10.2010 / 04:17
0

Sem ter a regra na saída para ESTABLISHED, RELACIONADA, ela não permitirá que os 20 dados de porta retornem os dados.

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
    
por 24.10.2010 / 04:10