CY376 蓝队项目 — pfSense DMZ、Suricata IDS/IPS 以及针对 CVE-2014-6271 的自动化主机加固
CY376:网络监控、安全与审计——期末项目 蓝队 | 塔夸矿业技术大学
作者: Kennedy Kumi Holomah 学号: FCM.41.018.148.23 学生 ID: 9013004623
本项目在完全隔离的 VMware Workstation 实验环境中,构建、加固并监控一个非军事区(DMZ),其中托管着一台面向公众的 Ubuntu/Apache Web 服务器,其后端为 pfSense 防火墙。该项目作为塔夸矿业技术大学 CY376(网络监控、安全与审计)课程的蓝队练习而构建,展示了完整的防御生命周期,而非孤立地展示单一控制措施:分段的网络边界、该边界上的内联检测、针对指定 CVE 的真实利用尝试、自动化修复,以及重新验证修复确实填补了漏洞。
该项目刻意将每一层防御与证据配对,而不仅仅是配置截图:Suricata 的检测被展示为实时捕获一次真实的 Shellshock 漏洞利用尝试;同一 payload 在加固后被证明完全失效;以及在此过程中遇到的那些不易察觉的基础设施问题(硬件卸载设置静默阻止数据包捕获、默认 HOME_NET 作用域静默破坏方向性签名、加固脚本自身的权限锁定反而破坏了它本想保护的服务器)都被作为独立发现记录在案,而非删除了事。
HOME_NET 被正确限定到 DMZ 子网,因此源自 LAN 的攻击流量被当作外部流量处理。scripts/dmz_web_hardening.sh)会修补 Bash、禁用 Shellshock 所依赖的 CGI 处理器、将 SSH 限制为仅 LAN 访问、启用主机防火墙(UFW)和 fail2ban,并锁定 Web 根目录权限。完整报告、证据截图和分析:docs/CY376_DMZ_Report_Kennedy_Kumi_Holomah.pdf。
所有跨网段流量均只经由 pfSense 传输;不存在绕过防火墙的路径。
.
├── README.md
├── .gitignore
├── scripts/
│ └── dmz_web_hardening.sh # DMZ Web 服务器主机加固脚本
├── docs/
│ └── CY376_DMZ_Report_Kennedy_Kumi_Holomah.pdf # 完整项目报告
└── evidence/
└── figure01_lab_topology.png ... figure11_wazuh_dashboard.png
# 报告中的 11 张带标题截图,编号与
# docs/CY376_DMZ_Report_*.pdf 中使用的图号一致
scripts/dmz_web_hardening.sh 针对 DMZ Ubuntu/Apache 主机。该脚本可安全地重复运行:它接触的每个配置文件都会先被备份(.bak-YYYYmmdd-HHMMSS 后缀),并且所有操作都会记录到 /var/log 下的一个带时间戳的文件中。
# 在 DMZ Web 服务器上执行
sudo bash scripts/dmz_web_hardening.sh
运行之前,请检查脚本顶部的 CONFIG 部分(LAN 子网、HTTP/HTTPS 端口),使其与您自己的拓扑相匹配。
脚本执行的操作:
mod_cgi/mod_cgid(彻底移除 Shellshock 攻击面),并锁定 Web 根目录的所有权/权限。脚本结束时将打印一份完成摘要,每个步骤的详细信息见报告。
完整讨论请参见报告第 6 节(分析与建议)。
| 主机 | 角色 | 接口 / VMnet | IP 地址 |
|---|
| pfSense | 防火墙 / 路由器 | WAN (em0) | 192.168.248.138 (DHCP, NAT) |
| pfSense | 防火墙 / 路由器 | LAN (em2) | 192.168.20.1/24 |
| pfSense | 防火墙 / 路由器 | DMZ (em1) | 192.168.10.1/24 |
| Kali Linux | 攻击机 | VMnet4 (LAN) | 192.168.20.102 |
| LAN 客户端 | 常规 LAN 主机 | VMnet4 (LAN) | 192.168.20.100 |
| DMZ Web 服务器 | 目标 / 受保护资产 | VMnet3 (DMZ) | 192.168.10.10 |
| Wazuh 管理器 | SIEM / 日志平台 | VMnet4 (LAN) | 192.168.20.103 |
| 测试 | 加固前 | 加固后 |
|---|
| Shellshock 漏洞利用尝试 | Payload 被接受;Suricata 触发警报(SID 2022028) | HTTP 404 — CGI 处理器已移除 |
| 从 LAN(Kali)SSH | 可用,无限制 | 可用,限制为 192.168.20.0/24 |
| Web 根目录访问 | 提供默认内容 | 加固期间短暂出现 403,随后恢复 |
| 自定义 Suricata 丢弃规则 | 不适用 | 确认命中时主动阻断 |