rawansoliman149-netizen/firebreak

GitHub: rawansoliman149-netizen/firebreak

一款通过实测网络可达性来验证 VLAN 与 ACL 分段隔离效果的命令行审计工具。

Stars: 0 | Forks: 0

# 防火带 一款用于审计网络分段的命令行工具——用于验证 VLAN 和防火墙 ACL 边界是否真正拦截了它们 本应拦截的流量,而不仅仅是配置文件中声明它们应该拦截。 ![网络拓扑](https://static.pigsec.cn/wp-content/uploads/repos/cas/7f/7f22bdde69fc57868e88071398d113cab2954dcd3202ba3494965a92a6febee4.svg) ## 问题所在 防火墙配置可能看起来正确,但实际上却是错误的——子网掩码中的拼写错误、 应用到错误接口的规则、已定义但从未真正生效的 ACL。`firebreak` 通过测试网络分段之间真实的 可达性来弥补这一差距,就像攻击者(或 审计员)所做的那样,而不是仅仅盲目相信配置文件中写的内容。 ## 包含内容 - **`firebreak`** — 一个可安装的 CLI 工具,用于从特定网络分段扫描目标主机的端口 并报告实际可达的情况 - **参考网络设计** — 采用 Cisco IOS 风格防火墙/ACL 配置,实现了在默认拒绝策略下的三个分段 VLAN(Management、Users、DMZ) - **强化前后审计** — 在原始的 扁平、宽松状态下审计相同的参考网络,并与强化后的版本进行对比,提供 量化的结果 - **完整的测试覆盖** — 针对扫描逻辑的单元测试,使用了 mock,因此 无需实际网络环境即可瞬间运行 ## 安装 ``` pip install -e . ``` 这会注册 `firebreak` 命令。 ## 使用方法 ``` firebreak 10.10.10.5 --ports 22,80,443,3389 ``` ``` Scanning 10.10.10.5 (4 port(s))... Scan complete. 0 open port(s) found: none ``` 端口参数接受单个端口、范围或以逗号分隔的混合形式: ``` firebreak 10.10.10.5 --ports 22,80,8000-8010 ``` **请仅在你拥有或获得明确测试授权的主机上运行此工具。** ## 结构 ``` firebreak/ ├── firebreak/ Installable Python package │ ├── __init__.py │ ├── scanner.py Core scan logic │ └── cli.py Command-line interface ├── tests/ │ └── test_scanner.py Unit tests (mocked sockets) ├── configs/ │ ├── router_firewall_BEFORE.cfg Flat, permissive reference network │ └── router_firewall.cfg Segmented, hardened reference network ├── results/ │ └── verification_results.md Audit results: before vs. after ├── assets/ │ └── topology.svg Network diagram ├── docs/ │ └── design.md Design rationale ├── setup.py ├── LICENSE ├── CODE_OF_CONDUCT.md └── CONTRIBUTING.md ``` ## 参考网络设计 | VLAN | 分段 | 访问策略 | |------|------------|------------------------------------------------------------| | 10 | Management | 仅限 SSH,来自管理员子网;拒绝来自其他位置的访问 | | 20 | Users | 仅允许出站 web/DNS;明确拒绝访问 Management | | 30 | DMZ | 仅暴露 80/443 端口;与内部 VLAN 隔离 | 完整配置:[`configs/router_firewall.cfg`](configs/router_firewall.cfg) 比较基准:[`configs/router_firewall_BEFORE.cfg`](configs/router_firewall_BEFORE.cfg) 设计原理:[`docs/design.md`](docs/design.md) ## 审计结果 从 Users VLAN 对 Management VLAN 的主机运行 `firebreak`: | 指标 | 加固前 | 加固后 | |--------------------------------------------|:---:|:---:| | 可达端口,Users → Management | 6 / 6 | 0 / 6 | | 暴露 Telnet | 是 | 否 | | 在 VLAN 外部可访问的 Management | 是 | 否 | 完整的方法论和输出:[`results/verification_results.md`](results/verification_results.md) ## 运行测试 ``` pip install -e ".[test]" pytest tests/ -v ``` ## 展示技能 防火墙/路由器配置(Cisco IOS 语法)、VLAN 设计、ACL 规则编写、网络分段原则、Python 包设计、 使用 mock 的单元测试、CLI 工具开发。 ## 贡献 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。本项目遵循 [Contributor Covenant](CODE_OF_CONDUCT.md)。 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。
标签:PE 加载器, Python, 安全规则引擎, 插件系统, 数据统计, 文档结构分析, 无后门, 端口扫描, 网络分段, 网络安全验证, 网络审计, 逆向工具