whitehatlabs000/eWAF
GitHub: whitehatlabs000/eWAF
一款融合 Java 动态路由、NGINX 高性能代理与 ModSecurity WAF 规则的企业级混合 Web 应用防火墙。
Stars: 2 | Forks: 0
eWAF (Enterprise Web Application Firewall)
Smart Hybrid Routing & Enterprise Grade Security
[](https://www.gnu.org/licenses/agpl-3.0)
[](https://www.oracle.com/java/)
[](https://www.docker.com/)
[](https://github.com/SpiderLabs/ModSecurity)
*🇨🇳 [阅读中文版](README-es.md)*
**eWAF** 是一款高性能的混合反向代理和 Web 应用防火墙。它将 Java Native Engine 的智能动态路由和 payload 检查能力,与 NGINX 的原生 C++ 性能以及 OWASP ModSecurity Core Rule Set (CRS) 完美结合。
## ✨ 核心功能
* **🛡️ 智能委派:** 沉重的静态资源(图片、视频)通过 `X-Accel-Redirect` 自动卸载给 NGINX。彻底杜绝 Java 堆内存耗尽问题。
* **🚦 ModSecurity CRS 集成:** 直接在 UI 界面中针对特定路由开启 OWASP Core Rule Set。恶意流量在触及您的内部应用之前,就会被隔离在专用的 C++ 引擎中。
* **🔄 实时重写:** Java Native 引擎动态解析并处理 JSON payload 和 HTML 锚点,无缝修复损坏的后端路径。
* **⚡ 多引擎路由:** 根据 endpoint 的需求,通过 NATIVE (Tomcat)、NGINX 或 SPRING (Cloud Gateway) 引擎来路由您的流量。
* **📦 零配置数据库:** MySQL 已完全容器化。schema 和默认管理员账户会在首次启动时自动配置。
## 🏗️ 架构流程
eWAF 充当编排器的角色,以最优方式分配工作负载:
1. **API/HTML 流量:** 由 Java Native Engine 处理,进行深度内容检查和 URL 重写。
2. **静态资源:** 由 NGINX 处理。Java 响应 `X-Accel-Redirect` 并将下载流委派给 C++ 引擎。
3. **WAF 路由:** 流量被转移至一个盲目的 NGINX 通道(`/internal-nginx-proxy-modsec`),在到达后端之前穿过 OWASP CRS。
## 🚀 部署指南
### 前置条件
* [Docker & Docker Compose](https://docs.docker.com/get-docker/)
* Java 17 & Maven(用于构建核心应用程序)
### 第一步:构建核心
在启动 container 之前,请使用内置的 Maven Wrapper 打包 Java 应用程序。这将生成 Tomcat 所需的 `target/eWAF.war` 文件。
**适用于全新的 Linux 服务器(Ubuntu/Debian):**
```
git clone https://github.com/whitehatlabs000/eWAF.git
cd eWAF
sudo apt update
sudo apt install openjdk-17-jdk -y
chmod +x mvnw
./mvnw clean install
```
**适用于本地开发(已安装 Java 的 Windows/Mac):**
```
git clone https://github.com/whitehatlabs000/eWAF.git
cd eWAF
./mvnw clean install
```
### 第二步:选择您的环境
eWAF 采用了混合配置系统,旨在适应您的工作流。
#### 选项 A:本地开发(Windows / Mac / IDE)
在此模式下,Docker 运行基础设施(MySQL、NGINX、Spring Gateway),但保持 Tomcat 离线,以便您可以直接从 IDE(IntelliJ/Eclipse)运行 Java 代码进行调试。
```
docker compose up -d --build
```
*在 IDE 中运行您的 Tomcat 服务器,端口为 `8080`。它会自动连接到端口 `3308` 上容器化的 MySQL。*
#### 选项 B:生产环境部署(Linux / 服务器)
在此模式下,整个生态系统(包括 Java Core)都在隔离的 Docker 网络中以容器化方式运行。
```
docker compose --profile prod up -d --build
```
### 第三步:访问仪表板
部署完成后,导航至 `http://localhost:8081/login`。
数据库已自动配置了以下默认凭据:
* **用户名:** `admin`
* **密码:** `admin`
*(强烈建议您在首次登录后立即更改此密码或创建新的管理员账户)。*
## 🛠️ Docker 管理速查表
使用以下标准的 Docker Compose 命令来管理您的 eWAF 部署:
```
# 查看所有服务的实时日志
docker compose logs -f
# 查看特定 engine 的日志(例如:ModSecurity 拦截)
docker compose logs -f nginx
# 重启 NGINX 以应用手动规则更改,而无需删除 DB
docker compose restart nginx
# 安全停止整个 ecosystem
docker compose stop
# 销毁 ecosystem(在 volumes 中保留数据库数据)
docker compose down
# FULL RESET:销毁并删除数据库 volumes(危险:清除所有数据)
docker compose down -v
```
## 🤝 贡献
贡献使得开源社区成为学习、启发和创造的绝佳之地。
1. Fork 该项目
2. 创建您的功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到该分支 (`git push origin feature/AmazingFeature`)
5. 发起一个 Pull Request
## 📝 许可证
基于 GNU AGPLv3 许可证分发。请查看 `LICENSE` 获取更多信息。
标签:AppImage, CISA项目, ModSecurity, Nginx, Web应用防火墙, 反向代理, 域名枚举, 安全网关, 版权保护, 请求拦截, 负责任AI