Caros,
O que acontece eh o seguinte:
O FTP eh um protocolo notoriamente problematico para trabalhar com NAT. Isso se deve ao fato do servidor informar no payload do pacote o endereco IP ao qual o cliente devera se conectar. Nisso ele acaba passando o IP real que esta configurado na eth, e nao o IP de NAT que deveria ser visto pelo mundo externo.
Porem, adicionando os modulos ip_nat_ftp
e ip_conntrack_ftp o seu firewall ira fazer o "fix up" do endereco em questao, ou seja, ele ira trocar o IP que foi passado no pacote para o IP que esta configurado na regra de NAT.
Ate aqui, nenhum problema... mas... o que acontece quando vc criptografa a conexao? Isso mesmo, TODO payload do pacote sera criptografado, incluindo o endereco IP que deveria ser trocado no firewall! Dessa forma o firewall nao "acha" o IP e consequentemente nao o troca.
Isso acontece em todas implementacoes de FTPS (FTP + crypto). Existem alguns workarounds (gambiarras) para sanar esse problema, porem recomendo a vc utilizar o SFTP nativo do ssh pois nele nao existe o problema relatado, alem de ser bem documentado e com ferramental open source disponivel para diversas plataformas.
Acho que eh so.
Alexandre Joanelli
De: Leandro Moreira <leandro@leandromoreira.eti.br>
Para: Anderson Silva <abnerdoom@gmail.com>
Cc: d-u-p <debian-user-portuguese@lists.debian.org>
Enviadas: Domingo, 15 de Novembro de 2009 19:55:13
Assunto: Re: Vsftpd nao conecta fora da empresa
Caros,
Foi so eu desativar a parte do ssl que p ftp funcionou sem problema, vou deixar sem o ssl por enquanto e estudar essa configuração.
So mais uma duvida, essas configurações de ssl no vsftpd ele encripta a conexão de forma a dificultar o escanenamento de pacotes?
Att.
Leandro Moriera
2009/11/15 Anderson Silva
<abnerdoom@gmail.com>
Leandro,
o seu problema parece ser de um firewall do lado do cliente que não é esperto o suficiente para alterar os endereços dos clientes nos pacotes ftp ou o firewall do lado do cliente está bloqueando as tentativas do servidor ftp de se conectar a uma porta alta do lado do cliente.
Talvez uma solução possível seja configurar a sessão ftp no lado do cliente como passiva.
Veja uma explanação sobre o protocolo ftp aqui:
http://slacksite.com/other/ftp.html
2009/11/15 Leandro Moreira
<leandro@leandromoreira.eti.br>
Caros,
Eu tenho no meu firewall uma regra de nat, redirecionando porta 20 e 21 tcp e upd para o meu servidor interno, como podem ver o log abaixo eu consigo logar no ftp:
Sun Nov 15 16:37:38 2009 [pid 18355] CONNECT: Client "201.73.248.83"
Sun Nov 15 16:37:38 2009 [pid 18354] [lmoreira] OK LOGIN: Client "201.73.248.83"
Ele so nao ta listando o diretório,:
tatus: Conectando com XXX.XXX.XXX.XXX:21...
Status: Conexão estabelecida, esperando a mensagem de boas vindas...
Resposta: 220 Bem vindo a Selva
Comando: AUTH TLS
Resposta: 234 Proceed with negotiation.
Status: Inicializando TLS...
Status: Verificando o certificado...
Comando: USER lmoreira
Status: Conexão TLS/SSL estabelecida.
Resposta: 331 Please specify the password.
Comando: PASS ***********
Resposta: 230 Login successful.
Comando: OPTS UTF8 ON
Resposta: 200 Always in UTF8 mode.
Comando: PBSZ 0
Resposta: 200 PBSZ set to 0.
Comando: PROT P
Resposta: 200 PROT now Private.
Status: Conectado
Status: Recuperando a listagem de pastas...
Comando: PWD
Resposta: 257 "/"
Comando: TYPE I
Resposta: 200 Switching to Binary mode.
Comando: PORT 172,16,0,254,12,62
Resposta: 500 Illegal PORT command.
Erro: Falhou em recuperar a listagem de diretórios
Configurei o filezila para usar ftp ativo, como foi sugerido o uso do tcpdum, ja tinha feito anteriormente e repeit o teste, loguei as conexões em direção ao meu servidor de ftp com o iptables, elas estao passando normalmente pelos meus 2 firewalls (tenho um firewall de borda e um para a DMZ), inclusios modulos sugeridos pelo Thiago ja estavam levantados no 2 firewalls
firewall de borda:
Nov 15 17:14:39 atena kernel: FTPIN=eth0 OUT=eth1 SRC="" DST=172.20.0.143 LEN=40 TOS=0x00 PREC=0x00 TTL=117 ID=20360 DF PROTO=TCP SPT=3188 DPT=21 WINDOW=16201 RES=0x00 ACK URGP=00
Forewall DMZ:
Nov 15 17:08:37 frankwall kernel: FTPIN=eth0 OUT=eth2 SRC="" DST=172.20.0.143 LEN=40 TOS=0x00 PREC=0x00 TTL=116 ID=21549 DF PROTO=TCP SPT=3196 DPT=21 WINDOW=16201 RES=0x00 ACK URGP=0
E no servidor FTP conforme o log acima a conexao esta funcionando, o cliente autentica ele ta com problemas para lista o conteudo do diretorio, abaixo segue a minha configuração do ftp
tipo de servidor: ftpes - ftp sobre tls/ssl explicito
Modo: Ativo
Agradeço a atenção.
Att.
Leandro Moreira
2009/11/15 Thiago Silveira de Oliveira
<thiagocpv@ig.com.br>
Queridão, adiciona no seu firewall.....
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
Isso já deve resolver seu problema...
Abraços!!!!
Caros,
Instalei um servidor ftp usando vsftpd com TLS, na empresa conecta sem problema algum, fora da empresa quanto mando conectar ele me retorna a seguinte mensage:
Falhou em recuperar a listagem de diretórios
No log do vsftpd vi a seguinte mensagem:
Sat Nov 14 22:18:33 2009 [pid 14765] [lmoreira] OK LOGIN: Client "187.16.186.247"
Pelo que entendi ele conecta no servidor mas nao lista o conteudo do diretórios, estou usando nodo ativo para o ftp, com as devidas portas liberadas nos firewall, abaixo segue o meu vsfptd.conf:
listen=YES
local_max_rate=100000
anonymous_enable=NO
syslog_enable=no
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=Bem vindo a Selva
use_localtime=YES
chroot_local_user=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/ftpusers
max_per_ip=3
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
Agradeço desde ja a atenção.
Att.
--
Leandro Moreira
Linux Administrator: LPIC-1
e-mail/msn: leandro@leandromoreira.eti.br
Tel.: + 55(32) 9906-5713
--
Leandro Moreira
Linux Administrator: LPIC-1
e-mail/msn:
leandro@leandromoreira.eti.brTel.: + 55(32) 9906-5713