如何在 vsftpd 上启用 TLS 1.1 **最低**

如何在 vsftpd 上启用 TLS 1.1 **最低**

我正在尝试使用 securitymetrics.com 保护我的基础设施以满足 PCI-DSS 标准。该标准要求至少使用 TLS 1.1(使用 CBC 密码)。不允许使用 TLS 1.0。

在保护 ftp(vsftpd)时,我已禁用 sslv2 和 sslv3,但如果不禁用 TLS 1.1 和 TLS 1.2,则无法阻止 TLS 1.0。配置文件ssl_tlsv1可以设置为 YES 或 NO 的选项,但我看不出任何方法可以区分 1.0 和更高版本。

我如何才能启用 TLS 1.1 及更高版本?

答案1

答案尚未发布,所以我想我会跟进其余部分......

要禁用 TLSv1.0 并启用 TLSv1.1 和 TLSv1.2,只需添加这两行并更改第三行:

ssl_tlsv1_2=YES
ssl_tlsv1_1=YES
ssl_tlsv1=NO

请注意,这些选项仅在修补版本中可用vsftpd,并且似乎仅安装在 CentOS 上,具体来说不是在 Ubuntu 上。其他发行版可能也有修补版本。

答案2

看来目前的官方版本 3.0.3 实际上在没有 RHEL 补丁的情况下也能正常工作,因为似乎你可以限制连接到TLSv1.2
正如@Chris Kennedy 所写,您可以在配置文件中设置以下选项:

#Options: SSLv3, TLSv1.0, TLSv1.2, HIGH (see man ciphers)
ssl_ciphers=TLSv1.2

WinSCP 客户端测试结果

在此处输入图片描述

将客户端设置为 Max SSL 3.0:
连接失败

将客户端设置为 Max TLS 1.0:
连接失败

将客户端设置为 Max TLS 1.1
连接失败

将客户端设置为 Max TLS 1.2:
连接成功!

使用 TLS 1.2 连接的 WinSCP 版本 5.15.3 日志:

...
. 2020-02-06 15:50:21.774 TLS connect: SSLv3 read server hello A
. 2020-02-06 15:50:21.775 TLS connect: SSLv3 read finished A
. 2020-02-06 15:50:21.775 TLS connect: SSLv3 write change cipher spec A
. 2020-02-06 15:50:21.775 TLS connect: SSLv3 write finished A
. 2020-02-06 15:50:21.775 TLS connect: SSLv3 flush data
. 2020-02-06 15:50:21.775 Using TLSv1.2, cipher TLSv1/SSLv3: ECDHE-RSA-AES256-GCM-        SHA384, 2048 bit RSA, ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
. 2020-02-06 15:50:21.775 TLS connection established

我也尝试了其他 TLSv1.2、TLSv1.0、SSLv3 选项值,它们似乎受到了尊重。

答案3

要将 VSFTPD 限制为 TLS 1.2,请尝试设置:ssl_ciphers=TLSv1.2

我不知道是否有一种简单的方法可以将连接限制为 TLS 1.1 和 1.2。

答案4

vsftpd 选项ssl_tlsv1_1ssl_tlsv1_2似乎已在名为 vsftpd-2.2.2-tlsv1_2.patch 的补丁中引入,该补丁包含在基于 RHEL 的发行版的 vsftpd 源代码中(在 CentOS 7 上检查)。官方 vsftpd 网站和 Ubuntu 存储库中的源代码似乎不包含此补丁或这些可调选项(在 Ubuntu 18.04 上检查)。

相关内容