测验 6:防火墙与主机安全
支持的版本:Ubuntu Server 24.04 LTS(主要),Rocky Linux 9(备用) 最后更新:2026 年 9 月 15 日
使用客户端 .10、服务器 .20、独立的管理 NIC 和控制台恢复约定。请先选择答案,再查看说明。
客户端向此服务器发起 SSH 连接。从服务器防火墙的角度看,这是入站、出站还是转发流量?
- A) 转发流量,因为所有远程连接都会使服务器成为路由器
- B) 出站流量,因为服务器会发送响应
- C) 新连接属于入站流量;回复属于该连接,而路由另一台主机的流量才属于转发
- D) 都不是;SSH 会绕过防火墙
显示答案
答案:C
说明:流量方向取决于观测主机和数据包路径。此处的服务器是目标端,而不是路由器。有状态的回复处理也解释了为什么在拒绝新连接时,旧 SSH 连接仍可能保持。此实验不需要更改 NAT 或转发设置。
UFW 已有一条范围较广的 SSH 允许规则。只添加一条允许来自
.10的规则,就能将访问限制到.10吗?- A) 不能。已有的较宽范围允许规则仍然有效;应检查规则顺序和更早的自定义规则,再按课程所述添加限定范围的允许规则,然后添加针对相同端点的拒绝规则
- B) 可以。任何较新的规则都会自动删除较早的规则
- C) 可以,只要规则注释包含“secure”
- D) 只有同时启用 firewalld 才可以
显示答案
答案:A
说明:较窄的允许规则是追加规则,不会撤销已有规则。课程会在拒绝同一实验 NIC/目标/端口的流量前,分别插入 TCP 22 和 8000 的客户端允许规则。这样就能独立移除 HTTP 权限,不影响 SSH。自定义 before.rules 仍可能影响结果,因此应检查实际规则归属和更早的处理逻辑。使用两个相互竞争的管理器只会增加推理难度,并不会提高安全性。
关于课程中的 UFW 规则变更和清理,哪项说法正确?
- A) 这些规则只在运行时有效,十分钟后会过期
- B) 使用记忆中的旧规则编号删除规则总是准确的
- C) 即使课程开始前 UFW 已启用,清理时也必须禁用 UFW
- D) 规则会保存并应用;应使用确切且成功添加的规则规格进行删除,并且只有课程启用了原本未启用的 UFW 时,才在清理时恢复为未启用状态
显示答案
答案:D
说明:此 UFW 工作流没有 firewalld 那种逐规则的永久/运行时状态区分。规则位置可能改变,而接口/源/目标/协议/端口才定义了目标规则。仅 HTTP 的故障测试应只移除独立的 TCP 8000 允许规则;恢复时需将其插入剩余实验拒绝规则之前。该实验不得移除 TCP 22 允许规则。首次启用防火墙时也需要先检查管理访问:仅保持 NIC 配置不变,并不能保留所有入站服务。
为什么要将 Rocky 实验接口放入一个新的空 firewalld zone?
- A) zone 可避免使用 MAC 地址
- B) 默认或现有 zone 可能已经广泛允许 SSH;专用实验 zone 能更容易建立预期的允许规则,又无需移动管理 NIC
- C) 每个 zone 都会自动阻止所有 ICMP 和 IPv6 流量
- D) zone 让人无需检查源绑定或策略
显示答案
答案:B
说明:空的 NetworkManager connection.zone 会使用默认 zone。已有服务、目标、源绑定、策略和直接规则都可能改变实际的接受行为。应记录活动实验配置文件 UUID 和原 zone(包括空值),并且不要改动管理配置文件。
添加了带有
--timeout=600的 rich rule。重新加载后会怎样?- A) 该仅限运行时的规则会丢失;重新加载时会使用已保存的策略,而接口到 zone 的绑定是另一项独立变更
- B) 超时会自动变为永久规则
- C) 所有 NetworkManager 地址都会被清除
- D) 什么都不会变,因为运行时配置总是覆盖永久配置
显示答案
答案:A
说明:测试规则会在超时后过期,重新加载时也会丢失。要保存规则,需要明确进行永久变更,并将其加载到运行时。重新加载也可能丢弃无关的运行时变更;不要随意使用它,也不要通过 --runtime-to-permanent 复制所有未知状态。如果实验 zone 不再允许新的 SSH 连接,仍需通过控制台恢复。
获准的客户端从
.20:8000收到 HTTP 200。可以支持什么结论?- A) 已测试并拒绝所有未经批准的源
- B) 不可能存在其他范围更广的允许规则
- C) 此客户端在本次测试中访问到了该监听服务;仍需检查策略,并执行任何单独的拒绝测试,才能确认源地址限制
- D) SELinux 允许每个应用读取每个文件
显示答案
答案:C
说明:允许路径测试成功只能支持有限的结论。服务器本机或 localhost 请求不能作为外部客户端被拒绝的测试。应比较监听器、路由、接口/zone 和规则,并如实报告实际测量内容。应将临时 Python 服务器和临时文件从防火墙策略中单独停止/删除。
某文件被故意设置了错误的 SELinux 类型。哪种恢复方式符合课程要求?
- A) 全局禁用 SELinux
- B) 递归授予所有人写权限
- C) 根据每条审计记录生成宽泛的允许策略
- D) 对照该路径预期的上下文,预览
restorecon -n,还原该文件的策略标签,并使用matchpathcon -V验证
显示答案
答案:D
说明:Unix 模式位和 SELinux 上下文是彼此独立的检查项。chcon 会更改当前标签,但不会创建持久化的路径映射。restorecon 使用策略中的文件上下文规则。自定义永久路径可能需要有意添加 semanage fcontext 映射,但临时文件练习不需要这样做。
ausearch没有返回匹配的 AVC,而 Fail2ban 报告封禁数为零。合理的解释是什么?- A) 这两个工具都证明攻击不可能发生
- B) 查询到的记录/计数器为空;实际证据取决于过滤器、时间范围、journal 元数据、权限以及事件是否发生
- C) 在出现错误之前关闭 enforcing 模式
- D) 运行暴力破解循环以产生非零分数
显示答案
答案:B
说明:标签练习并不会故意触发受限访问,因此不保证一定会出现 AVC。Fail2ban 可能确实处于空闲状态,也可能配置有误。应检查实际的 journal 单元、后端/过滤器/动作和启动日志。课程中的可选部分明确不会使用暴力破解,也不会声称已进行实时强制执行测试。
哪种可选软件包配置适用于 Rocky Linux 9?
- A) 记录现有状态;按照发行版指导启用所需的 CRB 前置条件和 EPEL 9;验证候选软件包/签名;只安装所需软件包
- B) 使用任意 EPEL 主版本,并禁用签名检查
- C) 如果 DNF 无法解析依赖,就安装 Ubuntu 软件包
- D) 安装完成后禁用现有 CRB/EPEL,即使其他软件包依赖它们也一样
显示答案
答案:A
说明:EPEL 提供可选软件,CRB 提供依赖项。EL 主版本、软件源身份和来宾架构都很重要。同样的准备步骤也适用于课程 7 中的可选 iftop。禁用软件源并不会撤销已安装的软件包;完整的可选安装回滚需要使用已记录的快照。
- 哪种 Fail2ban 配置和清理方式符合实验边界?
- A) 使用
backend=systemd和猜测的/var/log/auth.log,然后清空所有封禁记录 - B) 复用任何现有的生产 jail,并在不检查的情况下停止它
- C) 验证专用的基于 journal 的 SSH jail 及限定于实验范围的动作,检查状态,只解除列出的课程地址封禁,停止该 jail,删除自己创建的两个文件,然后清理其防火墙 zone
- D) 假定服务处于活动状态就能证明过滤器和防火墙动作有效
显示答案
答案:C
说明:journal 后端使用 journalmatch,而不是 logpath。该动作必须位于实验允许规则之前,并限制在实验接口/zone、.20 和 TCP 22。应测试解析后的配置并检查动作展开结果。恢复误封的确切地址,并在删除 zone 前停止 jail;切勿清空无关防火墙状态。若没有额外证据,应报告已验证配置/启动,而不是已证明攻击检测有效。