Eu configurei duas novas caixas CentOS 7 simultaneamente, então as configurações devem ser idênticas, apenas diferentes endereços IP e nomes de host.

Eu instalei o VSFTPD e configurei para portas passivas. Uma caixa conecta bem, sem problemas, no entanto, a segunda caixa continuamente me lança este erro:

GnuTLS error -15: An unexpected TLS packet was received. 

Aqui está o rastreamento de depuração do FileZilla:

Status: Connecting to 192.168.20.68:21... Status: Connection established, waiting for welcome message... Trace: CFtpControlSocket::OnReceive() Response: 220 (vsFTPd 3.0.2) Trace: CFtpControlSocket::SendNextCommand() Command: AUTH TLS Trace: CFtpControlSocket::OnReceive() Response: 234 Proceed with negotiation. Status: Initializing TLS... Trace: CTlsSocket::Handshake() Trace: CTlsSocket::ContinueHandshake() Trace: CTlsSocket::OnSend() Trace: CTlsSocket::OnRead() Trace: CTlsSocket::ContinueHandshake() Trace: CTlsSocket::OnRead() Trace: CTlsSocket::ContinueHandshake() Trace: CTlsSocket::OnRead() Trace: CTlsSocket::ContinueHandshake() Trace: TLS Handshake successful Trace: Protocol: TLS1.2, Key exchange: ECDHE-RSA, Cipher: AES-256-GCM, MAC: AEAD Status: Verifying certificate... Status: TLS connection established. Trace: CFtpControlSocket::SendNextCommand() Command: USER datamover Trace: CTlsSocket::OnRead() Trace: CFtpControlSocket::OnReceive() Response: 331 Please specify the password. Trace: CFtpControlSocket::SendNextCommand() Command: PASS ******* Trace: CTlsSocket::OnRead() Trace: CTlsSocket::Failure(-15) Error: GnuTLS error -15: An unexpected TLS packet was received. Trace: CRealControlSocket::OnClose(106) Trace: CControlSocket::DoClose(64) Trace: CFtpControlSocket::ResetOperation(66) Trace: CControlSocket::ResetOperation(66) Error: Could not connect to server 

O erro é sempre logo após a verificação da senha.

Sei que o problema NÃO É SELinux, pois desativei isso. O problema também não é o firewall, pois tentei desabilitar o Firewall Daemon (firewalld).

Aqui está a parte relevante do arquivo /etc/vsftpd/vsftpd.conf.

listen=YES listen_ipv6=NO pasv_enable=YES pasv_max_port=10100 pasv_min_port=10090 pasv_address=192.168.20.88 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 ssl_ciphers=HIGH require_ssl_reuse=NO rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem 

Fiz uma pesquisa no Google, mas não encontrei 15 códigos de erro.

Reflexões?

Resposta

Eu tive o mesmo erro após o comando PASS no CENTOS 7. (Erro GnuTLS -15: Um pacote TLS inesperado foi recebido.)

Minha solução é a seguinte:

Eu tive que adicionar o seguinte ao vsftpd.conf:

allow_writeable_chroot=YES chroot_local_user=YES local_root=/ftphome/$USER user_sub_token=$USER 

Comentários

  • Obrigado, pelo meu arquivo /etc/vsftpd.conf adiciono: user_sub_token = $ USER e agora não tenho o erro GNUTLS -15 Agora recebo outro erro: A conexão de dados não pôde ser estabelecida: ECONNREFUSED – Conexão recusada pelo servidor
  • resolvi em meu arquivo /etc/vsftpd.conf, coloquei o mesmo valor para ” listen_address = 192.168.1.2 ” & ” pasv_address = 192.168.1.2 ” adiciono este último e funciona, preciso: D
  • No meu caso, tinha local_root apontando para um diretório ausente – quando eu modifiquei essa variável, o erro 15 havia desaparecido.

Resposta

Estou postando esta resposta na esperança de que ela possa ajudar alguém no futuro, possivelmente eu, já que sofri com a resolução desse problema.

Eu não tinha local_root em o arquivo /etc/vsftpd/vsftpd.conf definido corretamente. A configuração apontava para uma pasta, que não existia.

O que através de mim foi que vi a falha no comando de senha no FileZilla, então pensei que não gostou da senha. O que me fez pensar na direção certa foi que dediquei um tempo pesquisando por que não estava recebendo registros detalhados. Não recebi registros. Assim que comecei a receber logs de depuração, onde vi os protocolos FTP, vi que o servidor FTP disse OK para a senha. Infelizmente, não houve nenhum tipo de registro, mas pensei que negociar a raiz local seria o próximo curso de ação depois de autenticar a senha. Eu estava certo e isso me levou ao problema.

Aqui está o fragmento de código no arquivo /etc/vsftpd/vsftpd.conf, contendo a raiz local.

