Suspecting/SuspectingWAF

GitHub: Suspecting/SuspectingWAF

一款基于 Node.js 的自托管 Web 应用防火墙兼反向代理,以内存缓存引擎和内置检测规则为后端应用拦截 SQL 注入、XSS 等常见 Web 攻击。

Stars: 0 | Forks: 1

SuspectingWAF Logo - Straw Hat

🛡️ SuspectingWAF

A Next-Generation, Self-Hosted Web Application Firewall & Reverse Proxy built in Node.js.

Developed by Prakhar Shakya for the SSRL.in Internship

关于架构功能缓解引擎安装说明使用与测试

## 📖 简介 **SuspectingWAF** 是一款高性能、本地部署的 Web Application Firewall (WAF),从头开始开发,旨在保护易受攻击的后端 Web 应用程序免受复杂的网络攻击。它被设计为直接位于目标服务器之前(作为反向代理运行),在流量到达应用层之前,主动拦截、规范化和检查所有入站的 HTTP**S** 流量。 本项目作为 **SSRL.in** 高强度的防御性安全实习项目的一部分从零开始构建,旨在展示对 OWASP Top 10 漏洞、Web 代理架构以及威胁缓解策略的深入、基础的理解。 ### ⚡ 基准测试结果 | 指标 | 结果 | |---|---| | **每秒请求数** | **4,823 RPS** | | **处理的总请求数** | 144,815 | | **平均延迟** | 20.22ms | | **最大延迟** | 63.80ms | | **失败请求** | 0 | | **TLS 协议** | TLSv1.3 | ## 👨‍💻 关于开发者 - **姓名**:Prakhar Shakya - **简介**:B.Tech CSE (网络安全) 专业,三年级学生 - **GitHub**:[@Suspecting](https://github.com/Suspecting) - **LinkedIn**:[linkedin.com/in/shakyaprakhar](https://www.linkedin.com/in/shakyaprakhar/) - **作品集**:[sussy-port.netlify.app](https://sussy-port.netlify.app/) - **专业领域**:防御性安全、恶意软件分析、Bug Bounty Hunting、威胁情报以及安全软件开发。 ## ⚙️ 架构与核心机制 SuspectingWAF 旨在实现**零延迟开销**。它通过在请求生命周期内绕过繁重的数据库事务来实现这一点。 1. **内存缓存引擎**:WAF 将 IP 黑名单、站点配置、WAF 模式、速率限制配置和自定义规则缓存在 RAM 中。后台线程每 10 秒与本地 SQLite 数据库同步一次。 2. **TLS Termination**:WAF 使用 SNI (Server Name Indication) 终止 SSL/TLS,使其能够在单个 IP 上提供多个 HTTPS 站点服务。首次启动时,使用 `openssl` 自动生成自签名证书。 3. **HTTP → HTTPS 重定向**:端口 `8080` 上的所有明文 HTTP 流量都会通过 `301 Moved Permanently` 自动重定向到端口 `8443` 上的 HTTPS。 4. **异步 Body Buffering**:通过监听 Node.js 的 `data` 流,代理会安全地缓冲 `POST`、`PUT` 和 `PATCH` 的 payload。实施严格的 DoS 约束(最大 body 大小为 1MB)以防止 Buffer Overflow 攻击。 5. **自定义 URL 规范化**:内置解析器通常会丢弃格式错误的查询参数,从而允许绕过 HTTP Parameter Pollution。SuspectingWAF 使用自定义的严格 URL 解析器,确保检查引擎看到的内容与后端将要执行的内容完全一致。 6. **Keep-Alive 连接**:HTTP 和 HTTPS 服务器均配置了 `keepAliveTimeout` 以重用 TCP 连接,从而大幅提高持续负载下的吞吐量。 ## ✨ 核心功能 - 🔐 **TLS/HTTPS Termination**:在端口 `8443` 上提供完整的 SSL/TLS 支持,具有自动自签名证书生成和基于 SNI 的多站点证书路由功能。 - 🛡️ **内置检测引擎**:防御 SQL Injection、XSS、Command Injection、Path Traversal、SSRF、XXE、CSRF 以及恶意文件上传。 - ⚡ **高性能**:通过 `wrk` 进行持续压力测试,达到 4,823 RPS,且 0 个失败连接。 - 💾 **零配置数据库**:使用 SQLite 进行快速、本地化的存储。无需搭建 MySQL 或 Redis。 - 📊 **动态 Rate Limiting**:基于单 IP 的滑动窗口速率限制,可自动封禁滥用 IP。 - 🕵️ **高级 Bot 检测**:识别自动化工具(curl、sqlmap、nmap、nikto、dirb)。 - 🔁 **SPA 与 NextAuth 兼容性**:智能将标准身份验证流程加入白名单,以防止在现代前端应用中出现误报的 SSRF/RFI 拦截。 - 🍪 **无破坏性 Cookie 策略**:智能的 Cookie 处理和 CSP 头部,在不破坏前端 UI 功能的前提下提供保护。 - 📋 **管理仪表盘**:简洁的 UI,用于查看实时攻击日志、管理受保护的站点、配置自定义规则以及管理 IP 黑名单。 - 💀 **自定义拦截页面**:在成功中和威胁时,提供极具专业感的《海贼王》草帽海贼团主题 SVG 拦截页面。 ## 🛡️ 漏洞缓解深入解析 ### SQL Injection (SQLi) WAF 采用双引擎方法来阻止数据库利用: 1. **正则启发式**:扫描已知的恶意 SQL 结构(例如 `UNION SELECT`、`INTO OUTFILE`)和身份验证绕过永真式(`' OR '1'='1`)。 2. **绕过防御**:深度 payload 规范化(URL 解码 → HTML 实体解码 → Unicode 规范化)在运行检查之前剥离所有混淆层。 ### Cross-Site Scripting (XSS) 通过中和恶意的 `