vsftpd:确保数据传输是加密的?

5

这里是我的“问题”,我通过vsftpd设置了一个FTP服务器,以便登录和数据传输都应该是加密的。

这是我的vsftpd.conf文件的有趣部分。

ssl_enable=YES
allow_anon_ssl=NO
require_ssl_reuse=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_ciphers=HIGH

我正在使用Filezilla作为FTP客户端,连接配置如下:

Protocol : FTP - File Transfer Protocol
Encryption : Require explicit FTP over TLS
Logon type: Normal

需要注意以下几点:

  • 加密:普通FTP:不起作用,我对此感到满意。(响应:530非匿名会话必须使用加密。)

  • 加密:要求隐式FTP通过TLS:也不起作用,服务器拒绝连接。我想这是因为我强制了SSL连接。

现在,一旦(显式)连接建立,Filezilla会在窗口底部显示一个小锁图标,上面写着该连接已加密。单击图标查看详情

我想确保数据传输确实是加密的,而不是明文的,所以我用Wireshark捕获了从我的服务器下载文件到计算机的所有内容。

但是,我找不到任何SSL协议的数据包,所有内容都是TCP。

我已经没有办法确定传输的数据是否被加密,即使filezilla说是,每次我搜索“vsftpd如何确保数据传输被加密”,我得到的唯一答案就是 “ssl_enable=YES”或“勾选使用SSL”…

提前感谢你的帮助!


你是否按照 http://wiki.wireshark.org/SSL 上的说明进行操作了? - Neil
我已经阅读了维基百科的这一部分。我还测试了在浏览https链接时捕获数据包。 - Laurent Dezitter
能否给这个问题投反对票的人说一下原因?这样做并没有真正帮助我... - Laurent Dezitter
HTTPS相当于隐式FTPS,因为它从一个不同的端口开始SSL握手,而不是常规的HTTP/FTP。你尝试过捕获SMTP over TLS吗? - Neil
我没有这样做。我不理解的是,使用的协议是TCP,而传输的数据应该是加密的,因此应该识别SSL协议。 - Laurent Dezitter
1个回答

8
经过一番研究,尤其是在http://wiki.wireshark.org/SSL上完成了“完整演练”,我对整个过程有了更好的理解。
我回答自己的问题,希望这篇文章能够帮助到某些人,只要以下内容是正确的...
首先:

通常,SSL使用TCP作为传输协议。

SSL包含在TCP中,这就是为什么我无法明确地观察到捕获数据包时的SSL协议。
当分析TCP数据包时,我只能“跟随TCP流”,而不能“跟随SSL流”,这让我误以为该数据包不包含加密数据。这很有趣,因为可观察到的数据是不可读的...所以是加密的。
为了能够解密它,我必须提供wireshark加密密钥:

RSA密钥列表

此选项指定IP地址、端口、协议和解密密钥之间的绑定关系。

然后,我可以观察到加密和未加密的数据。
此外,在http://wiki.filezilla-project.org/上阅读以下内容后:

当您将加密应用于FTP服务器时,CPU将不得不执行许多计算,以加密正在发送的数据并解密正在接收的数据。

我决定在下载文件时运行UNIX top命令。我能够观察到filezilla客户端进程的高CPU使用率,与未加密的数据传输相反。这是第二个证明传输的数据确实是加密的,并且需要解密的论据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接