VSFTPD FileZilla GnuTLS 오류 -15(예기치 않은 TLS 패킷 수신)

VSFTPD FileZilla GnuTLS 오류 -15(예기치 않은 TLS 패킷 수신)

두 개의 새로운 CentOS 7 시스템을 동시에 설정했으므로 구성은 동일해야 하며 IP 주소와 호스트 이름만 다릅니다.

VSFTPD를 설치하고 패시브 포트로 구성했습니다. 한 상자는 문제 없이 잘 연결되지만 두 번째 상자에서는 계속해서 다음 오류가 발생합니다.

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

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

오류는 항상 비밀번호 확인 직후에 나타납니다.

나는 SELinux를 비활성화했기 때문에 문제가 SELinux가 아니라는 것을 알고 있습니다. 방화벽 데몬(firewalld)을 비활성화하려고 시도했기 때문에 문제는 방화벽에도 없습니다.

다음은 /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

Google 검색을 했는데 15개의 오류 코드가 하나도 표시되지 않았습니다.

아이디어?

답변1

CENTOS 7에서 PASS 명령을 실행한 후에도 동일한 오류가 발생했습니다. (GnuTLS 오류 -15: 예기치 않은 TLS 패킷이 수신되었습니다.)

내 솔루션은 다음과 같습니다.

vsftpd.conf에 다음을 추가해야 했습니다:

allow_writeable_chroot=YES

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

답변2

이 문제를 해결하는 데 어려움을 겪고 있는 나에게 도움이 되기를 바라는 마음으로 이 답변을 게시합니다.

파일에 올바르게 설정 하지 않았습니다 local_root. /etc/vsftpd/vsftpd.conf설정이 존재하지 않는 폴더를 가리킵니다.

내 관찰에 따르면 FileZilla에서 비밀번호 명령이 실패하는 것으로 나타났으므로 해당 비밀번호가 마음에 들지 않는 것으로 가정합니다. 제가 올바른 방향으로 생각하게 된 것은 왜 자세한 로그를 받지 못하는지 조사하는 데 시간을 투자했다는 것입니다. 로그가 수신되지 않습니다. 디버그 로그를 받기 시작하면 그 안에 FTP 프로토콜이 있고 FTP 서버에서 비밀번호에 대해 "OK"라고 말하는 것을 볼 수 있습니다. 안타깝게도 어떤 종류의 로깅도 없지만 비밀번호를 확인한 후 로컬 루트를 협상하는 것이 다음 단계일 것이라고 생각했습니다. 내 말이 맞았다. 이것이 내 문제의 원인이었다.

/etc/vsftpd/vsftpd.conf이는 로컬 루트 디렉터리가 포함된 파일의 코드 조각입니다 .

# 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

자세한 로깅을 켠 방법은 다음과 같습니다. 하지만 지금은 디스크 공간을 절약하고 성능을 향상시키기 위해 이 기능을 끕니다.

# 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, xferlog_enable은 실제 파일 업로드 및 다운로드 이상의 작업을 수행하기 때문에 그 의견은 실수라고 생각합니다. 이 속성은 로깅도 활성화합니다. Google 연구에 log_ftp_protocol=YES따르면 xferlog_enable=YES.

답변3

똑같은 오류(오류: GnuTLS 오류 -15: 예상치 못한 TLS 패킷이 수신되었습니다.)가 발생하여 약 한 시간 동안 머리를 부딪혔지만 Gluster 볼륨에 있는 ftp 사용자의 홈 디렉터리가 마운트되지 않은 것을 발견했습니다. Gluster 볼륨을 마운트하고 문제를 해결하십시오.

답변4

ls이상한 점은 로그인 후 시도하면 이런 문제가 나타난다는 것입니다.

httpd내가 제거 했고 nginx작업 중이던 폴더가 이미 소유되어 있었고 apache:apache삭제했을 때 사용자도 삭제된 것으로 나타났습니다 httpd. 구성 파일 chcon에 디렉터리를 추가한 후 nginx:nginx다음 줄에서 사용자를 바꿨습니다. guest_username=nginx nopriv_user=nginx

오류 메시지가 전혀 도움이 되지 않기 때문에 이것이 누군가에게 도움이 되기를 바랍니다.

관련 정보