天罡是一款自研可扩展的边缘 WAF 和反向代理,基于 Workerman + pfinal-asyncio 的高并发混合架构。 目标:提供企业级的自托管防护能力(规则管理、动态挑战、误报回放与审计),便于灰度启用与规则热更新。
- 高性能代理:基于 Workerman 的事件驱动模型
- 混合架构:核心功能同步 + 后台任务异步
- 异步规则引擎:使用 pfinal-asyncio 进行并发检测
- Web管理界面:现代化响应式管理控制台
- 规则热加载:支持动态更新检测规则
- 事件采样与审计:完整的日志记录和监控
- 可扩展插件机制:类似 SafeLine 的插件系统
- 离线模式:无需数据库即可运行
边缘(TLS 终结)→ 天罡(数据平面)→ 后端(Webman/应用)
composer installcp env.example .env
# 编辑 .env 文件配置数据库和 Redis(可选,支持离线模式)离线模式:如果不配置数据库,系统会自动进入离线模式,使用文件存储和硬编码的默认账户。详见 离线模式文档
php start.php start# 访问登录页面
curl http://localhost:8787/admin/login
# 登录管理界面(需要认证)
curl http://localhost:8787/admin
# 访问API接口
curl http://localhost:8787/api/dashboard
# 健康检查
curl http://localhost:8787/health访问 http://localhost:8787/admin/login 登录管理界面:
- 现代化登录界面:基于Figma设计的响应式界面
- 多用户支持:管理员、WAF管理员、天罡管理员
- 会话管理:安全的Cookie会话和自动过期
- 记住我功能:支持长期登录状态
- 实时监控:请求统计、拦截率、响应时间
- 安全报告:威胁分析、攻击统计
- 性能分析:系统状态、资源使用
- 数据导出:支持JSON、CSV、XML格式
离线模式(未配置数据库时):
| 用户名 | 密码 | 说明 |
|---|---|---|
admin |
admin123 |
管理员账户 |
waf |
waf2024 |
WAF管理员 |
tiangang |
tiangang2024 |
天罡管理员 |
数据库模式(配置数据库后):
- 运行
php database/install.php初始化数据库 - 默认账户同上,但存储在数据库中
- 可以通过数据库管理用户账户
💡 提示:生产环境应配置数据库,不要依赖硬编码账户。详见 离线模式文档
# 运行单元测试
php tests/run_unit_tests.php
# 运行集成测试
php tests/run_all_tests.php
# 性能基准测试
php tests/performance/benchmark.php
# 生成测试报告
php tests/coverage_report.php# 测试WAF规则
curl "http://localhost:8787/?test=<script>alert('xss')</script>"
# 测试SQL注入检测
curl "http://localhost:8787/?id=1' OR '1'='1"
# 测试频率限制
for i in {1..10}; do curl http://localhost:8787/; done| 特性 | 同步核心 | 异步后台 | 混合架构 |
|---|---|---|---|
| 稳定性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 性能 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 可维护性 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
| 扩展性 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
- 混合架构:核心功能同步处理,后台任务异步执行
- 高性能:基于Workerman事件驱动模型
- 异步检测:使用pfinal-asyncio进行并发检测
- 离线模式:无需数据库即可运行
- 现代化UI:响应式Web管理界面
天罡WAF/
├── 🚪 入口层
│ ├── start.php # 服务器启动入口
│ └── app/waf/ # WAF核心模块
│ └── TiangangGateway.php # 核心网关
│
├── 🛡️ WAF核心层
│ ├── app/waf/middleware/ # WAF中间件
│ │ └── WafMiddleware.php
│ ├── app/waf/detectors/ # 检测器
│ │ ├── QuickDetector.php # 快速检测
│ │ └── AsyncDetector.php # 异步检测
│ ├── app/waf/core/ # 核心组件
│ │ ├── WafResult.php # 检测结果
│ │ ├── DecisionEngine.php # 决策引擎
│ │ └── CoroutinePool.php # 协程池
│ ├── app/waf/logging/ # 日志系统
│ │ ├── AsyncLogger.php # 异步日志
│ │ └── LogCollector.php # 日志收集
│ ├── app/waf/monitoring/ # 监控系统
│ │ └── MetricsCollector.php
│ ├── app/waf/performance/ # 性能分析
│ │ └── PerformanceDashboard.php
│ ├── app/waf/plugins/ # 插件管理
│ │ ├── PluginManager.php
│ │ └── WafPluginInterface.php
│ ├── app/waf/proxy/ # 代理转发
│ │ ├── ProxyHandler.php
│ │ └── BackendManager.php
│ ├── app/waf/config/ # 配置管理
│ │ └── ConfigManager.php
│ ├── app/waf/cache/ # 缓存管理
│ │ └── AsyncCacheManager.php
│ ├── app/waf/database/ # 数据库管理
│ │ └── AsyncDatabaseManager.php
│ └── app/waf/optimization/ # 性能优化
│ └── PerformanceOptimizer.php
│
├── 🌐 管理界面层
│ ├── app/admin/controller/ # 管理控制器
│ │ ├── AuthController.php # 认证控制器
│ │ ├── DashboardController.php # 仪表板控制器
│ │ ├── WafController.php # WAF管理控制器
│ │ ├── RuleController.php # 规则管理控制器
│ │ └── LogController.php # 日志管理控制器
│ ├── app/admin/routes/ # 管理路由
│ │ └── AdminRoutes.php
│ ├── app/admin/middleware/ # 认证中间件
│ │ └── AuthMiddleware.php
│ └── app/admin/helpers/ # 辅助函数
│ └── helpers.php
│
├── 🔌 插件系统
│ └── plugins/waf/ # WAF规则插件
│ ├── SqlInjectionRule.php
│ ├── XssRule.php
│ ├── RateLimitRule.php
│ └── IpBlacklistRule.php
│
└── ⚙️ 配置与测试
├── config/ # 配置文件
├── tests/ # 测试代码
└── docs/ # 文档
- 基础架构:Workerman + 异步协程
- WAF核心:检测引擎 + 决策系统
- 代理功能:反向代理 + 负载均衡
- Web界面:管理控制台 + API
- 登录系统:用户认证 + 会话管理
- 监控系统:性能分析 + 日志记录
- 测试框架:单元测试 + 集成测试
- 混合架构:同步核心 + 异步后台
- 离线模式:无需数据库即可运行
- 代码重构:模块化架构 + 清晰结构
- 混合架构:核心功能同步处理,后台任务异步执行
- 模块化设计:WAF和管理界面完全分离,便于维护
- 现代化登录:基于Figma设计的响应式登录界面
- 插件系统:可扩展规则引擎
- Web管理:现代化管理界面
- 实时监控:完整的监控体系
- 企业级:生产环境就绪
- 代码重构:清晰的模块化架构
- 登录页面:
GET /admin/login- 用户登录界面 - 管理主页:
GET /admin- 管理控制台界面 - 仪表板:
GET /dashboard- 仪表板页面 - 健康检查:
GET /health- 系统健康状态
- 用户登录:
POST /admin/auth/login- 用户登录 - 用户登出:
GET /admin/auth/logout- 用户登出 - 会话检查:自动检查登录状态
- 仪表板数据:
GET /api/dashboard- 获取仪表板数据 - 性能报告:
GET /api/performance?period=1h- 获取性能报告 - 安全报告:
GET /api/security?period=1d- 获取安全报告 - 数据导出:
GET /api/export?type=dashboard&format=json- 导出数据
{
"success": true,
"data": {
"overview": {
"total_requests": 1500,
"blocked_requests": 50,
"block_rate": 3.3
},
"performance": {
"avg_response_time": 120,
"throughput": 250
}
},
"timestamp": 1640995200
}# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f tiangang# .env 文件配置
WAF_ENABLED=true
SERVER_HOST=0.0.0.0
SERVER_PORT=8787
BACKEND_URL=http://backend:8080
REDIS_HOST=redis
REDIS_PORT=6379- 响应时间:毫秒级检测响应
- 吞吐量:高并发请求处理
- 内存使用:资源使用监控
- 错误率:异常请求统计
- 访问日志:请求/响应记录
- 安全日志:攻击检测记录
- 错误日志:系统异常记录
- 性能日志:性能指标记录
// 配置告警阈值
'monitoring' => [
'alerts' => [
'block_rate' => 0.1, // 10% 拦截率告警
'response_time' => 1000, // 1秒响应时间告警
'error_rate' => 0.05, // 5% 错误率告警
]
]# 克隆项目
git clone https://github.com/your-org/tiangang-waf.git
cd tiangang-waf
# 安装依赖
composer install
# 运行测试
php tests/run_all_tests.php
# 启动开发服务器
php start.php start- 遵循PSR-12代码规范
- 使用PHP 8.3+特性
- 编写完整的单元测试
- 添加详细的文档注释
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- Workerman - 高性能网络框架
- pfinal-asyncio - 异步协程库
- Monolog - 日志处理
- Guzzle - HTTP客户端