Proftpd no Debian - problemas com transferência de arquivos

Proftpd no Debian - problemas com transferência de arquivos

Eu tenho um VPS alugado com debian instalado. Recentemente instalei o proftpd para permitir acesso somente leitura a todos e acesso total para usuários específicos.

Configurei o proftpd (com TLS) de acordo com vários guias. Desbloqueei portas passivas (essas e a porta 21 via iptables) e configurei o login anônimo.

Quando eu faço login, está tudo bem - login rápido, navegação rápida pelos diretórios... o problema ocorre quando tento baixar um arquivo - winscp/filezilla/python, todos ficam presos no download de um arquivo e perdem a conexão (os arquivos são ~ 1kB, muito pequeno). Quando estou conectado via SFTP ao servidor, não tenho problemas e a toda velocidade.

Alguma ideia? Você precisa do meu proftpd.confarquivo?

Atualizar:

Vejo que preciso acrescentar algumas informações, graças ao primeiro comentário (sobre SCP):

  • Gostaria de poder visualizar arquivos anonimamente, o melhor seria através do navegador da web, mas não é obrigatório.
  • Preciso configurar um aplicativo que sincronize a pasta inteira do VPS com a pasta no meu disco rígido (pretendo fazer isso via python, mas shell/bash também é bom)
  • Gostaria de poder fazer download/upload do catálogo inteiro ou apenas dos arquivos que foram alterados
  • Preciso que isso seja possível sem programas de terceiros. Seja por meio de cmdline/bash ou de bibliotecas python oficiais. Precisa funcionar no Windows e no Fedora

Minha configuração do iptables:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:60000:65535
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

Desativei o TLS, conectei-me via conta de convidado, ativei o modo binário e iniciei o tcpdump na porta 21 (servidor ofc). Então fiz um 'get' em um único arquivo e depois de um tempo obtive "Conexão fechada por host remoto". Aqui está a entrada FTP:

ftp> get light.cfg
200 PORT command successful
150 Opening BINARY mode data connection for light.cfg (94 bytes)
Connection closed by remote host.

e aqui você pode ver get e connection_closed separados por uma nova linha:

15:12:15.836468 IP (tos 0x0, ttl 119, id 30359, offset 0, flags [DF], proto TCP (6), length 67)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [P.], cksum 0x5526 (correct), seq 139:166, ack 575, win 7618, length 27
15:12:15.836636 IP (tos 0x0, ttl 64, id 50952, offset 0, flags [DF], proto TCP (6), length 69)
    vz31640.dahost.pl.ftp > 83-144-76-138.static.chello.pl.54225: Flags [P.], cksum 0x7049 (correct), seq 575:604, ack 166, win 115, length 29
15:12:15.856530 IP (tos 0x0, ttl 119, id 30360, offset 0, flags [DF], proto TCP (6), length 56)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [P.], cksum 0xd20f (correct), seq 166:182, ack 604, win 7589, length 16
15:12:15.868348 IP (tos 0x0, ttl 64, id 50953, offset 0, flags [DF], proto TCP (6), length 106)
    vz31640.dahost.pl.ftp > 83-144-76-138.static.chello.pl.54225: Flags [P.], cksum 0xba9a (correct), seq 604:670, ack 182, win 115, length 66
15:12:15.934002 IP (tos 0x0, ttl 119, id 30365, offset 0, flags [DF], proto TCP (6), length 40)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [.], cksum 0x0ccc (correct), ack 670, win 7523, length 0


15:13:15.909873 IP (tos 0x0, ttl 119, id 30372, offset 0, flags [DF], proto TCP (6), length 40)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [F.], cksum 0x0ccb (correct), seq 182, ack 670, win 7523, length 0
15:13:15.910056 IP (tos 0x0, ttl 64, id 50954, offset 0, flags [DF], proto TCP (6), length 40)
    vz31640.dahost.pl.ftp > 83-144-76-138.static.chello.pl.54225: Flags [F.], cksum 0x29ba (correct), seq 670, ack 183, win 115, length 0
15:13:15.922725 IP (tos 0x0, ttl 119, id 30373, offset 0, flags [DF], proto TCP (6), length 40)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [.], cksum 0x0cca (correct), ack 671, win 7523, length 0

Responder1

Por favor poste sua iptablesconfiguração. Observe que fazê-lo funcionar com FTP pode ser complicado, pois o FTP usa alocações dinâmicas de portas (no modo passivo, quando o cliente deseja fazer download ou upload de um arquivo, o servidor aloca uma porta dinâmica para o fluxo de transferência de dados e informa ao cliente e espera que o cliente se conecte a ele).

Isso significa:

  1. Se você quiser usar alguma abordagem "stateful" no Netfilter para detectar fluxo de dados FTP, você precisa ter um módulo de kernel especial carregado para decodificar fluxos FTP de controle;
  2. Isso não funcionará com TLS porque o kernel não será capaz de decodificar os referidos fluxos de controle FTP.

SCP (e SFTP) funcionam bem porque multiplexam controle e fluxos de dados em um único fluxo TCP.

Quanto à sincronização… Primeiro, esqueça, scppois este é um protocolo legado; use SFTP. Esseparece ser uma implementação Python SFTP de plataforma cruzada, então pode funcionar para você. A propósito, o Windows tem um bom suporte para software front-end SFTP (google para WinSCP).

E você também pode considerar outros meios de sincronização. Por exemplo, rsynctem versões do Windows e é indiscutivelmente a melhor ferramenta de sincronização de sistema de arquivos que existe. Você também pode considerar o WebDAV ou até mesmo implementar algo RESTful.

informação relacionada