网络安全之网络基础知识

主动模式:不同发起

被动模式:相同发起????

FTP知识点

一、FTP的核心结构:为什么需要"两条连接"?

FTP要解决一个基本问题:文件传输过程中,用户可能随时发出新指令(比如中断、查看目录、删除文件)。

如果只用一个连接来做所有事,传输大文件时,控制指令会被阻塞。

解决方案:分离控制与数据

  • 控制连接:传输命令与响应(如登录、列出目录、上传、下载)

  • 数据连接:真正传输文件内容或目录列表

多通道协议:一个FTP会话 = 一条控制通道 + 若干条临时数据通道。


二、端口与连接建立过程(基础)

  • 控制连接 :客户端主动连接服务器的 TCP 21 端口,整个会话期间保持。

  • 数据连接:按需建立,传输完成后关闭。

关键理解点

谁主动发起数据连接?(注意是数据连接)

→ 这就是 主动模式被动模式 的核心区别。


三、主动模式(Active Mode)------ 服务器主动连客户端

工作过程

  1. 客户端从随机高端口(1024+)连接服务器21端口 → 控制连接建立。

  2. 客户端要下载文件时,通过控制连接告诉服务器:
    PORT 192,168,1,100,12,34

    意思是:请连接我IP 192.168.1.100 的端口 12*256+34 = 3106

  3. 服务器从自己的 20端口 主动连接客户端的 3106端口 → 数据连接建立。

  4. 数据传输。

为什么要有20端口?

  • 规范约定:服务器端数据连接 源端口 = 20(便于防火墙识别FTP数据流)。

主动模式的问题(安全/网络角度)

  • 客户端必须开放高端口 给服务器连接 → 很多客户端防火墙会拦截。

  • NAT环境下会有问题

普通NAT(只转换IP头/端口)无法让主动模式正常工作,因为FTP的PORT命令里携带的是应用层IP地址,NAT不会自动修改它。

只有支持FTP ALG的NAT才能改写PORT命令中的地址,但即使如此,主动模式仍然存在安全与兼容性问题,因此实际很少这样用。

✅ 主动模式适合:服务器与客户端都在公网,且客户端防火墙允许入站高端口。

》》》》》》》》》》

为什么NAT环境下会有问题

1. 普通NAT做了什么(网络层)

假设客户端内网IP 192.168.1.100,通过NAT访问公网服务器 203.0.113.5

  • 客户端发出TCP SYN:源IP 192.168.1.100:12345 → 经过NAT后变成 公网IP:22345

  • 服务器看到的连接来源是 公网IP:22345,控制连接正常建立。

这一步NAT确实转换了网络层地址。

2. 主动模式中PORT命令的问题(应用层)

客户端要下载文件,通过控制连接发送:

bash 复制代码
PORT 192,168,1,100,48,57

意思是:请服务器连接我的IP 192.168.1.100,端口 48*256+57 = 12345

关键点 :这条命令是FTP应用层协议的内容,普通NAT不会窥探或修改TCP payload。

所以服务器收到的就是 192.168.1.100:12345

服务器看到这个IP后想:192.168.1.100 在哪?不在我所在的路由表里(这是私有地址),无法建立TCP连接。

结论:普通NAT下,主动模式必然失败。

3. 那FTP ALG是怎么解决的?

FTP ALG(应用层网关) 会:

  • 解析控制连接中的 PORTPASV 命令。

  • 将PORT命令中的内网IP+端口 替换为 NAT公网IP+对应映射端口

  • 同时动态创建NAT映射规则,确保后续数据连接能正确转换。

示例:

  • 客户端发 PORT 192.168.1.100,48,57

  • ALG改为 PORT 公网IP,某,某 并记住:公网IP:转换后端口 对应内网 192.168.1.100:12345

  • 服务器从20端口连接 公网IP:转换后端口 → NAT根据映射转给内网客户端。

所以理论上主动模式也可以在NAT下工作,前提是NAT设备支持FTP ALG且正确配置。

4. 为什么现实中主动模式在NAT下"几乎必死"?

即使有ALG,主动模式仍被抛弃,原因如下:

问题 说明
客户端防火墙 客户端需要开放一个高端口给服务器主动连接,很多个人防火墙或企业策略禁止入站。
多层NAT 如果客户端背后还有多层NAT(如运营商级NAT),ALG只能处理第一层,后续仍可能失败。
安全风险 允许外部服务器主动连接客户端内部端口,容易被攻击者利用做端口扫描或反弹shell。
配置复杂 需要ALG、NAT策略、防火墙放行,而被动模式几乎不需要客户端侧任何改动。

因此,实际部署中,只要客户端在NAT后,首选被动模式 。主动模式只在双方都是公网IP且防火墙开放时才会用。

