一个从头开始构建、纯 Python 编写的 HTTP/2 攻击模拟与防御实验室。
模拟针对脆弱服务器的 3 种真实 HTTP/2 攻击,然后展示加固服务器上的 5 层防御如何全部阻止这 3 种攻击。
| 攻击 | 技术 | 影响 |
|---|---|---|
| Slowloris | 打开流,从不发送 END_STREAM | RAM 耗尽 |
| Rapid Reset | RST_STREAM 洪泛(CVE-2023-44487) | CPU 耗尽 |
| HPACK Bomb | 每个请求 300+ 个头部 | 内存分配攻击 |
| 防御 | 方法 |
|---|---|
| Slowloris Watchdog | 后台线程杀死空闲连接 |
| Rapid Reset Ban | 10 次 RST 后永久禁止 IP |
| Header Flood Block | 头部超过 25 个则重置流 |
| Rate Limiter | 每分钟 60 次请求后禁止 IP |
| Stream Cap | MAX_CONCURRENT_STREAMS = 20 |
基础服务器 → 0/3 已拦截(0%) 加固服务器 → 3/3 已拦截(99%)
pip install h2
# Terminal 1
python3 basic_server.py
# Terminal 2
python3 hardened_server.py
# Terminal 3
python3 compare.py