《信息安全原理与技术》期末考点|包过滤规则实例(SMTP)【万字完整版】
《信息安全原理与技术》期末考点|包过滤规则实例(SMTP)【万字完整版】
适配教材:郭亚军《信息安全技术(第4版)》
适用场景:本科期末考试 / 金管局科技岗笔试
内容包含:原理溯源、TCP 三次握手前置铺垫、两张规则表逐行拆解、漏洞原理、修正逻辑、同类易混对比、简答题题库、选择题坑点、画图思路、论述题标准答案、背诵提纲
全文核心:围绕 SMTP 包过滤防火墙经典案例展开,适合直接打印背诵 📄
📑 目录
- 一、前置基础考点(必须先掌握)
- 二、基础版包过滤规则表逐行拆解(原始 D 规则漏洞分析)
- 三、修正版安全规则表逐字段拆解(期末背诵核心)
- 四、全题核心简答题库(按考频排序)
- 五、选择题高频坑点汇总
- 六、论述题完整版标准答案(15 分大题)
- 七、精简背诵版(考前速记)
- 八、同类型考点延伸(举一反三)
- 九、易混淆概念辨析
一、前置基础考点
⚠️ 这部分必须先掌握,否则看不懂后面的 SMTP 包过滤案例!
1.1 包过滤防火墙基本原理
包过滤防火墙(网络层防火墙)是防火墙三大类型里最基础、期末最高频考察的一类:
- 工作层次:OSI 模型的网络层、传输层
- 读取信息:IP 首部与 TCP/UDP 首部信息
- 工作机制:根据预先配置的规则表对 IP 数据包进行匹配,匹配成功就执行预设动作(允许 / 丢弃)
🔑核心规则(选择题、简答题第一大坑):
规则匹配顺序是自上而下、顺序匹配,一旦命中某一条规则就不再向下匹配,末尾一条通常是默认丢弃规则(拒绝所有没有被前面规则放行的流量)——这是本案例一切分析的大前提。
1.2 包过滤能检查哪些字段?
| 可检查字段 | 说明 |
|---|---|
| 源 IP 地址 | 报文来自哪台主机 |
| 目的 IP 地址 | 报文发往哪台主机 |
| 传输层协议 | TCP / UDP / ICMP |
| 源端口号 | 发起方端口 |
| 目的端口号 | 接收方端口 |
💥关键考点:基础简陋包过滤防火墙早期版本不支持读取 TCP 标志位(SYN、ACK、FIN、RST 等)——这就是原始版本 D 规则产生安全缺陷的根源!
支持 TCP 标志位检测的包过滤,属于增强型包过滤,也叫有状态包过滤(状态检测防火墙雏形)。
📌高频辨析题:
- 无状态包过滤:只看包头静态字段,无法区分“主动发起连接的 SYN 包”和“已有连接的应答 ACK 包”
- 有状态包过滤:可以结合 TCP 会话状态、标志位判断报文归属
1.3 TCP 标志位两个核心(本案例只用到 SYN 和 ACK)
| 标志位 | 全称 | 含义 |
|---|---|---|
| SYN | 同步位 | 只有建立新 TCP 连接的发起报文才会携带 SYN 标志,SYN=1 代表请求新建连接 |
| ACK | 确认位 | 除了三次握手第一个 SYN 包之外,后续所有确认报文都携带 ACK=1 |
正常 TCP 三次握手流程:
🎯核心区分一句话:
带 SYN 的包 = 尝试发起新连接;只有 ACK、不带 SYN 的包 = 已有连接的回应报文。
1.4 端口号划分规则(本题高频配套考点)
| 端口范围 | 类别 | 典型服务 |
|---|---|---|
| 0 – 1023 | 公认端口(知名端口) | SMTP25、HTTP80、HTTPS443、FTP21 |
| 1024 – 49151 | 注册端口 | — |
| 49152 – 65535 | 动态 / 私有临时端口 | — |
⚠️答题注意:教材案例里简化表述统一写成
>1023,把 1024 以上全部当作客户端临时端口。这是考题标准简化写法,答题时直接沿用“大于 1023 的高端口为客户端临时端口”即可,不要自行区分 49152 分界,避免和标准答案冲突!
1.5 SMTP 协议基础
- 全称:简单邮件传输协议(Simple Mail Transfer Protocol)
- 功能:负责邮件发送、邮件服务器之间转发邮件
- 传输层:依托TCP
- 固定服务端口:25
通信模型分两种:
- 内网用户(邮件客户端)主动向外网 SMTP 服务器投递邮件
- 外网 SMTP 服务器向内网邮件服务器投递邮件
防火墙部署在内网和外网边界,流量方向定义(⚠️ 绝对不能搞反,表格、简答、画图全部以此为准):
| 方向 | 定义 |
|---|---|
| 入方向 | 数据包从外网(外部)流向内网(内部) |
| 出方向 | 数据包从内网(内部)流向外网(外部) |
二、基础版规则表
📝考察形式:给这张表,要求找出漏洞、说明漏洞原理、写出攻击场景、给出修改方案——期末论述原题!
2.1 原始规则表(存在严重安全缺陷)
| 规则 | 方向 | 源地址 | 目的地址 | 协议 | 目的端口 | 动作 |
|---|---|---|---|---|---|---|
| A | 入 | 外部 | 内部 | TCP | 25 | 允许 |
| B | 出 | 内部 | 外部 | TCP | >1023 | 允许 |
| C | 出 | 内部 | 外部 | TCP | 25 | 允许 |
| D | 入 | 外部 | 内部 | TCP | >1023 | 允许 |
| E | 任何 | 任何 | 任何 | 任何 | 任何 | 丢弃 |
2.2 逐行逐条解析每条规则含义
✅ 规则 A:放行外部访问内网 25 端口
入方向流量,源地址外网、目的地址内网,TCP 协议,目的端口 25 →放行。
含义:允许外部主机主动访问内网 25 端口,即外网的 SMTP 服务器可以向内网邮件服务器发送邮件,满足内网邮件服务器接收外部邮件的业务需求。这条规则本身业务合理,没有漏洞。
⚪ 规则 B:放行内网访问外网高端口
出方向流量,源内网、目的外网,TCP,目的端口 >1023 →放行。
含义:内网主机主动访问外网主机的高端口服务。在本案例 SMTP 场景里属于配套通用放行规则,不属于 SMTP 核心流量,考题里一般不作为分析重点。
✅ 规则 C:放行内网向外发起 SMTP 连接
出方向流量,源内网、目的外网,TCP,目的端口 25 →放行。
含义:允许内网主机向外发起 SMTP 连接,内网用户向外发送邮件、内网邮件客户端连接外网 SMTP 服务器发信。这是SMTP 出站核心业务规则,业务逻辑正确,无漏洞。
🔴 规则 D:漏洞所在行,全题重中之重!
入方向流量,源外网、目的内网,TCP,目的端口 >1023 → 放行
原始规则设计意图:
内网主机向外发起 SMTP 连接时,操作系统会随机分配一个大于 1023 的临时端口作为自身客户端端口;外网 SMTP 服务器收到内网发过来的邮件请求之后,回复应答报文,应答报文的目的端口就是内网这个临时高端口。设计者初衷是放行这一类返回的应答包,保障内网向外发邮件之后能够收到服务器返回的确认报文。
但是!这个原始规则只检查【目的端口 >1023】这一个条件,没有检查 TCP 标志位!
防火墙拿到数据包只能看到:入方向、外网来、去内网、TCP、目的端口 >1023,直接放行。它没有办法区分两件完全不一样的事情:
| 情况 | 流量性质 | 具体报文 |
|---|---|---|
| 情况 1 | ✅ 合法流量 | 内网先发起向外 SMTP 连接,外网服务器返回的ACK 应答包 |
| 情况 2 | 🔴 恶意流量 | 外网攻击者主动构造TCP SYN 包,源地址任意外网地址,目的地址内网主机 IP,目的端口随便填一个大于 1023 的端口,直接向内网发起新连接扫描、入侵 |
因为规则 D 没有 SYN/ACK 校验,只要满足「入、外→内、TCP、目的端口 >1023」,不管包带不带 SYN,全部放行。攻击者就可以利用这条规则穿透防火墙,主动对内网主机高端口进行端口扫描、木马反向连接渗透、漏洞攻击。
⚙️ 规则 E:默认丢弃兜底
所有没有匹配到 A/B/C/D 任意一条的数据包,全部丢弃。这是包过滤标准兜底策略——默认拒绝原则,安全设计的常规做法,本身无问题。
2.3 原始 D 漏洞完整攻击场景(论述题可直接默写)
第一步:合法业务背景
内网用户想要向外发送邮件:内网主机 IP192.168.1.10,随机分配临时端口1025,访问外网 SMTP 服务器203.0.113.5的 TCP 25 端口。连接建立之后,外网服务器回复报文:
源IP:203.0.113.5 源端口:25 目的IP:192.168.1.10 目的端口:1025 TCP标志:ACK这个报文是合法应答,设计者希望放行。✔️
第二步:攻击者构造恶意数据包
源IP:攻击者公网IP(任意) 目的IP:192.168.1.10 目的端口:1025(或任意>1023端口) TCP标志:SYN这个数据包同样满足规则 D 全部匹配项:入方向、外部→内部、TCP、目的端口 >1023。防火墙直接放行这个 SYN 包,等于允许外网攻击者主动向内网主机 1025 端口发起 TCP 连接!
第三步:攻击后果
- 内网主机上如果恰好有监听 1025 端口的木马、后台服务,攻击者就可以建立 TCP 会话,控制内网主机;
- 哪怕没有服务,攻击者也可以批量遍历所有 >1023 端口,对内网做端口扫描,探测内网开放端口,收集内网资产信息,为后续渗透做准备。
🎯一句话总结漏洞本质:
无状态单纯依靠端口过滤,无法区分“会话应答报文”和“外部主动新建连接报文”,把应答通道变成了外部主动入侵内网的通道。
2.4 配套简答设问:为什么不能简单删掉 D 规则?
❌很多同学的答题误区:漏洞是 D 导致的,那直接删掉 D 行不行?
答案:不行!
如果直接删除 D 规则,内网主机向外发起 SMTP 连接之后,外网 SMTP 服务器返回的应答报文(目的端口是内网临时高端口 >1023),没有规则匹配,最终命中 E 默认丢弃规则,应答包被丢掉,TCP 连接无法正常通信,内网用户发邮件这个业务直接失效。
✅ 所以解决方案不是删掉 D,而是给 D 规则增加更多约束条件,缩小放行范围,只放行合法的应答包,拦截外部主动发起的 SYN 新建连接包——这就是修正版 D 规则的设计思想。
三、修正版规则表
📝考题最爱考对比:写出改进后的 D 规则字段、解释每个字段约束的意义、对比新旧 D 差异。
3.1 修正后规则表(期末背诵核心表)
| 规则 | 方向 | 源地址 | 源端口 | 目的地址 | 目的端口 | 协议 | 标志 | 动作 |
|---|---|---|---|---|---|---|---|---|
| D | 入 | 外部 | 25 | 内部 | >1023 | TCP | ACK | 允许 |
📌说明:A、B、C、E 四条规则业务逻辑不变,表格只修改 D 规则,增加源端口、TCP 标志两个校验字段——这是增强型包过滤防火墙,支持解析 TCP 头部标志位。
3.2 修正版 D 规则逐字段拆解(简答踩分点,一个字段一分)
| 序号 | 字段 | 取值 | 约束意义 |
|---|---|---|---|
| 1 | 方向 | 入 | 依旧是外网流向内网的报文,和原来一致 |
| 2 | 源地址 | 外部 | 报文来自外网 |
| 3 | 源端口 | 25 | ⭐报文的源端口必须是 SMTP 服务端口 25。合法应答报文只能来自外网 SMTP 服务器,其服务端口固定 25;攻击者主动发起的扫描包,源端口一般是随机高端口,天然不满足此条件——第一层过滤 |
| 4 | 目的地址 | 内部 | 目标在内网 |
| 5 | 目的端口 | >1023 | 目标端口是内网主机向外发起连接时分配的客户端临时端口,和原来一致 |
| 6 | 协议 | TCP | SMTP 基于 TCP |
| 7 | 标志 | ACK | ⭐报文必须携带 ACK 标志。ACK 标志意味着这是确认应答报文,不是携带 SYN 的新建连接请求报文。SYN 包不会单独携带 ACK 标志;外部想要发起新连接,必须发送 SYN=1 的报文,SYN 报文无法匹配本条规则 |
| 8 | 动作 | 允许 | 同时满足以上全部条件才放行 |
3.3 合法流量匹配演示(内网向外发邮件正常流程)
3.4 恶意攻击流量拦截演示
场景一:攻击者使用随机高端口发起 SYN
攻击者发包:
源IP:攻击者公网IP 源端口:30000(随机高端口) 目的IP:192.168.1.10 目的端口:1026 TCP标志:SYN逐条对照 D 规则:源端口不是 25、TCP 标志是 SYN 不是 ACK→ 不匹配 D → 继续向下匹配,没有其他规则匹配 → 命中 E 默认丢弃规则 →数据包直接丢弃,攻击无法建立连接。🛡️
场景二:攻击者刻意伪造源端口 = 25(经典坑点辨析题!)
源IP:攻击者公网IP 源端口:25(伪造) 目的IP:192.168.1.10 目的端口:1026 TCP标志:SYN此时源端口满足条件,但TCP 标志字段是 SYN,不满足 ACK 条件→ 依旧无法匹配 D 规则 →被 E 丢弃。🛡️
⚠️经典坑点辨析:攻击者伪造源端口 25 能不能绕过?
答案:不能!因为标志位是 SYN,D 只放行 ACK 包。想要匹配 D,必须同时满足「源端口 25 + ACK 标志」两个条件,缺一不可。攻击者主动发起新连接,报文一定带 SYN,天然无法满足 ACK 约束。
3.5 修正方案的边界说明(拔高论述考点,拉开分数)
这个方案属于简易状态控制思想,但严格来说它还不是完整的状态检测防火墙:
- ✅ 它只适配SMTP 这个固定服务端口场景:服务端固定 25,应答包源端口固定 25;
- ✅ 如果换成其他服务,比如HTTP 80,外网服务器应答源端口固定 80,这套思路可以复用;
- ❌ 但如果是P2P、动态端口服务,应答源端口不固定,依靠“源端口+ACK”的静态规则就不够用——这时候才需要真正的状态检测防火墙维护一张连接状态表,记录已建立的五元组会话,只放行会话内返回报文。
📌 期末考题限定 SMTP 场景,这套修改方案就是标准答案,答题不用拓展到状态表,除非题目额外提问“对比状态检测防火墙”。
四、简答题库
按考试频率排序,踩分点已标注!
简答 1:简述原始 SMTP 包过滤 D 规则存在什么安全缺陷?(6 分)
答:原始 D 规则为入方向,放行外部去往内部、TCP、目的端口大于 1023 的数据包,不校验 TCP 标志位与源端口。
该规则设计目的是放行内网向外发起 SMTP 连接后外网服务器返回的应答报文;但规则无法区分报文是已有连接的 ACK 应答包,还是外部攻击者主动发起的 SYN 新建连接包。
攻击者可以发送 SYN 数据包,目的端口为内网大于 1023 的端口,直接匹配 D 规则穿透防火墙,对内网主机高端口进行端口扫描、主动建立 TCP 连接实施入侵攻击,防火墙丧失边界防护能力。
简答 2:如何修改 D 规则消除漏洞?写出修改后的规则并解释每一项约束的作用(8 分)
答:修改后的 D 规则:
入方向,源地址外部,源端口 25,目的地址内部,目的端口 >1023,TCP 协议,TCP 标志 ACK,动作允许。
约束作用:
- ①源端口固定 25:限定报文只能来自外网 SMTP 服务端口,只有 SMTP 服务器的应答报文源端口才是 25;
- ②TCP 标志为 ACK:仅放行应答确认报文,拒绝携带 SYN 标志、用于新建 TCP 连接的报文,阻止外部主动发起连接;
其余字段保留原有业务需求,保证内网向外发送 SMTP 邮件时,外网服务器的应答报文可以正常通行。
简答 3:包过滤防火墙规则匹配原则是什么?本题 E 规则作用?(4 分)
答:包过滤规则自上而下顺序匹配,数据包命中第一条符合条件的规则就执行对应动作,不再继续向下匹配;E 是默认丢弃规则,属于最小权限安全策略,所有没有被前面规则显式允许的流量全部丢弃,防止意外流量放行。
简答 4:为什么单纯依靠端口号做包过滤不安全?(5 分)
答:端口只是标识服务的数字标识,无状态包过滤仅检查端口,无法识别 TCP 会话状态,不能区分数据包是主动发起连接的 SYN 请求包,还是已经建立连接之后的 ACK 响应包。
攻击者可以构造匹配端口条件的 SYN 包穿透防火墙,主动向内网发起连接,产生安全漏洞。增加 TCP 标志位校验可以弥补该缺陷。
简答 5:SMTP 协议传输层、端口、通信方向在本案例分别是什么?(3 分)
答:SMTP 使用TCP 协议,知名端口25;两种合法流量方向:
- 外网→内网 25(外部向内网邮件服务器发信)
- 内网→外网 25(内网向外发送邮件)
简答 6:能不能通过只增加 ACK 标志,不增加源端口 25 约束来修改 D?(拔高辨析题)
答:不安全。
如果只加 ACK,不限制源端口,那么外网任意端口发来的 ACK 包只要目的端口 >1023 就放行。攻击者可以构造ACK 扫描包,对内网高端口进行 TCP ACK 扫描,探测防火墙策略和内网主机存活状态,依然存在信息泄露风险。
因此源端口=25 是必要约束,缩小放行来源范围,只信任 SMTP 服务器端口返回报文。
五、选择题高频坑点汇总
选择判断必考!每一条都是出题人精心设计的陷阱 🕳️
| 序号 | 陷阱表述 | 正误 | 正确理解 |
|---|---|---|---|
| 坑 1 | 规则匹配是找到所有匹配规则再执行动作 | ❌ 错 | 顺序匹配,命中即停止 |
| 坑 2 | 修正后的 D 允许外部主机主动发起 SMTP 连接到内网高端口 | ❌ 错 | D 只放行ACK 应答包,SYN 新建连接无法通过 |
| 坑 3 | 原始 D 漏洞根源是开放了 25 端口 | ❌ 错 | A 规则开放 25 入方向是业务需要,漏洞根源是 D 没有 TCP 标志校验 |
| 坑 4 | 大于 1023 端口是服务器服务端口 | ❌ 错 | 考题设定是客户端临时端口 |
| 坑 5 | ACK 报文一定不会携带 SYN | ✅ 对 | 三次握手第一个包只有 SYN,没有 ACK |
| 坑 6 | 删除 D 规则可以修复漏洞,业务不受影响 | ❌ 错 | 删除 D 会导致内网向外发邮件收不到应答,SMTP 出站业务中断 |
六、论述题完整版标准答案(15 分大题)
期末大题 15 分原题,直接默写!✍️
题目:某边界防火墙配置 SMTP 包过滤规则如下表(原始表),请分析规则安全问题、攻击原理、给出改进规则并说明改进思路。
标准答案:
1. 业务梳理
该防火墙用于内网外网边界:A 放行外网访问内网 25 端口,接收外部邮件;C 放行内网访问外网 25 端口,内网向外发送邮件;原始 D 规则意图放行外网 SMTP 服务器返回给内网临时高端口的应答报文;E 默认丢弃。
2. 安全缺陷
原始 D 规则仅校验「入方向、外→内、TCP、目的端口 >1023」,缺少源端口与 TCP 标志校验,防火墙无法区分 SYN 新建连接包和 ACK 应答包。外部攻击者构造目的端口 >1023 的SYN 数据包,即可匹配 D 规则穿透防火墙,主动对内网主机高端口发起 TCP 连接,开展端口扫描、渗透入侵,破坏内网安全边界。
3. 改进方案
修改 D 规则,新增源端口=25、TCP 标志 ACK两个校验条件。新 D 规则:
入,外部,源端口 25,内部,目的端口 >1023,TCP,ACK,允许。
4. 改进原理
合法应答报文来自外网 SMTP 服务器,源端口固定 25,并且是 TCP 确认报文,携带 ACK 标志,不属于新建连接 SYN 包。增加约束之后,只有内网主动向外发起 SMTP 连接对应的应答报文能够放行;外部想要主动发起新连接必须发送 SYN 包,无法匹配本条规则,流量被末尾默认丢弃规则拦截。既保留内网向外发送邮件的业务功能,又封堵外部主动向内网高端口发起连接的攻击通道。
5. 补充说明
该改进属于增强型包过滤,利用 TCP 标志区分会话请求与响应,是状态检测防火墙设计思想的简单实现。
七、精简背诵版(考前速记)
🎒 考前速记,适合进考场前最后看一遍!
SMTP 基于TCP 25 端口。
【原始漏洞】原始 D 规则为入方向放行外部到内部 TCP 目的端口 >1023 报文,设计目的放行内网向外发邮件的返回应答包,但规则不检查源端口和 TCP 标志,无法区分 SYN 新建连接包和 ACK 应答包,外部攻击者发送 SYN 包就能匹配 D,主动对内网高端口扫描入侵,存在安全漏洞。
【修正方案】改进后的 D 规则增加约束:入方向、源端口 25、TCP 标志 ACK,只放行外网 SMTP 服务器针对内网 SMTP 出站连接返回的 ACK 应答报文;外部主动发起连接需要 SYN 标志,无法匹配该规则,被默认丢弃规则拦截。
【配套原则】包过滤规则自上而下顺序匹配,匹配即停止,E 规则为默认丢弃,遵循最小权限安全策略。单纯端口过滤属于无状态过滤,无法识别 TCP 会话状态,增加 TCP 标志位校验提升安全性。
八、同类型考点延伸(举一反三)
举一反三,防止换案例出题!🔄
这套分析范式完全一致,考试可以换HTTP(80 端口)复刻考察:
| 对比项 | SMTP 案例 | HTTP 迁移案例 |
|---|---|---|
| 原始漏洞规则 | 入、外→内、TCP 目的端口>1023,允许 | 完全一样 |
| 漏洞原理 | 无 SYN/ACK 校验,SYN 包可穿透 | 一模一样 |
| 修正 D 规则 | 入、外部、源端口25、内部、>1023、TCP、ACK,允许 | 入、外部、源端口80、内部、>1023、TCP、ACK,允许 |
答题话术、漏洞描述、得分点完全通用,只是端口数字替换——复习的时候对照 SMTP 案例迁移理解即可。
九、易混淆概念辨析
名词解释题高频考点!
① 无状态包过滤
只读取 IP、TCP 头部静态字段(地址、端口、协议),不记录 TCP 会话状态,无法区分 SYN/ACK。本案例原始版本就是无状态包过滤。
- 优点:速度快,开销小
- 缺点:安全能力弱,存在本案例漏洞
② 有状态(状态检测防火墙)
维护一张会话连接表,记录五元组、连接状态,只有已经存在会话对应的返回报文才放行,不依赖固定源端口 + ACK 静态规则,能力更强。
⚠️ 注意:SMTP 修正版 D 是静态模拟状态控制,不是完整状态检测!
③ 应用层网关(代理防火墙)
和包过滤区分,工作在应用层,不是本案例考点,但选择题经常拿来做干扰项。
📌 写在最后
这道 SMTP 包过滤案例是包过滤防火墙的经典母题,出题角度覆盖选择、简答、论述、画图全题型。核心把握三条主线:
- 规则匹配机制:自上而下、命中即止、默认丢弃兜底;
- 漏洞本质:无状态端口过滤无法区分 SYN(新建连接)与 ACK(会话应答);
- 修正思想:源端口 25 + ACK 标志双重约束,静态模拟状态控制。
把这两张规则表(原始版 + 修正版)的每一个字段含义吃透,无论题目怎么变形(换端口、换协议、换方向),都能按同一套分析范式稳拿满分!💯
觉得有用的话,点赞 👍 收藏 ⭐ 加关注 ➕,持续更新信安期末考点系列,祝大家期末高分通过!🎉