《《《《《《《《《《《《《《


四、被动模式(Passive Mode)------ 客户端主动连服务器

为了解决主动模式的"服务器回连客户端"问题,被动模式诞生。

工作过程

  1. 客户端连接服务器21端口(控制连接)不变。

  2. 客户端要求进入被动模式:发送 PASV 命令。

  3. 服务器打开一个 临时高端口 (如50000),并通过控制连接告诉客户端:
    227 Entering Passive Mode (192,168,1,10,195,128)

    表示:请连接我IP 192.168.1.10 的端口 195*256+128 = 50048

  4. 客户端从另一个随机高端口 主动连接 服务器的50048端口 → 数据连接。

  5. 数据传输。

关键特点

  • 数据连接始终由客户端发起,完美穿越客户端防火墙。

  • 服务器不再使用20端口,而是使用动态高端口

被动模式的数据连接是由客户端发起的,服务器处于"被动等待连接"的状态。为了同时服务多个客户端,服务器必须为每个客户端分配一个临时、唯一的端口来监听。如果所有客户端都去连同一个端口。

被动模式的问题(服务器侧)

  • 服务器防火墙需要开放 大量临时端口(如49152--65534)给客户端连接 → 安全策略配置复杂。

  • 容易被攻击者扫描利用。

✅ 被动模式适合:客户端在防火墙/NAT后面,是现在实际中最常用的模式。


五、从安全工程师角度:FTP 的"麻烦"与应对

1. 防火墙为什么"讨厌"FTP?

因为防火墙只能看懂IP/端口,看不懂FTP控制连接里的 PORT / PASV 指令

如果不做特殊处理:

  • 主动模式:防火墙不知道客户端会开放哪个端口等服务器连。

  • 被动模式:防火墙不知道服务器会开放哪个临时端口。

"防火墙不知道X会开放哪个临时端口"中的"临时端口",指的是被连接一方(等待入站连接的一方)**临时打开并监听的端口。

  • 主动模式:客户端临时打开一个端口等服务器连 → 防火墙不知道客户端这个端口号。

  • 被动模式:服务器临时打开一个端口等客户端连 → 防火墙不知道服务器这个端口号。

    至于发起连接的一方使用的源端口,对防火墙来说不关键(通常是随机的,且出站连接默认允许)。

数据连接中,谁是"被连接方"(监听方)

模式 被连接方(监听端口) 发起连接方(使用随机源端口)
主动模式 客户端(PORT命令指定) 服务器(从20端口)
被动模式 服务器(PASV响应指定) 客户端(随机高端口)

关键 :被连接方需要提前开放一个端口并处于LISTEN状态,才能接受对方的连接请求。


》》》》》》》》》》》》》》》》》》》》》》

FTP主动被动模式防火墙的处理

一、先明确三种防火墙/安全设备的位置

  1. 客户端防火墙:运行在客户端主机或客户端网络出口(如家用路由器)。

  2. 服务器防火墙:运行在FTP服务器主机或服务器网络出口。

  3. 中间防火墙/安全网关:位于客户端与服务器之间的路径上(如企业边界防火墙、NAT设备、IPS)。

在FTP的主动/被动模式讨论中,真正核心的"防火墙问题"通常指的是中间防火墙(尤其是NAT/ALG设备),但客户端和服务器自身的防火墙也会参与。我们分别讲。


二、被动模式:哪个防火墙会出问题?

被动模式下,客户端主动连接服务器临时端口(如50048),客户端发出的是出站连接,客户端的防火墙通常允许出站,那问题在哪?

答案:问题不在客户端防火墙,而在服务器防火墙(或中间防火墙对入站连接的限制)。

详细过程

  1. 服务器打开临时端口50048监听。

  2. 客户端从随机端口12345发起连接 → 目的:服务器50048。

  3. 服务器防火墙 看到:外部客户端IP:12345 → 服务器IP:50048。这是一个入站连接

  4. 服务器防火墙通常默认禁止入站到非标准服务端口(如只允许21、80等)。50048不在白名单内 → 服务器防火墙拦截。

所以被动模式下的"防火墙不知道服务器会开放哪个临时端口"指的是:服务器防火墙需要放行大量临时端口入站,但无法提前知道具体号码。

问题发生在服务器侧入站


三、主动模式:哪个防火墙会出问题?

主动模式下,服务器主动连接客户端临时端口(如3106)。

  • 客户端防火墙看到:外部服务器IP:20 → 客户端IP:3106。这是入站连接

  • 客户端防火墙通常禁止入站 → 拦截。

同时,中间防火墙(如企业边界墙)也可能拦截,因为它看到的是外部主动连接内部一个未预先声明的端口。

所以主动模式的问题主要在客户端防火墙(或中间防火墙对入站连接的限制)。


四、统一对比表(按设备位置)

模式 客户端防火墙问题 服务器防火墙问题 中间防火墙问题
主动模式 需要允许外部服务器(20端口)入站到客户端临时端口 → 通常被拦截 无(服务器主动出站,通常允许) 需要允许外部入站到内部临时端口 → 需ALG动态放行
被动模式 无(客户端出站,通常允许) 需要允许外部客户端入站到服务器临时端口 → 需开放大量高端口或ALG 需要允许内部出站到外部临时端口 → 若严格限制出站目标端口,可能被拦截

核心结论

  • 主动模式的瓶颈在客户端侧入站

  • 被动模式的瓶颈在服务器侧入站

《《《《《《《《《《《《《《《《《《《《《《


FTP相关知识点

一、被动模式是在主动模式之后发明的吗?

是的

  • FTP协议最初版本(RFC 114, 1971年) 只有主动模式,当时网络环境简单,主机都在公网,没有NAT和客户端防火墙。

  • 主动模式的问题:客户端需要开放随机高端口等待服务器连接 → 随着客户端防火墙普及,越来越难以工作。

  • 被动模式 :在RFC 1579(1994年)中正式标准化为"Firewall-Friendly FTP",目的是让FTP能穿越客户端防火墙和NAT

所以顺序是:先有主动模式 → 发现问题 → 发明被动模式


二、既然两种模式都有问题,为什么实际中被动模式用得更多?

因为问题的性质和可控性完全不同

对比维度 主动模式的问题 被动模式的问题
问题发生在哪一侧 客户端侧(需要入站连接) 服务器侧(需要入站连接)
谁控制环境 客户端通常不可控(用户在家、出差、防火墙策略未知) 服务器通常可控(管理员可以配置防火墙开放高端口范围或开启ALG)
解决方案难度 要求每个客户端开放入站端口 → 几乎不可行 管理员配置一次服务器防火墙 → 可行
安全性影响 客户端暴露临时端口给外部 → 安全隐患 服务器暴露临时端口给外部 → 但服务器本身就是对外服务,可以通过端口范围限制+ALG最小化风险

一句话 :被动模式把"麻烦"集中到了服务器侧 ,而服务器是管理员可以掌控的;主动模式把"麻烦"推给了每个客户端,这在现实世界中无法解决。


三、一个典型场景说明

  • 公司内部FTP服务器:管理员可以配置服务器防火墙开放高端口范围(如49152-65534)并开启FTP ALG。外部客户端(任意用户)无论在哪里,都可以用被动模式连接进来。

  • 如果只用主动模式:每个外部用户必须手动配置自己的防火墙开放临时端口,这根本做不到。企业也无法要求所有外部用户配合。

因此,被动模式成为了事实标准,几乎所有现代FTP客户端默认使用被动模式(如FileZilla、WinSCP、curl等)。


FTP考题

题目1(多通道与协议基础)

FTP协议采用控制连接与数据连接分离的多通道模型。下列关于两者特性的描述,正确的是?(多选)

A. 控制连接使用TCP 21端口,由客户端主动发起,整个会话期间保持

B. 数据连接在主动模式下,服务器端的数据端口固定为20

C. 被动模式下,服务器通过PORT命令告知客户端临时数据端口号

D. 无论主动还是被动模式,数据连接在传输完成后立即关闭,但控制连接保持

题目1 答案:A、B、D

  • A正确:控制连接由客户端主动发起(TCP 21),保持会话。

  • B正确:主动模式服务器数据连接源端口固定20(标准规定)。

  • C错误 :被动模式下,服务器通过PASV命令的响应(227报文) 告知客户端临时端口,而非PORT命令(PORT用于主动模式)。

  • D正确:数据连接按需建立,用完即释放,控制连接持续。


题目2(NAT穿越与主动模式故障)

某公司内部用户(IP 192.168.1.100)通过NAT上网,尝试以主动模式访问公网FTP服务器(203.0.113.5)。用户能成功登录并列出目录,但执行下载文件操作时卡住并超时。下列原因分析最准确的是?

A. 服务器防火墙阻止了来自客户端源端口20的访问

B. 客户端发送的PORT命令中包含内网IP 192.168.1.100,服务器无法建立数据连接

C. NAT设备未转换控制连接的端口号,导致服务器无法识别

D. 主动模式下客户端必须开放TCP 20端口入站,但客户端防火墙未放行

题目2 答案:B

  • A错误:服务器主动连接客户端时,源端口为20,但服务器防火墙通常允许出站,问题不在源端口20。

  • B正确 :主动模式客户端发送PORT 192.168.1.100,48,57,服务器收到内网IP后无法路由(除非有FTP ALG改写地址)。能登录列出目录说明控制连接正常,下载超时说明数据连接失败,这是主动模式+NAT的典型故障。

  • C错误:NAT能正常转换控制连接的端口,问题在于应用层载荷未修改。

  • D错误:客户端不需要开放20端口,而是需要开放一个临时高端口(如12345)等待服务器连接。

控制连接为什么能成功建立

控制连接的建立过程:

  1. 客户端(192.168.1.100:12345)发出TCP SYN → 目的:服务器(203.0.113.5:21)。

  2. 数据包经过NAT设备时,NAT会转换网络层的源IP和端口

    • 源IP:192.168.1.100 → 公网IP(如 1.2.3.4)

    • 源端口:12345 → NAT分配的映射端口(如 22345)

  3. 服务器收到的连接请求是:源IP=1.2.3.4,源端口=22345,目的IP=203.0.113.5:21。

  4. 服务器响应时,目标地址是1.2.3.4:22345,NAT再反向转换回192.168.1.100:12345。

所以控制连接能成功,因为NAT在网络层(IP+TCP头)做了完整的双向地址转换。

服务器根本看不到客户端的真实内网IP,只看到NAT后的公网IP。

二、主动模式的数据连接为什么失败?

数据连接建立过程(问题所在):

  1. 客户端通过控制连接发送 PORT 192,168,1,100,48,57(告诉服务器"请连接我的IP 192.168.1.100,端口12345")。

  2. 这条命令是FTP应用层协议的内容 ,普通NAT设备不会修改TCP payload

    • NAT已经修改了IP头(把源IP改为公网IP),但它不会去解析FTP命令并修改里面的IP地址。
  3. 服务器收到PORT命令后,看到的是 192.168.1.100:12345

    • 服务器尝试从自己的20端口主动连接 192.168.1.100:12345

    • 192.168.1.100 是一个私有地址,服务器所在公网无法路由到该地址 → 连接失败。

核心差异

  • 控制连接成功:因为NAT修改了IP头(网络层)。

  • 数据连接失败:因为NAT没有修改FTP命令载荷中的IP地址(应用层)。

总结:
控制连接成功是因为NAT转换了IP头;数据连接失败是因为NAT没有转换PORT命令载荷中的内网IP。两者互不影响,这是应用层网关(ALG)需要额外处理的原因。


题目3(被动模式防火墙策略设计)

某企业对外提供FTP下载服务,采用被动模式。安全管理员希望最小化服务器防火墙暴露的端口,同时保证正常服务。以下哪项策略最合理且符合安全最佳实践?

A. 在服务器防火墙上开放TCP 21及整个临时端口范围(49152--65534)入站

B. 仅开放TCP 21,并启用FTP ALG,由ALG动态放行数据连接

C. 将FTP服务器改为主动模式,并开放客户端侧所有高端口

D. 将FTP服务器置于DMZ,并关闭所有入站防火墙策略

题目3 答案:B

  • A:开放整个临时端口范围风险大,易被扫描利用。

  • B正确:仅开21,启用FTP ALG。ALG动态解析PASV响应中的临时端口,临时放行具体IP+端口,用完即关。最小权限原则。

  • C:改为主动模式要求所有客户端开放入站端口,不可行。

  • D:关闭防火墙策略严重违规。


题目4(FTP ALG工作原理)

关于FTP ALG(应用层网关)在处理被动模式时的行为,下列描述正确的是?

A. ALG会解密SSL加密的FTP控制连接,从中提取PASV响应

B. ALG解析控制连接中的227报文,动态创建防火墙规则允许外部客户端访问服务器临时端口

C. ALG将服务器返回的内网IP地址替换为公网IP,但端口号保持不变

D. ALG只在主动模式下需要,被动模式因为客户端发起连接所以不需要ALG

题目4 答案:B

  • A错误:标准FTP ALG不支持解密SSL/TLS(那是FTPS场景,需要另外配置)。

  • B正确:ALG解析227报文中的IP和端口,动态通知防火墙创建临时放行规则。

  • C错误 :ALG在被动模式下主要处理端口号,若服务器返回内网IP也会替换,但题目强调的是端口动态放行,且C中说端口号保持不变是错误的(ALG可能会修改端口映射)。

  • D错误:主动和被动模式都需要ALG来动态处理。


题目5(综合演进与安全替换)

某公司现用FTP(被动模式)进行文件传输,防火墙开放了TCP 21和被动端口范围10000--11000。近期安全审计指出FTP存在凭据明文传输、端口范围过大等风险。要求在不改变客户端使用习惯的前提下,提升传输安全性。最佳方案是?

A. 将被动端口范围缩小至50000--50005,并启用IP白名单

B. 升级为FTPS(隐式TLS),并保留被动模式,同时在防火墙上开启FTP ALG对加密流量的检测

C. 改用SFTP(SSH文件传输协议),并将防火墙开放端口改为TCP 22

D. 继续使用FTP但强制要求用户使用VPN接入,所有流量走加密隧道

题目5 答案:C

  • A:缩小端口范围略好,但FTP本身明文、认证风险仍在。

  • B:FTPS(隐式TLS)加密控制连接后,传统ALG无法解析227报文,防火墙无法动态开放数据端口,需要改为显式TLS或固定端口范围,实施复杂且兼容性差。

  • C正确:SFTP基于SSH,单通道(22端口),天然加密、无需额外端口范围、防火墙策略简单,是FTP的理想替代。虽然客户端需要改用SFTP客户端(如FileZilla已支持),但用户习惯变化小。

  • D:VPN+传统FTP可以加密传输,但增加了VPN部署和运维成本,且仍保留明文认证路径(若VPN内部有嗅探)。相比SFTP不是最优。


被动模式


防火墙下 FTP 主被动差异与局限

一、主动模式的根本局限性(为什么它"先天不足")

主动模式要求服务器主动连接客户端,客户端必须开放一个临时端口并监听。问题在于:

  1. 客户端防火墙默认拦截入站连接

    个人防火墙、家用路由器、企业边界墙默认策略都是"禁止外→内"。主动模式恰恰需要外→内。

  2. NAT环境下几乎不可行(除非ALG改写PORT命令)

    客户端发送PORT 192.168.x.x:临时端口,服务器收到私有地址无法路由。即使NAT设备支持FTP ALG,也需要额外配置,且多层NAT会失败。

  3. 客户端不可控

    无法要求每个用户去配置防火墙、开启端口转发、关闭安全软件。

结论 :主动模式在现实网络环境中(99%的客户端都在防火墙/NAT后)可用性极低

二、被动模式为何成为事实标准(它解决了什么)

被动模式把数据连接的方向反过来:客户端主动连接服务器。这带来了:

  1. 客户端无需开放入站端口 → 完美穿越客户端防火墙/NAT。

  2. 服务器侧可控 → 管理员可以配置服务器防火墙开放临时端口范围或启用FTP ALG。

  3. 对客户端完全透明 → 用户无需任何额外操作。

所以被动模式不是没有缺点,而是把"麻烦"集中到了可控的服务器侧,从而成为实际部署的首选。

三、被动模式自身的局限性(它也有问题)

被动模式并非完美,它的局限性包括:

  1. 服务器防火墙需要开放大量临时端口

    如果服务器使用默认临时端口范围(如49152-65534),防火墙必须允许这些端口入站。这会扩大攻击面。

  2. 服务器资源消耗

    每个被动数据连接占用一个临时端口和对应的套接字,高并发时可能耗尽端口资源。

  3. 依然需要ALG或固定端口范围才能与防火墙友好

    没有ALG时,管理员只能手动开放一个大的端口范围(如10000-11000),不够精细。有ALG则能动态放行,但ALG需要设备支持且正确配置。

  4. 控制连接仍明文

    用户名、密码、命令都是明文,容易被嗅探。这是FTP本身的缺陷,与主动/被动无关。

被动模式的局限性主要体现在服务器侧的安全管理复杂度,以及FTP协议自身的明文风险

四、为什么"被动模式在主动模式之后出现"依然更常用?

历史顺序:

主动模式(RFC 114, 1971)→ 互联网发展,客户端防火墙/NAT普及 → 主动模式失效 → 被动模式(RFC 1579, 1994)被发明来解决客户端入站问题。

被动模式虽然带来了服务器侧的新问题,但问题的可解决性不同:

  • 主动模式的问题在客户端侧 → 几乎无解。

  • 被动模式的问题在服务器侧 → 管理员可配置端口范围、启用ALG、限制访问源IP等。

因此,即使被动模式也有局限,它仍然是实际环境中最可行的方案。

五、一句话终极总结(考场答题用)

主动模式要求客户端开放入站端口,在防火墙/NAT环境下不可行;被动模式将入站要求转移到服务器侧,虽然需要管理临时端口范围或ALG,但服务器可控,因此成为事实标准。


SFTP

SFTP 是解决 FTP 安全性不足而设计的,是备考中的重点,也是现代企业环境的优先选择。

核心一:架构的本质区别 (SFTP vs. FTP)

传统 FTP 有"控制"和"数据"两条通道,带来防火墙麻烦;而 SFTP 基于 SSH 协议,是全新设计的"文件传输子系统"。它将命令与数据合并进 一条加密的SSH隧道 传输,架构简单且天生安全。

核心二:如何实现"真正"安全

SFTP 的安全依靠 SSH 协议,默认自动实现 端到端加密完整性校验 ,防窃听篡改。它支持更强的 公钥认证(私钥保管在客户端,无需在网络上传输),安全性远超明文密码。

核心三:为何对"防火墙更友好"

这是对比传统 FTP 的关键考点。由于 SFTP 只用一条连接和一个端口(默认 TCP 22),所以:

  • 无需 ALG:防火墙无需 ALG 动态解析命令开放数据端口。

  • NAT 无障碍:无需处理被动模式端口范围等复杂问题,策略简单。

  • 策略简单:仅需放行"目的地址:TCP 22"的出站规则,配置方便安全。

维度 FTP (文件传输协议) SFTP (SSH文件传输协议)
核心架构 独立协议,双通道 (21控制 + 20数据) 基于 SSH 的子系统,单通道
安全性 明文 传输,极度不安全 全程加密 (命令+数据)
防火墙/NAT 复杂 (需开放数据端口或配置ALG) 简单 (仅放行TCP 22)
认证方式 用户名/密码 (明文传输) 公钥认证 / 加密后的密码
默认端口 TCP 21 / 20 TCP 22 (与SSH共用)
标准化时间 1970年代 1990年代后期

核心四:SFTP 的局限性

  1. 速度略慢:加密解密带来额外开销,传输速度不如明文 FTP。

  2. 密钥管理难:在大规模企业环境中,公钥的分发、吊销和审计是巨大挑战。

  3. 配置需谨慎:默认端口 22 易受暴力破解攻击,建议修改或加强防护。

核心五:进阶对比 (SFTP vs. FTPS)

SFTP 主要和另一种安全方案 FTPS(FTP over TLS)对比:

  • FTPS :通过在 FTP 协议上叠加 SSL/TLS 加密实现安全,但 继承了 FTP 的双通道、防火墙不友好和NAT麻烦问题,常需额外开放端口或依赖ALG。

  • 结论:对于新建项目,SFTP 是更现代、安全且运维简单的首选。


STenlnet

STelnet 和 SFTP 都是基于 SSH 协议的不同应用

一、先明确核心概念:SSH 是什么?

SSH(Secure Shell)是一个加密的网络协议,用于在不安全的网络上安全地访问远程主机。它提供:

  • 加密传输(防窃听)

  • 完整性校验(防篡改)

  • 身份认证(密码或公钥)

SSH 协议本身并不直接提供具体的应用功能 ,而是作为一个安全隧道,承载各种上层应用。

二、STelnet 的本质

STelnet = SSH + Telnet 的"安全外壳"版本

  • Telnet:传统的远程登录协议,明文传输(用户名、密码、命令全暴露)。

  • STelnet :将 Telnet 的交互逻辑(终端会话)放到 SSH 隧道中传输,从而实现加密的远程登录

端口 :SSH 默认监听 TCP 22,STelnet 也使用这个端口,因为 STelnet 就是 SSH 协议中的一个子功能(通常称为 ssh 命令行登录)。

当你执行 ssh user@host 时,实际上就是 STelnet。

特点

  • 单端口(22)、单连接。

  • 提供交互式命令行 shell。

  • 加密、认证、完整性保护。

三、SFTP 的本质

SFTP = SSH + FTP 的"安全文件传输"版本

  • 注意:SFTP 不是 FTP over SSH(那是 FTPS 或 FTP+SSH隧道)。SFTP 是 SSH 协议内部的一个独立的子系统,专门用于文件操作(上传、下载、列目录、删除、重命名等)。

  • 它和 STelnet 共享同一个 SSH 连接,但使用不同的子系统通道。

端口:同样使用 TCP 22(与 SSH 共用)。

特点

  • 单端口、单连接。

  • 文件传输协议,不是交互式 shell。

  • 完全加密,无需额外开放数据端口。

四、STelnet 与 SFTP 的关系图

bash 复制代码
                SSH 协议(TCP 22)
                      │
        ┌─────────────┼─────────────┐
        │             │             │
    STelnet        SFTP         SCP
   (远程登录)    (文件传输)    (简单复制)
  • STelnet:为用户提供远程命令行环境。

  • SFTP:为用户提供安全的文件访问和传输。

  • 两者可以共用同一个 SSH 连接(多路复用),也可以独立建立连接。

五、"sftp=ssh+sftp,stelnet=ssh+telnet"?

这是一种便于记忆的公式化表达,强调:

  • SFTP 不是 FTP 加上 SSH 隧道,而是 SSH 内置的文件传输子系统。

  • STelnet 也不是 Telnet 加上 SSH 隧道,而是 SSH 内置的终端会话功能。

