在日益复杂的网络环境中,WordPress站点始终是攻击者的重点目标。Xenice WAF 不只是一个安全插件,更是一套专为WordPress设计的主动式Web应用防火墙。它基于PHP原生实现,深度集成SQLite数据库(无需额外扩展),以极小性能开销,为您提供IP黑白名单、URI/参数过滤、CC攻击防护、JS挑战等全方位安全能力。
为什么选择 SQLite?
- 零配置:无需安装Redis或MySQL扩展,WordPress环境开箱即用
- 轻量高效:单文件数据库,读写性能优异,适合日均百万级请求
- 数据持久化:日志与频率统计安全存储在
/wp-content/uploads/xwaf/目录 - 自动维护:支持日志自动过期清理与条数限制,无需人工干预
核心能力一览
| 功能模块 | 说明 |
|---|---|
| IP黑白名单 | 支持IPv4/IPv6(通过IPChecker类),可精确或通配匹配 |
| URI黑白名单 | 支持正则表达式匹配,灵活拦截或放行特定路径 |
| GET/POST参数过滤 | 分别对参数值(value)和参数名(key)进行正则匹配阻断 |
| User-Agent过滤 | 可拦截恶意爬虫或异常UA,同时支持主流搜索引擎白名单放行 |
| CC攻击防护(频率限制) | 基于IP+URI的请求频率限制,自动封禁高频请求者 |
| JS Challenge(人机验证) | 可选启用JavaScript挑战,有效拦截非浏览器自动化攻击 |
| 审计日志 | 完整记录访问与拦截日志,支持SQLite存储,便于追溯分析 |
| 授权管理 | 内置License校验,支持激活/续费,保障商业合规 |
架构优势
- 极简启动:
xwaf类在init阶段加载,不干扰WordPress核心流程。 - 钩子扩展:提供
xwaf_do_action('xwaf_start')自定义动作钩子,方便二次开发。 - 多维度匹配:所有过滤规则均支持正则表达式(
preg_match),灵活适配复杂场景。 - SQLite持久化:日志与频率统计基于SQLite,无需额外服务,数据安全可靠。
后台配置详解
Xenice WAF 提供了直观的 WordPress 后台管理界面,配置入口位于 「WAF → Settings」 ,共分为7个配置标签页,全面覆盖安全策略的各个维度。
1. General(通用设置)
- 默认拦截HTTP状态码:自定义返回的HTTP状态码(400-599),默认403。
- 排除搜索引擎蜘蛛:勾选后,Googlebot、Bingbot、Baiduspider等主流搜索引擎将不受WAF规则限制,避免影响SEO。
2. IP Settings(IP设置)
白名单IP列表
- 完全绕过WAF检测,适合管理员IP或可信服务器。
- 支持格式示例:
127.0.0.1— 单个IP10.0.0.*— 通配符匹配40.77.167.0/24— CIDR网段
黑名单IP列表
- 直接拦截,适用于已知攻击源或恶意IP。
3. URI Settings(URI设置)
白名单URI模式
- 匹配到的URI路径将跳过所有WAF规则。
- 默认已预置:
^\/wp-admin(\/.*)?$— WordPress管理后台^\/wp-json(\/.*)?$— REST API
黑名单URI模式
- 匹配到的URI路径将直接拦截,适合封锁特定漏洞路径或恶意入口。
4. Filter Rules(过滤规则)
核心配置区
Xenice WAF 提供了最细粒度的过滤能力,支持对请求的URI路径、参数值、参数名进行独立过滤:
| 过滤类型 | 说明 | 典型应用场景 |
|---|---|---|
| GET URI Filters | 拦截匹配特定正则的GET请求URI | 拦截访问敏感文件路径 |
| POST URI Filters | 拦截匹配特定正则的POST请求URI | 封锁wp-login.php暴力破解、xmlrpc.php攻击 |
| GET Args Value Filters | 过滤GET参数中的恶意值 | SQL注入(select|union|insert) |
| GET Args Key Filters | 过滤GET参数名(Key)中的恶意字符 | 检测参数名中的目录遍历(../)或XSS |
| POST Args Value Filters | 过滤POST参数中的恶意值 | 表单注入、跨站脚本攻击 |
| POST Args Key Filters | 过滤POST参数名(Key)中的恶意字符 | 检测提交字段名中的恶意代码 |
| User-Agent Filters | 拦截特定User-Agent的请求 | 封锁扫描器、恶意爬虫 |
使用建议:
所有过滤规则均支持正则表达式,一行一条规则,支持#分隔符,大小写不敏感。
5. Block Settings(频率限制与封禁)
IP封禁模块
- 基于IP总请求频率,当单IP在指定时间窗口内请求次数超过阈值,自动封禁。
- 可自定义时间窗口、封禁时长、返回HTTP状态码(默认429 Too Many Requests)。
- 数据存储:封禁状态存入SQLite,持久化保存。
URI限流模块
- 针对单个IP访问单个URI的频率进行限制,精准防御CC攻击。
- 可指定监控的请求方法(GET/POST)。
- 数据存储:频率计数器使用SQLite,避免内存溢出。
6. JS Challenge(JavaScript挑战)
- 启用后,首次访问的请求会返回一个JavaScript计算挑战,只有浏览器正确执行并携带验证Cookie后才能正常访问。
- 有效拦截:
- 自动化扫描工具
- 无头浏览器脚本
- 非浏览器发起的恶意请求
- 支持配置:
- 自定义Cookie名称与过期时间
- 最大失败次数与失败锁定时间
- 白名单URI(绕过JS Challenge,如静态资源、API接口)
7. Log Settings(日志设置)
- 支持配置访问日志与拦截日志的:
- 过期时间(默认7天,604800秒)
- 最大保留条数(默认各10000条)
- 存储位置:
/wp-content/uploads/xwaf/xwaf.sqlite - 自动清理:后台定时任务自动清理过期日志,无需手动维护




