VSFTPD TLS 및 명시적 모드

VSFTPD TLS 및 명시적 모드

현재 우분투 16.04 서버에서 VSFTPD를 설정하려고 하는데 FTPS를 사용하고 싶습니다. (이상적으로는 SFTP를 사용하지만 불행히도 레거시 시스템의 제약을 받습니다.)

TLS 없이 기본 구성을 사용하여 설정했으며 filezilla를 통해 잘 연결할 수 있습니다. 지난 2일 동안 TLS를 활성화하려고 노력했지만 SE나 다른 곳에는 질문이 많지 않은 것 같습니다. 긍정적인 결과.

vsftpd.conf 파일의 내 인증서 세부 정보는 다음과 같습니다.

rsa_cert_file=/path/to/fullchain.pem
rsa_private_key_file=/path/to/privkey.pem
allow_anon_ssl=NO
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES

그러나 더 이상 filezilla 콘솔에 표시된 다음 항목에 연결할 수 없습니다.

Status:         Verifying certificate...
Status:         TLS connection established.
Status:         Server does not support non-ASCII characters.
Status:         Logged in
Status:         Retrieving directory listing...
Status:         Server sent passive reply with unroutable address. Using server address instead.
Command:    LIST
Error:      Connection timed out after 20 seconds of inactivity
Error:      Failed to retrieve directory listing

VSFTPD를 구성하는 것은 이번이 처음이므로 온라인에서 일부 튜토리얼을 따라해 왔습니다. 그들은 또한 UFW와 관련되어 있으며 그림과 같이 포트를 열었습니다.

또한 vsftpd.conf 파일에 다음 줄을 추가해 보았습니다.

  ssl_tlsv1=YES
  ssl_sslv2=NO
  ssl_sslv3=NO

  require_ssl_reuse=NO
  ssl_ciphers=HIGH

pasv_address 옵션을 언급하는 다른 게시물을 보았습니다.

그래서 내 서버의 외부 IP를 사용하여 이것을 내 구성에 추가해 보았습니다. 이는 Google Compute Engine에서 호스팅되며 튜토리얼에 지정된 것과 동일한 포트 등을 허용하도록 Compute의 방화벽 규칙도 업데이트했습니다. . 이것도 작동하지 않습니다.

포트/방화벽 또는 기타 TLS 옵션과 관련이 있다고 가정할 수 있지만 완전히 당황스럽습니다. Google 클라우드 네트워크 방화벽이 있고 ufw가 있는 것은 도움이 되지 않는 것 같습니다. (ufw를 비활성화해도 아무런 효과가 없습니다)

내 ufw 규칙은 다음과 같습니다.

20/tcp                     ALLOW       Anywhere                  
21/tcp                     ALLOW       Anywhere                                   
990/tcp                    ALLOW       Anywhere                  
40000:50000/tcp            ALLOW       Anywhere 

더 알고 싶은 사람이 있다면 제가 따라한 튜토리얼은 다음과 같습니다.FTP 액세스 구성

vsftpd.log에는 문제를 나타내는 로그가 없는 것 같지만 filezilla에서 자세한 로깅을 켜면 다음이 표시됩니다.

데이터 연결 소스 IP를 제어 연결 소스 IP 192.168.1.100에 바인딩

로컬 IP처럼 보이기 때문에 문제가 될 수 있다고 생각합니다. vsftpd.conf 파일에 다음 내용도 있으므로 특히 이 문제를 해결하는 방법에 대해 난감합니다.

pasv_address=(외부 구글 컴퓨터 IP)

내 Google Cloud 방화벽 규칙은 다음과 같습니다.

IP ranges: 0.0.0.0/0
tcp:20-21   
Allow
1000
default

pass-ports
sftp    
IP ranges: 0.0.0.0/0
tcp:40000-50000

(이것들은 결국 IP 방식으로 잠길 것이지만 모든 것을 테스트해도 작동하지 않습니다)

또한 내 vsftpd.conf 파일에서 다음을 통해 사용할 포트로 해당 포트를 추가했다고 생각합니다.

port_enable=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=41000

업데이트

이제 lftp와 다음 인수를 사용하여 상자 자체에서 이에 연결할 수 있습니다.

ftp:ssl-force를 true로 설정

인증서가 도메인에 매핑되어 IP와 작동하지 않으므로 IP가 아닌 도메인 이름을 통해 연결합니다.

그런 다음 명령줄을 통해 새 디렉터리 등을 만들 수 있습니다. 그러나 내가하려고하면 ls얻을 수 ls at 0 [Making data connection...]있고 거기에 멈춰 있습니다. 또한 filezilla와 같은 외부 FTP 클라이언트를 통해서도 오류가 발생합니다. 이것은 LIST명령 에서 시간 초과됩니다.

Command:    LIST
Error:          The data connection could not be established: ETIMEDOUT - Connection attempt timed out
Response:   425 Failed to establish connection.
Error:          Failed to retrieve directory listing
Error:          GnuTLS error -15: An unexpected TLS packet was received.
Status:         Disconnected from server: ECONNABORTED - Connection aborted

관련성이 있을 수 있다고 생각되는 유일한 다른 정보는 도메인이 NGINX에 의해 노드 앱으로 포트 전달된다는 것입니다. 그러나 나는 이것이 포트 80과 443에 대해서만 이 작업을 수행해야 하므로 포트 21에 영향을 주어서는 안 된다고 가정합니다.

누구든지 어떤 아이디어가 있습니까?

관련 정보