Liberar FTP passivo. [RESOLVIDO]

1. Liberar FTP passivo. [RESOLVIDO]

Augusto Silva
rockmusic26

(usa Outra)

Enviado em 06/05/2013 - 14:21h

Galera, liberei meu FTP para ser acessado via rede externa (internet), fiz o roteamento no modem, e no iptables redirecionei a porta 21 para o endereço do meu servidor squid, depois fiz o roteamento da seguinte forma:
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 21 -j DNAT --to 10.2.2.20:21

o 10.2.2.20 é meu servidor FTP, no entanto quando faço a requisição externa ele pede usuário e senha do FTP
no momento de exibir os dados do FTP ocorre o seguinte erro:
Erro ao abrir pasta no servidor FTP. Certifique-se de que você tem permissão para acessar a pasta
Detalhes:

200 type set to A
227 Entering Passive Mode (10.2.2.20,7,71)

Meu iptables ficou assim:



#portas liberadas
PORTAS_TCP="22,80,21,3389"
PORTAS_TCP2="8080"
PORTAS_UDP="53"

#limpar regras
iptables -F
iptables -t nat -F

#bloquear tráfego
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#cria ida e volta
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#roteamento no kernell
echo 1 > /proc/sys/net/ipv4/ip_forward

#liberar ip do iptables
iptables -I FORWARD -s 10.2.2.26 -j ACCEPT

#roteamendo e proxy
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

#squid porta 3128
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

#liberacao das portas
iptables -A INPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT

iptables -A INPUT -p udp -m multiport --dports $PORTAS_UDP -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports $PORTAS_UDP -j ACCEPT
iptables -A FORWARD -p udp -m multiport --dports $PORTAS_UDP -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports $PORTAS_TCP2 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP2 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_TCP2 -j ACCEPT

#liberar ping
iptables -A INPUT -p icmp -i eth1 -j ACCEPT

terminal server
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 3389 -j DNAT --to 10.2.2.2:3389

#liberar o servidor ftp
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 21 -j DNAT --to 10.2.2.2:21
#-----------------------------------------------
touch /var/lock/subsys/local



Pelo que lí eu tenho que fazer diferente pois o FTP ainda trabalha com outras portas, é isso mesmo o que me dizem?


  


2. Re: Liberar FTP passivo. [RESOLVIDO]

Augusto Silva
rockmusic26

(usa Outra)

Enviado em 06/05/2013 - 15:18h

Resolvido ativando os seguintes módulos:

modprobe nf_nat_ftp
modprobe nf_conntrack_ftp


3. Re: Liberar FTP passivo. [RESOLVIDO]

Rodrigo Albuquerque Serafim
raserafim

(usa Slackware)

Enviado em 13/05/2017 - 17:22h

rockmusic26 escreveu:
...
Pelo que lí eu tenho que fazer diferente pois o FTP ainda trabalha com outras portas, é isso mesmo o que me dizem?


o acesso a um servidor FTP não se faz liberando as portas 20 e 21; mas sim, observando essas portas como origem.

apenas é necessário abrir as portas 20 e 21 caso seja um servidor FTP; não um cliente FTP.

do lado do cliente tanto a comunicação quanto a transferência propriamente dita dos dados se fazem, quase que aleatoriamente, por meio de alguma das portas altas (1024:65535).

do lado do servidor a comunicação é feita pelas portas 20 e 21 e a transferência dos dados se fazem por meio de alguma das portas altas.

neste sentido, para um cliente FTP, duas regras no iptables são centrais:
iptables -A INPUT -p tcp --sport 20:21 -j ACCEPT  #aqui aceita os pacotes que estabelecem a comunicação FTP.
iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT #aqui, uma vez estabelecida a conexão, se libera as portas em potencial para a transferência dos dados.


ou então...com um nível de segurança adicional:
iptables -A INPUT -p tcp --sport 20:21 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 1024:65535 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT


observem que para as portas 20 e 21 se verifica essas portas na tag da origem (--sport); ou seja, se o pacote saiunbdas portas 20 e 21 do servidor (assim se sabe que é uma conexão FTP).

e as portas altas (1024:65535) aí sim é no cliente (--dport): o destino do pacote que sai do servidor.

(obs: a princípio é possível definir uma faixa mais estreita de portas altas para serem destinadas às comunicações FTP. mas aí depende de configurações no SO... também se a conexão é ativa ou passiva...)


4. Re: Liberar FTP passivo. [RESOLVIDO]

Rodrigo Albuquerque Serafim
raserafim

(usa Slackware)

Enviado em 13/05/2017 - 17:54h

diante do que expus em minha resposta anterior...

seu código tem três problemas no que se refere ao FTP:

1-
PORTAS_TCP="22,80,21,3389"
...
iptables -A INPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT

nesta regra, está sendo verificado se o pacote se destina a sua (do cliente) porta 21. quando, na verdade, a comunicação no cliente é feita toda ela (conexão e transferência) em alguma das portas altas.

porém há uma outra linha no seu código (que se encontra mais para o início) que torna várias outras linhas de certa forma redundantes.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

assim, essa última regra mencionada contorna o problema que me referi antes.

o problema de número 2 é que não há no seu código uma regra que libere as portas altas.

porém, novamente, a última regra mencionada contorna também esse problema.

entretanto, é um outro problema que, de fato, faz o seu acesso ao FTP não funcionar:

3- as regras do FORWARD e/ou do PREROUTING, que inexistem regras semelhantes as que destaquei comocentrais em minha resposta anterior.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts