Problemas intermitentes fazendo upload via FTP (fatal: versão do protocolo) - Conexões não sendo removidas?

1

O cliente está com problemas intermitentes ao enviar arquivos para o servidor FTP. Às vezes funciona e às vezes não funciona.

Parece que eles podem fazer o login ok (os logs do vsftpd mostram logins bem-sucedidos), mas depois, ao tentar fazer transferências de arquivos, ele falha algumas vezes, com o erro:

alert write: fatal: protocol version
. 2017-03-20 21:00:06.459 error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
. 2017-03-20 21:00:06.459 wrong version number
. 2017-03-20 21:00:06.459 Disconnected from server
. 2017-03-20 21:00:06.459 Connection failed.

(Eles estão usando o winscp)

O servidor está configurado com o vsftpd no modo passivo, aqui está a configuração:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
xferlog_std_format=NO
log_ftp_protocol=YES
chroot_local_user=YES
listen=yes
listen_ipv6=no

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

pasv_enable=yes
port_enable=yes
pasv_min_port=10090
pasv_max_port=10095
pasv_address=**removed**
pasv_addr_resolve=yes

allow_writeable_chroot=YES

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/eastberks_certs/**removed**.crt
rsa_private_key_file=/etc/httpd/ssl/**removed**.key

Eles me indicaram este post no fórum: link

O que sugere que pode ser que o vsftpd não esteja fechando as conexões / processos corretamente e, portanto, uma vez conectados através da porta 21, quando se trata de tentar transferir dados em um dos números de porta passivos, ele pode t, porque eles estão todos em uso. Faz sentido.

Então, eu acho que posso replicar isso, mas somente quando há um erro de conexão no meio da transferência.

Com um ponto de partida, de ninguém conectado, executar netstat -anp | grep vsftpd me dá o seguinte:

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      21051/vsftpd 

Agora, se eu me conectar de um cliente:

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      21051/vsftpd        
tcp        0      0 172.31.1.200:21         MYIP:29354   ESTABLISHED 22302/vsftpd        
unix  3      [ ]         STREAM     CONNECTED     5179539  22302/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5179494  22303/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5179493  22311/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5179540  22311/vsftpd  

Agora, temos a conexão com a porta 21, que está correta.

Agora, se eu iniciei uma transferência de arquivos:

tcp        0      0 172.31.1.200:10091      0.0.0.0:*               LISTEN      22302/vsftpd        
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      21051/vsftpd        
tcp        0      0 172.31.1.200:21         MYIP:29354   ESTABLISHED 22302/vsftpd        
tcp        0      0 172.31.1.200:10091      MYIP:25260   ESTABLISHED 22303/vsftpd        
unix  3      [ ]         STREAM     CONNECTED     5179539  22302/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5179494  22303/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5179493  22311/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5179540  22311/vsftpd         

Agora temos a conexão com a porta 10091, que é uma das portas passivas.

Se essa transferência for concluída com sucesso, essa conexão na porta 10091 desaparecerá e tudo estará bem.

No entanto, notei que às vezes há um tempo limite e a transferência de arquivos é interrompida e, quando isso acontece, mesmo que eu desconecte e feche o cliente ftp, descubro que essas conexões ainda estão abertas (também abriu mais 2 em suas tentativas de reconectar após o problema de tempo limite):

tcp        1      0 172.31.1.200:10090      0.0.0.0:*               LISTEN      22595/vsftpd        
tcp        0      0 172.31.1.200:10091      0.0.0.0:*               LISTEN      22302/vsftpd        
tcp        1      0 172.31.1.200:10094      0.0.0.0:*               LISTEN      22548/vsftpd        
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      21051/vsftpd        
tcp        1      0 172.31.1.200:21         MYIP:29354   CLOSE_WAIT  22302/vsftpd        
tcp        1      0 172.31.1.200:21         MYIP:37584   CLOSE_WAIT  22595/vsftpd        
tcp        1      0 172.31.1.200:21         MYIP:33453   CLOSE_WAIT  22548/vsftpd        
tcp        0      0 172.31.1.200:10091      MYIP:25260   ESTABLISHED 22303/vsftpd        
unix  3      [ ]         STREAM     CONNECTED     5179539  22302/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5181389  22557/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5179494  22303/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5182639  22600/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5182675  22600/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5181973  22557/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5179493  22311/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5182674  22595/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5182640  22596/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5179540  22311/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5181390  22549/vsftpd         
unix  3      [ ]         STREAM     CONNECTED     5181972  22548/vsftpd         

Então, o que estou pensando está acontecendo aqui é que, por algum motivo, as transferências estão enfrentando problemas e sendo interrompidas algumas vezes, deixando as conexões ainda abertas no servidor e, depois, tentando novamente, elas eventualmente usam todos os 5 números de portas passivas, e então não pode fazer nada.

Então minha pergunta é dupla. Em primeiro lugar, existe alguma maneira de descobrir o que pode estar causando esses tempos limite? Eu pensei que no começo era apenas no meu fim, porque eu estou testando isso em um hotspot móvel, mas faria sentido se é isso que está acontecendo com o cliente também (é um script automatizado que eles executam algumas vezes por dia) .

E, em segundo lugar, há algo que eu possa fazer para impedir que essas conexões sejam mantidas abertas e entupir as portas desse jeito?

Informações

O servidor é o CentOS 7

vsftpd é a versão 3.0.2

Deixe-me saber se você precisa de mais alguma informação.

Obrigado.

    
por Conn Warwicker 23.03.2017 / 15:17

0 respostas