但严格从技术实现看:

  • STelnet 更准确的叫法是 SSH 交互式会话,只是行为上替代了 Telnet。

  • SFTP 是 SSH 的一个子系统,独立于 shell 会话。

SSH的"子系统"是一个为扩展特定服务而设计的"插件"机制。 在这个框架下,STelnet(远程Shell)是SSH的内置核心功能,不属于子系统;而SFTP(文件传输)则是利用这个"插件"机制实现的、最成功的扩展服务。

  • STelnet (SSH交互式会话)

    • 本质 :它是SSH协议中最基础、最核心的功能,主要用于为用户提供一个通用的、交互式的远程Shell环境

    • 与子系统的关系它不属于"子系统"。它不依赖外部程序,而是SSH服务器自身为客户端提供的核心服务。

  • SFTP (SSH文件传输协议)

    • 本质 :它不是一个通用环境,而是一个为特定目的服务 的独立程序(sftp-server)。

    • 与子系统的关系它是SSH子系统的典型代表 。在SSH服务器的配置文件 sshd_config 中,通常可以看到类似 Subsystem sftp /usr/libexec/sftp-server 的配置,正是这行代码将SFTP注册为了一个"子系统"。


非对称加密

一、什么是非对称加密?

非对称加密是一种加密方式,它使用一对数学上关联的密钥:公钥和私钥。

  • 公钥:可以公开分发给任何人。

  • 私钥:必须严格保密,只有所有者知道。

用公钥加密的数据,只能用对应的私钥解密;反过来,用私钥加密的数据(签名),只能用对应的公钥验证。

这与对称加密(只有一个密钥,加密解密都用它)形成对比。

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

场景一:SSH免密登录(客户端私钥,服务器公钥)

  • 公钥在哪? 存在服务器 上(~/.ssh/authorized_keys)。

  • 私钥在哪? 存在客户端 上(~/.ssh/id_rsa)。

  • 公钥用来干什么? 服务器用公钥加密一个随机数(挑战)发送给客户端。

  • 私钥用来干什么? 客户端用私钥解密这个随机数,证明自己持有私钥。

所以在这个场景中,确实是"公钥在服务器,私钥在客户端,公钥用于加密,私钥用于解密"

场景二:HTTPS访问网站(服务器私钥,客户端公钥?不,客户端没有公钥)

HTTPS的核心设计------非对称加密只用来安全地交换一个临时对称密钥,后续大量数据传输改用对称加密

一、证书在哪?

证书存储在服务器上,但在TLS握手过程中会发送给客户端。

  • 服务器配置了证书文件(包含公钥、域名、有效期、签发机构等信息)。

  • 当客户端(浏览器)连接服务器时,服务器会主动把证书发送给客户端。

  • 客户端收到证书后,验证证书是否可信(检查签名、域名、有效期等)。

所以证书的物理存储位置是服务器,但客户端会临时拿到一份副本。

二、客户端用服务器公钥加密一个对称密钥,这是为什么?

因为非对称加密太慢,不适合加密大量数据;对称加密快得多,但需要双方拥有同一个密钥。

TLS握手过程(简化版):

  1. 客户端验证服务器证书后,从证书中取出服务器的公钥

  2. 客户端自己随机生成一个临时的对称密钥(比如 AES 256 密钥,称为"预主密钥")。

  3. 客户端用服务器的公钥对这个对称密钥进行加密,然后发送给服务器。

  4. 服务器用自己的私钥解密,得到这个对称密钥。

  5. 此后,双方都用这个对称密钥加密通信内容(HTTP请求、响应等)。

目的:安全地让客户端和服务器拥有同一个对称密钥,同时利用非对称加密保证这个密钥在传输过程中不会被窃听(只有服务器私钥能解开)。

《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《

二、为什么需要公钥和私钥?为什么不能只有一个密钥?

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

非对称加密在双向通信中的一个关键点:公钥必须属于接收方

《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《


TLS协议

TLS(Transport Layer Security,传输层安全协议)是SSL(Secure Sockets Layer,安全套接层) 的继任者,它是目前互联网上最核心的安全协议之一,专门用于在两个通信应用程序之间提供保密性数据完整性身份认证

简单说,TLS 就是在 TCP/IP 协议栈的传输层(TCP) 和应用层(如 HTTP)之间,插入一个安全层,让原本明文的流量变成加密隧道。

一、TLS 协议要解决什么问题?

在没有 TLS 之前,很多应用层协议(HTTP、FTP、SMTP、Telnet)都是明文传输,存在三大风险:

  1. 窃听:中间人能看到通信内容(比如密码、信用卡号)。

  2. 篡改:中间人可以修改传输中的数据。

  3. 冒充:无法确认对方就是声称的服务器(可能连到钓鱼网站)。

