介绍
报表应用从另一个 PostgreSQL 数据库读取合成商店订单。External Probe 目前也能访问该数据库。你需要关闭非预期连接路径,同时保持报表页面可用。
本挑战从独立环境开始。请把引导实验中练习过的连接探测、路由查看与有序 Gateway 规则,迁移到不同的地址图和数据库端口。
保护报表数据库
当前情况
打开 Order Page,查看报表应用的订单、网络图与实时连接观察。Report Client 是合法应用节点,External Probe 代表非预期客户端,Gateway 控制它们的转发流量。各容器的网络命名空间独立,但共享同一个实例内核。
范围
只修改运行中的 Gateway 的 LAB_FORWARD 链。不要更改路由、地址、凭据、数据库设置、应用代码或服务。父链 FORWARD 已接好,并会拒绝未匹配的流量。规则只需在本次实验会话中有效,不涉及重启持久化。
| 来源 | 目的地 | 要求 |
|---|---|---|
Report Client 172.29.10.40 |
数据库 172.29.20.15:5544 |
允许真实 PostgreSQL 读取 |
External Probe 172.29.10.50 |
数据库 172.29.20.15:5544 |
阻断新的 TCP 连接 |
| 两个客户端 | 公共状态 172.29.20.15:8001 |
允许 |
客户端的下一跳为 172.29.10.254,数据库通过 172.29.20.254 返回。固定连接信息是用户 shopapp、密码 training-only、数据库 shop、表 orders,列为 id 和 item。tcp-probe ADDRESS PORT、ip route get ADDRESS、psql 与 curl 的用法和之前相同。报表应用使用相同数据库凭据。
规则字段参考:-A 追加,-s 匹配来源,-d 匹配目的地,-p tcp 匹配协议,--dport 匹配目的端口,-j 选择动作。-F CHAIN 只清空指定链;-nvL CHAIN 显示数字规则与计数。响应需要连接跟踪。宽泛拒绝若位于精确允许之前,会优先生效。
你的目标
报表数据库必须接受合法客户端,并拒绝 External Probe 的新 TCP 连接,同时保留报表页面与公共状态服务。数据库及其凭据必须保持不变。
验收标准
- Report Client 使用固定凭据,通过
5544端口的 PostgreSQL 读取真实记录。 - External Probe 无法向该端口建立新 TCP 连接。
- External Probe 仍能从
8001收到PUBLIC STATUS OK,报表订单仍能加载。 - 修改后,通过 Order Page 创建的订单
practice-2存在,商品为Green tea。无需报告或截图。
提示
例外规则应该使用哪个来源?
使用真正发起数据库连接的客户端,而非浏览器或 Gateway 的地址。网络图和 ip route get 能帮助确定来源。
为什么合法流量也停止了?
比较首先匹配的规则、目的端口与响应处理。本挑战的数据库端口不同于引导实验。输入有误后可以重建实验专用链。
身份验证失败能证明风险已阻断吗?
密码被拒绝说明已经到达 PostgreSQL。用 TCP 探测检查禁止路径,用真实查询检查允许路径,并单独测试公共状态。
总结
你把网关过滤方法迁移到新的客户端和端口,同时保留数据库支持的报表及公共状态。实际允许与拒绝测试证明结果;保持宽松网关、停止数据库或使用错误密码,都不能满足目标。



