LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

[点晴永久免费OA]为何FTP不安全,而SFTP是安全的?Wireshark抓包看个明白!

admin
2025年10月25日 0:25 本文热度 53
无论我们是网络工程师,还是运维工程师,我们应该都听过这么一个知识:FTP通信是不安全的,而SFTP通信是安全的!其原因就是FTP在传输数据(包括命令、密码、文件内容)时完全不加密,就像用明信片写信,所有信息在网络上都是“裸奔”的。而SFTP建立在加密的SSH连接之上,所有通信在传输前都被加密,就像把明信片放进了只有你和收件人才能打开的保险箱。

本文就跟大家分享FTP与SFTP的区别,以及通过whireshark抓包工具进行分析FTP与SFTP两种传输协议,让大家真正搞懂为何FTP不安全,而SFTP是安全的!
一、实验环境
1.FTP 及SFTP相关参数

服务器
IP
用户名
密码
抓包电脑IP
FTP服务器
192.168.19.212
admin
Qiu@123
192.168.44.55
SFTP服务器
192.168.19.233
admin
Qiu@123
192.168.44.55

2.Whireshark抓包工具
3.FTP及SFTP客户端连接工具FileZilla Client
二、协议层面区别

FTP - 文件传输协议

FTP是一个诞生于1971年的古老协议,设计之初完全没有考虑安全性。它有两个主要问题:

  1. 明文传输:所有信息,包括:

    • 用户名

    • 密码

    • 执行的命令(如 LISTCWD

    • 传输的文件内容本身
      全部以未加密的明文形式在网络上传送。

  2. 双端口连接模式

    • 控制连接:默认端口21,用于发送命令和验证。

    • 数据连接:默认端口20,用于实际传输文件内容。

    • 在 主动模式 下,服务器需要主动连接到客户端的一个随机端口,这对客户端防火墙不友好,且增加了复杂性。

SFTP - SSH文件传输协议

SFTP并不是FTP的安全升级版,而是一个完全不同的协议。它是作为SSH协议的一部分设计的。

  1. 基于SSH:SFTP运行在一条已经建立好的、加密的SSH连接之上。SSH默认端口是22。

  2. 单一加密通道:所有SFTP的命令、应答和文件数据都通过这一条加密的SSH连接进行传输。

  3. 强加密和认证:它继承了SSH的所有安全特性,包括:

    • 加密:使用强加密算法(如AES)对数据进行加密。

    • 完整性校验:防止数据在传输中被篡改。

    • 服务器认证:通过公钥指纹验证你连接的是正确的服务器,而非中间人。

三、抓包分析
以下基于whireshark抓包工具抓对应的FTP包及SFTP进行分析。
(一)对FTP进行抓包分析
1.打开whireshark抓包工具,选择对应网卡,即可开始抓包,如下图所示:
2.FileZilla Client客户端终端中,输入FTP相关信息后,进行连接,点开FTP服务器相关文件目录,下载文件等一系列操作,如下所示:
3.停止抓包,过滤FTP数据包,如下图所示:

这里清晰地看到 FTP 的整个会话过程:

  • USER username:明文用户名。

  • PASS password明文密码(这是 FTP 极不安全的铁证)。

  • PORT 或 PASV:建立数据连接的命令。

  • RETR filename.txt:下载文件的命令。

  • STOR filename.txt:上传文件的命令。

4.解析FTP数据包,看看下载文件内容是什么
在 Wireshark 的显示过滤器栏中,输入ftp-data 并回车。会看到一系列数据包,协议显示为 FTP-DATA。这些包里面就承载着实际的文件内容。
右键单击任意一个 FTP-DATA 数据包 -> Follow -> TCP Stream。

  1. 此时,Wireshark 会打开一个新窗口,重组并显示整个 TCP 连接中传输的原始数据

    • 如果传输的是 文本文件(如 .txt.html.csv, 源代码等),你将直接看到文件的完整可读内容

    • 如果传输的是 二进制文件(如 .zip.exe.jpg 等),你会看到一堆乱码,但这正是该文件的二进制内容。你可以将其另存为原始文件。此时也可以得到对应的完整内容。

(二)对SFTP进行抓包分析
1.跟抓FTP包过程一样,做相关操作后停止抓包后。
经tcp.port == 22 过滤,得到如下数据包:

整个过程可以分解为以下几个关键阶段:

阶段一:TCP 三次握手

首先是标准的 TCP 三次握手([SYN][SYN, ACK][ACK]),建立基础连接。

阶段二:SSH 协议版本协商

客户端和服务器交换它们支持的 SSH 协议版本。数据包标识为 SSH: Client Protocol 和 SSH: Server Protocol

阶段三:密钥交换和算法协商(最关键的阶段)

这是建立安全通道的核心。数据包标识为 SSH: Key Exchange Init

  • 密钥交换算法:双方协商用于安全生成共享密钥的算法(如 diffie-hellman-group14-sha1)。

  • 加密算法:协商后续通信使用的对称加密算法(如 aes128-ctraes256-gcm)。

  • MAC 算法:协商用于数据完整性校验的算法。

  • 压缩算法:协商是否启用压缩。

在此阶段,所有通信仍然是明文的,因为加密通道尚未建立。你可以在这个阶段的包中看到协商的算法列表。

阶段四:用户认证

数据包标识为 SSH: Client Authentication Request

  • 在此之后,所有通信都开始使用阶段三协商好的密钥进行加密

  • 无法看到认证方式(是密码还是公钥)的具体内容,更看不到密码本身。

  • 服务器返回 SSH: Authentication Success 或失败信息,但这些结果也是加密的。

阶段五:SFTP 会话(完全加密)

在 SSH 连接建立后,客户端会启动一个 SFTP 子系统。你会看到:

  • SSH: Client Channel Open / SSH: Server Channel Open

  • SSH: Client Channel Data / SSH: Server Channel Data

这就是 SFTP 通信发生的地方! 所有 SFTP 命令(如 OPENREADWRITESTAT)和传输的文件数据,都作为 “Channel Data” 在加密的 SSH 连接中传输。

2.尝试解析SFTP数据包

在任何一个 SSH: Encrypted packet 或 SSH: Channel Data 数据包上右键,选择 Follow -> TCP Stream

你会发现,与 FTP 分析时不同,这里显示的全是乱码

为什么是乱码?
因为这些数据已经被 SSH 协议使用强大的加密算法(如 AES)加密了。没有服务器的私钥或会话密钥,Wireshark 或任何第三方都无法解密这些内容。

四、总结
通过抓包分析,大家应该都知道为什么FTP不安全,而SFTP是安全的原因了吧。以下给大家整理FTP及SFTP区别:

总结对比表

特性
FTP
SFTP
安全性不安全安全
加密
,全部明文传输
,基于SSH强加密
认证信息
明文传输用户名和密码
通过加密的SSH通道认证
数据传输
明文传输文件内容
加密传输文件内容
完整性
无,数据可被篡改
有,能检测数据是否被篡改
端口
21(控制),20(数据)
22(与SSH共享)
Wireshark分析可直接看到所有内容
(密码、命令、文件)
只能看到加密的乱码

-- EOF --


阅读原文:原文链接


该文章在 2025/10/29 18:51:27 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved