![VSFTPD 和隐式 SSL](https://linux22.com/image/493806/VSFTPD%20%E5%92%8C%E9%9A%90%E5%BC%8F%20SSL.png)
我有一个 Debian 专用服务器,我想使用 VSFTPD 在其上启用隐式 SSL,但我遇到了困难。
我已经在线阅读过,我真正能找到的唯一内容是如何启用 SSL,并且在手册页中列出了一个隐式 ssl 命令。但由于隐式 ssl 使用第二个侦听器(默认为 990),所以我不知道如何使其在 Debian 上工作。
有谁成功让它工作了吗?
这是我的配置:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
connect_from_port_20=YES
pam_service_name=vsftpd
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
如果我包含 Implicit_SSL=YES,服务器甚至不会启动。
谢谢
答案1
显然,您需要implicit_ssl=YES
在配置文件中进行设置才能到达任何地方。
但是,当您这样做时,您当然无法启动服务器。因此,要做的第一件事是查看服务器的日志,位于 /var/log/vsftpd.log 中(或者,消息可能发送到 /var/log/user.log 或 /var/log/messages,但这种情况不太可能)。
如果不看这些,我不可能告诉你问题到底是什么,但我大胆猜测,很有可能是找不到服务器 SSL 证书。其他可能的问题包括权限问题、SELinux 故障(如果您启用了该功能)或 vsftpd 不喜欢您为其提供的配置选项集 - 它可以非常挑剔,以防止您意外将其配置为不安全状态。或者还有其他可能性 - 这就是您需要日志的原因。
答案2
隐式 - 假设服务器期望使用 SSL 加密所有内容。这意味着当客户端首次连接到服务器时,它将立即在命令连接上协商 SSL 连接。通常,隐式连接也位于不同的端口上,例如端口990。因此,要以隐式模式运行 vsftpd,您需要设置选项
implicit_ssl=YES
listen_port=990
或者
implicit_ssl=YES
listen_port=21
并配置您的FTP 客户端使用21连接端口。(例如,FileZilla 客户端在连接到隐式服务器类型时默认使用 990 端口)。
答案3
我遇到了类似的问题,您的配置应该如下:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
connect_from_port_20=YES
pam_service_name=vsftpd
ssl_enable=YES
#The following line enables implicit mode
implicit_ssl=YES
allow_anon_ssl=NO
#This will force secure data connections, not required, but recommended
force_local_data_ssl=YES
#This will force secure logins, not strictly required, but REALLY recommended
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
#The next line is the magic which I suspect will make this work for you.
#Some distros require explicit private key designation. You may need to regenerate your
#certificate / key pair. A lot of Debian based distros seem to need this step, and will not
#start the server without it.
rsa_private_key_file=<path to private key>.key
这对我来说很管用。另外,由于您使用的是 tls,而不是 ssl,因此您的服务器实际上应该在通常的 ftp 端口上提供服务。现在大多数客户另一方面,默认情况下会查找端口 990 以进行 ftps 连接,但你对此无能为力,除非你真的想在端口 990 上提供服务。这不是什么大问题,只是很麻烦。你可能还需要考虑虚拟用户、chroot jailing 和被动模式,分别用于安全性、更高的安全性和更简单的客户端连接。谢谢,-Matthias
答案4
确保指定“implicit_ssl”(全部小写),Implicit_SSL 将不起作用,正如您所提到的,服务器甚至不会启动