首页
社区
课程
招聘
HsWaf | 自用Waf分享
发表于: 2025-9-23 14:54 538

HsWaf | 自用Waf分享

2025-9-23 14:54
538

0x00 BackGround

近来,因为某些个人原因,需要一个Waf。测试了很多开源或不开源的Waf,总归是不如我意。这里就不引战般地介绍具体有哪些了。总之是感觉有太多太多可以扣的细节都没人扣,以至于随便在网上找一个小工具就能绕过。于是乎就有了这个项目。本着独乐乐不如众乐乐的原则,也分享给坛友用用。

0x01 概述

HsWaf 是一个基于规则和 AI 的 Web 应用防火墙(WAF),支持并且强制HTTPS,支持自动 HTTPS 证书签发(使用 ACME 协议的 Let's Encrypt)。配置文件采用 JSON 格式,主要包含站点列表(sites)、规则配置(rule)以及全局参数。

  • 核心功能

    • HTTPS 代理和自动证书管理(独占 80 和 443 端口)。
    • JA3 指纹检查(严格来说不是标准的JA3,有我的小巧思在里面)。
    • 传统规则防护(防 SQL 注入、XSS 等)。
    • AI 辅助防护。
    • IP 速率限制和全自动黑名单。
    • 维护模式(俗称拔网线模式)。
  • 注意事项

    • 不要在外层套用其他反向代理(如 Nginx),以避免破坏 JA3 检查。
    • 证书签发仅在程序启动时进行;重启会清除本地 IP 记录。
    • 规则是给那些陈年老洞根本补不完的系统准备的,误判只比MobSec少一点;测试时建议按需启用规则。
    • 它毕竟是我自用的,一来没做太多严谨的测试,可能边边角角的有一些bug(非常非常罕见的轻微内存泄露,差不多一个星期几MB的那种)误判(比如说某些苹果设备)就没修;有一些功能设计的也不怎么全(通配符啊路径重写啊)。

0x02 配置文件介绍

提供的下载文件里面是没有说明文档的,主要是因为我懒。写这里了:

站点列表(sites

sites 是一个数组,每个元素代表一个站点配置。HsWaf 会根据 host_lower 匹配域名,并代理到指定的上游服务器(up_stream)。

站点配置对象(每个站点)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
  // 证书文件路径。HsWaf 支持自动签发证书(使用 ACME),并独占 80/443 端口。
  // 解析域名后自动获取证书。如果手动配置证书,需设置 acme_renew_days 为极大值(如 99999)以禁用自动续签。
  "cert_file": "cert.pem",
   
  // 私钥文件路径。与 cert_file 对应。
  "key_file": "key.pem",
   
  // 站点域名(必须小写)。必须精确匹配请求的 Host 头。
  // 示例:example.com(不支持通配符或多个域名)。
  "host_lower": "example.com",
   
  // 上游服务器地址。不支持路径(如 http://127.0.0.1:12345/path),仅支持主机:端口。
  // 可以是本地地址(如 192.168.2.3:8080),而非仅限 127.0.0.1
  // 客户端真实 IP 通过 X-Forwarded-For 头传递给上游。
  "up_stream": "066K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5y4#2)9J5k6e0m8Q4x3X3f1H3i4K6u0W2x3g2)9K6b7e0p5J5x3K6b7#2",
   
  // 维护模式响应。如果非空字符串,则忽略 up_stream,直接返回此内容作为响应。
  // 适用于临时关闭站点(如端口 12345 有敏感业务)。
  // 示例:返回 "Under Maintenance" 页面;空字符串表示正常运行。
  "maintain": "Under Maintenance (blank for non-maintenance)",
   
  // 禁用 WAF 功能。设为 true 时,仅作为 HTTPS 端点代理,不进行 JA3 检查或其他防护。
  // 默认 false(启用 WAF),但对 Apple 设备可能不友好(因 JA3 风险控制)。
  "no_waf": false
}
  • 注意
    • 对于多个站点,仅需添加更多对象到数组中。
    • 确保域名解析正确指向 HsWaf 服务器的 IP。未解析的IP是无法自动签发证书的。
    • 如果上游是 HTTPS,up_stream 需指定 https://,但 HsWaf 不验证上游证书。

规则配置(rule

rule 对象定义基于规则的 WAF 策略。这些规则能拦截常见攻击,但可能产生误判,且性能一般(可能是数百微秒级的)。每个策略可独立启用/禁用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
  // PHP 应用加固策略。启用后,针对 PHP 常见漏洞(如文件包含、命令注入)进行检查。
  // 选项: "disabled"(禁用,默认)、 "block"(拦截)、 "log"(仅记录)。
  "php_policy": "disabled",
   
  // Java 应用加固策略。针对 Java 常见问题(如序列化漏洞)。
  "java_policy": "disabled",
   
  // 路径穿越防护。检测并拦截如 `../` 等路径操纵尝试。
  "path_policy": "disabled",
   
  // XSS(跨站脚本)防护。扫描请求/响应中的脚本标签、事件处理等。
  "xss_policy": "disabled",
   
  // SQL 注入防护。检测常见 SQL 关键字和注入模式。
  "sql_policy": "disabled",
   
  // 扫描器防护。针对某些端口扫描、目录扫描等自动化工具。
  "scan_policy": "ban",
   
  // 敏感文本内容防护(如 ZZMG)。
  "zzmg_policy": "block"
}

全局配置

这些参数适用于整个 HsWaf 实例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 自动重启间隔(小时)。每 n 小时自动退出程序(会清除 IP 记录)。
// 证书签发仅在启动时进行,因此这是必须的。
"auto_reboot_hours": 48,
 
// 请求速率限制恢复速度(毫秒)。控制单个 IP 的 QPS(查询/秒)。
// 示例:5000 ms 表示最大 0.2 QPS(1 / 5 = 0.2)。
// 限制真实请求数,而非连接数。
"ms_per_req": 5000,
 
// 突发请求上限。允许短期超过速率限制的请求数。
// 示例:20 表示可在短时间内处理 20 个突发请求(如加载静态资源)。
"burst_limit": 20,
 
// 垃圾回收间隔(分钟)。清理内存中的临时数据(如旧日志)。
"gc_interval_minutes": 10,
 
// IP 黑名单保存时长(分钟)。违规 IP 在此时间内被封禁。
"ip_keep_time_minutes": 60,
 
// IP SNI 配置。对于 ACME 类型 "shortlived",可签发 IP 证书。
// 示例:若签发 IP 证书,设为服务器 IP(如 "192.0.2.1");否则为空字符串(默认,使用域名)。
"ip_sni": "",
 
// AI 模式开关。启用后,AI 分析请求(黑箱模型),封禁可疑行为。
// 效果好,性能一般,稳定性性差(保不准多试几次一模一样的就漏了一个);默认 true(推荐)。
"ai_mode": true,
 
// ACME 证书类型。
// - "classic":标准证书。
// - "tlsserver":非必要信息为空白的证书,更省流量(默认)。
// - "shortlived":短期证书,更安全,但需频繁续签(最近好像发不了)。
"acme_type": "tlsserver",
 
// 证书续签阈值(天)。超过此天数自动续签。
// 示例:30 天;手动证书时设为 99999 禁用自动续签。
"acme_renew_days": 30
  • 速率限制详解
    • 使用令牌桶:每 ms_per_req ms 生成一个令牌,桶容量为 burst_limit
    • 超过限制:返回错误但不拉黑 IP。

0x03 碎碎念

截止发稿日,经笔者自行(不怎么严谨的)测试,效果还是不错的。大部分扫描器一扫就黑,还出人意料地拦住了HTTP Debugger Pro等外加调试工具。只能说它在我的应用场景下是好的;如果坛友们有什么想加/改的也欢迎回帖,回帖我大部分都会扫一眼...就这样?

0x04 下载

见附件。


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-9-23 15:14 被the_hs编辑 ,原因:
上传的附件:
收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回