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 非匿名会话必须使用加密。)

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

现在,一旦建立(显式)连接,Filezilla 会在窗口底部显示一个小锁图标,表示连接已加密。点击图标了解详情

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

除了我找不到 SSL 协议的单个数据包外,一切都是 TCP。

我不知道如何确保传输的数据是加密的,即使 filezilla 这么说,每次我用谷歌搜索“vsftpd 如何确保数据传输是加密的”时,我得到的唯一答案是“ssl_enable=YES”或“勾选使用 SSL”...

预先感谢您帮助我!

4

1 回答 1

6

经过更多的研究,尤其是在http://wiki.wireshark.org/SSL上的完整演练之后,我对整个事情有了更好的理解。

我正在回答我自己的问题,希望有一天这会对某人有所帮助,只要以下内容是正确的......

我认为,写下来对我来说也是一个好方法,看看是否清楚地理解了我的问题。写这个答案的任何困难都将证明我错了。

第一的 :

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

SSL 封装在 TCP 中,这就是为什么我在捕获数据包时无法明确观察 SSL 协议的原因。

在分析 TCP 数据包时,我只能“跟随 TCP 流”而不能“跟随 SSL 流”,这误导我认为数据包没有包含加密数据。这很有趣,因为可观察的数据不是人类可读的……如此加密。

为了能够解密它,我必须提供wireshark加密密钥:

RSA 密钥列表

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

然后,我可以观察到加密/未加密的数据。

此外,在http://wiki.filezilla-project.org/上阅读此内容后:

当您对 FTP 服务器应用加密时,CPU 将不得不进行许多计算来加密发送的数据并解密接收的数据。

I simply decided to run the UNIX top command while downloading a file. I was able to observe a high CPU usage of the filezilla client process, contrary to a unencrypted data transfer. This was a second argument that confirmed the data transfered were indeed encrypted, and thus needed to be decrypted.

于 2012-06-01T19:34:41.787 回答