TLS 通过三种核心机制解决这些问题:

  • 加密:混合使用非对称加密(交换密钥)和对称加密(加密数据),防止窃听。

  • 消息认证码(MAC,Message Authentication Code):保证数据在传输过程中未被篡改。

  • 数字证书:通过 CA 签发的证书验证服务器身份,防止冒充。

二、哪些协议/场景会用到 TLS?

TLS 本身不直接提供特定应用功能,而是作为一个安全层被其他协议封装 使用。最常见的形式就是在协议名后面加一个 S(Secure):

协议 原始协议(明文) 加 TLS 后 默认端口 说明
HTTP HTTP(80) HTTPS 443 最典型的应用,保护网页浏览、在线支付等
FTP FTP(21) FTPS 990(隐式)或 21(显式) FTP over TLS,注意不是 SFTP(SFTP 走 SSH)
SMTP SMTP(25) SMTPS 465 邮件发送(提交)
POP3 POP3(110) POP3S 995 邮件接收
IMAP IMAP(143) IMAPS 993 邮件接收(更现代)
LDAP LDAP(389) LDAPS 636 目录服务(如 Active Directory)
RDP RDP(3389) 可启用 TLS 3389 远程桌面,可通过 TLS 加固
Syslog Syslog(514) Syslog over TLS 6514 安全日志传输
数据库 MySQL(3306)、PostgreSQL(5432)等 支持 TLS 原端口 防止数据库连接被嗅探

此外,很多 VPN 协议 也基于 TLS,例如:

  • OpenVPN:默认使用 TLS 进行控制通道加密。

  • DTLS:基于 UDP 的 TLS 变种,用于 VoIP、视频通话等实时通信。


DNS

TCP端口和UDP端口虽然是同一个数字(比如53),但它们是独立且不冲突的。

一、TCP端口和UDP端口是两套独立的"门牌号"

可以把 IP 地址想象成一栋大楼的地址(比如 203.0.113.5)。

大楼里有两套完全独立、互不干扰的"门牌系统":

  • TCP 门牌系统:TCP 端口 21、22、23、53、80、443......

  • UDP 门牌系统:UDP 端口 53、67、68、123、161......

它们共用同一个数字范围(0-65535),但属于不同的协议栈。

所以 TCP 53UDP 53 是两个完全不同的入口,可以绑定给不同的服务,甚至同时使用。

举个例子:

  • 一台服务器可以同时:

    • TCP 53 上监听 DNS 的区域传输(TCP DNS)。

    • UDP 53 上监听普通的域名查询(UDP DNS)。

这两个服务互不冲突,因为客户端请求时会明确指定协议类型(TCP 或 UDP)。

二、为什么 DNS 需要同时使用 TCP 和 UDP?

DNS 设计之初为了效率,默认使用 UDP (无连接,速度快)。

但在某些情况下必须用 TCP

场景 使用协议 原因
普通域名查询(响应 < 512 字节) UDP 53 快速,一个请求一个响应,无连接开销
响应数据过大(如 DNSSEC、大量 TXT 记录) TCP 53 UDP 最大只能传 512 字节,超过后需要用 TCP 分段传输
DNS 区域传输(主从服务器同步) TCP 53 数据量大,需要可靠传输,保证完整性
DNS 安全扩展(DNSSEC) 常用 TCP 53 签名较大,易超 UDP 限制

所以 DNS 协议同时支持两种传输方式,客户端根据情况选择。

相关推荐
AI_Claude_code1 天前
ZLibrary访问困境方案三:Web代理与轻量级转发服务的搭建与优化
爬虫·python·web安全·搜索引擎·网络安全·web3·httpx
楠奕1 天前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
上海云盾-小余1 天前
DDoS 攻击全解析:常见类型识别与分层防御思路
网络协议·tcp/ip·安全·ddos
乾元1 天前
《硅基之盾》番外篇二:算力底座的暗战——智算中心 VXLAN/EVPN 架构下的多租户隔离与防御
网络·人工智能·网络安全·架构
GCTTTTTT1 天前
远程服务器走本地代理
运维·服务器
不做菜鸟的网工1 天前
H3C 本地 Portal + AAA 认证 模拟配置实验
网络协议
剑锋所指,所向披靡!1 天前
Linux常用指令(2)
linux·运维·服务器
做咩啊~1 天前
6.增加一个flat网段
服务器·openstack
W.W.H.1 天前
嵌入式常见的面试题1
linux·网络·经验分享·网络协议·tcp/ip
zmj3203241 天前
CAN + 以太网 + Wi-Fi + BLE + TCP/IP + MQTT +HTTP协议层级
网络·网络协议·tcp/ip