VSFTPD TLS 和显式模式

VSFTPD TLS 和显式模式

我目前正在尝试在 ubuntu 16.04 服务器上设置 VSFTPD,并且我想使用 FTPS(理想情况下我会使用 SFTP,但不幸的是我受到旧系统的限制)

我已设法使用默认配置和无 TLS 进行设置,并且我可以通过 filezilla 正常连接。尽管在过去的两天里,我一直在尝试启用 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 选项有关,但我完全不知所措。我想我有谷歌云网络防火墙,然后有 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=(外部 Google 计算 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,它就会挂在那里。我也通过外部 FTP 客户端(如 filezilla)收到错误。这只是在命令ls at 0 [Making data connection...]时超时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。

有人有什么想法吗?

相关内容