rawansoliman149-netizen/firebreak
GitHub: rawansoliman149-netizen/firebreak
一款通过实测网络可达性来验证 VLAN 与 ACL 分段隔离效果的命令行审计工具。
Stars: 0 | Forks: 0
# 防火带
一款用于审计网络分段的命令行工具——用于验证
VLAN 和防火墙 ACL 边界是否真正拦截了它们
本应拦截的流量,而不仅仅是配置文件中声明它们应该拦截。

## 问题所在
防火墙配置可能看起来正确,但实际上却是错误的——子网掩码中的拼写错误、
应用到错误接口的规则、已定义但从未真正生效的 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, 安全规则引擎, 插件系统, 数据统计, 文档结构分析, 无后门, 端口扫描, 网络分段, 网络安全验证, 网络审计, 逆向工具