# You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). # (Warning! chroot"ing can be very dangerous. If using chroot, make sure that # the user does not have write access to the top level directory within the # chroot) chroot_local_user=YES #local_root=/mnt/raid1 local_root=/ftproot #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd/chroot_list 

Aqui está como eu finalmente ativei o registro detalhado, embora vá desligá-lo agora para economizar espaço em disco e melhorar o desempenho.

# Activate logging of uploads/downloads. xferlog_enable=YES # # If you want, you can have your log file in standard ftpd xferlog format. # Note that the default log file location is /var/log/xferlog in this case. xferlog_std_format=NO log_ftp_protocol=YES # # Activate logging of uploads/downloads. xferlog_enable=YES 

IMHO, eu consideraria o comentário um bug, já que xferlog_enable é mais do que o próprio upload e download de arquivos. Esta propriedade também ativa o registro. Uma pesquisa do Google prova que log_ftp_protocol=YES requer xferlog_enable=YES.

Comentários

  • Acabei de cair na mesma armadilha devido a um erro de ortografia. Definir um diretório local_root válido resolveu o problema.

Resposta

Encontrei exatamente o mesmo erro (Erro: erro GnuTLS -15: Um pacote TLS inesperado foi recebido.) E bati minha cabeça por cerca de uma hora, mas então descobri que o diretório inicial dos usuários de ftp que estava no volume Gluster não estava montado. Volume do Gluster montado e problema resolvido.

Resposta

Você precisa permitir chroot gravável em seu arquivo de configuração:

sudo nano /etc/vsftpd.conf 

Em seguida, adicione esta linha na parte inferior:

allow_writeable_chroot=YES 

E reinicie o serviço:

sudo service vsftpd restart 

Resposta

Estranhamente para mim, esse problema surgiu ao tentar ls depois de fazer login.

Descobri que eu havia desinstalado httpd em favor de nginx e o a pasta que eu estava usando pertencia a apache:apache e o usuário foi removido quando removi httpd. Eu chcon “d os diretórios para nginx:nginx e substituí o usuário nessas linhas em meu arquivo de configuração: guest_username=nginx nopriv_user=nginx

Espero que isso ajude alguém porque as mensagens de erro não foram úteis em nada.

Resposta

Eu gostaria de adicionar a Ndianabasi:

Quando você tiver:

allow_writeable_chroot=NO 

e você ativou o chroot, o diretório do Chroot não pode “ser gravável pelo usuário com o qual você está tentando fazer o login. Este foi o meu caso e ocorreu o mesmo erro. Eu alterei (o dir root) para root: root e isso consertou para mim.

P.S. Verifiquei não consigo mais encontrar a opção mencionada nas páginas de manual, mas pode estar disponível em versões anteriores.

Comentários

  • Se a resposta é que você deve permitir chroot gravável, como isso ajuda alguém que tenha esse problema?

Resposta

verifique se o diretório e seus diretórios pais são legíveis e executáveis para o usuário sftp.

Comentários

  • Observe que isto determinada pergunta tem uma resposta aceita , significando que o problema já foi resolvido.
  • obrigado, mas eu só queria adicionar como resolvi esse problema no meu caso. ou você acha que ainda é impróprio adicionar algo?
  • Mencionei a resposta existente porque parecia que este problema específico tinha uma resposta muito específica. Você encontrou exatamente os mesmos sintomas? Se não, você sempre pode pedir & para responder ao seu problema específico com sua resposta específica.
  • Sim, tinha exatamente os mesmos sintomas.

Resposta

Não posso postar comentários ainda, então isso é parcialmente em resposta ao comentário de Scott e para esclarecer a resposta do Sr. Fantástico …


Eu encontrei o mesmo problema e depois algumas tentativas e erros descobriram o que isso realmente significa e uma solução melhor (IMHO) do que definir allow_writeable_chroot = YES.

Isso significa que o vsftpd deve permitir a situação em que o diretório inicial do usuário pode ser escrito por esse usuário . Em vez disso, por razões de segurança, alterei as permissões na pasta raiz do usuário para 555. De acordo com outro tópico, isso atenua um “ATAQUE DE BESTA RUGIDO”.

No meu caso, a configuração original era: (777) drwxrwxrwx / home / ftpuser /

Alterar o diretório do usuário para: (555) dr-xr-xr-x / home / ftpuser /

torna o diretório inicial do usuário NÃO gravável pelo usuário e, portanto, não precisei usar o allow_writeable_chroot = YES. Isso é bom (e mais seguro) para minha situação, já que tenho uma estrutura de diretório predefinida e não quero que o usuário crie novos arquivos ou diretórios em sua pasta raiz de qualquer maneira.

Eu descobri isso quando mudei o diretório inicial para / var / ftp através do parâmetro local_root = para vsftpd e funcionou sem a necessidade de definir allow_writeable_chroot = YES. Esta pasta / var / ftp é (755), mas pertence ao root e, portanto, não pode ser gravada pelo ftpuser.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *