# 更新日志(2.x.x)

本文件的格式基于如何维护更新日志 (opens new window), 并且本项目遵守语义化版本 (opens new window)

何为「不兼容的修改」?

  • 原有的配置文件可能无法使用,比如删除或者重命名了某个配置项。
  • 可能需要更新编译环境,比如安装新的依赖。

# [2.1.1] - 2020-12-10

# 新增

# 改动

# 修复

  • 修复了模块启动失败的 bug。此 bug 的报错信息为 nginx: [alert] could not open error log file: open() "ngx_waf: /logs/error.log" failed (2: No such file or directory)0dfc46f (opens new window))。

# [2.1.0] - 2020-12-09

# 新增

# 改动

# 修复

# [2.0.2] - 2020-12-07

# 新增

# 改动

# 修复


# [2.0.1] - 2020-12-03

# 新增

# 改动

  • 不再手动下载 uthash 依赖,改用 system library。可以使用 yum install uthash-develapt-get install uthash-dev 安装 system library(7cfc94b (opens new window))。

# 修复


# [2.0.0] - 2020-09-29

# 新增

# 改动

  • 配置指令合并 (ba92cfd (opens new window))。这些配置指令将被合并:waf_check_ipv4waf_check_urlwaf_check_argswaf_check_uawaf_check_refererwaf_check_cookiewaf_check_postwaf_check_cookiewaf_cc_deny。合并后的新指令为waf_mode,详情见README

# 修复


# [1.0.1] - 2020-08-22

# 新增

  • 增加了新的配置项(3214fc8 (opens new window)
    • waf_check_ipv4:
      • 配置语法: waf_check_ipv4 [ on | off ];
      • 默认值:on
      • 配置段: server
      • 作用:是否启用 IPV4 检查。
    • waf_check_url:
      • 配置语法: waf_check_url [ on | off ];
      • 默认值:on
      • 配置段: server
      • 作用:是否启用 URL 检查。
    • waf_check_args:
      • 配置语法: waf_check_args [ on | off ];
      • 默认值:on
      • 配置段: server
      • 作用:是否启用 Args 检查。
    • waf_check_ua:
      • 配置语法: waf_check_ua [ on | off ];
      • 默认值:on
      • 配置段: server
      • 作用:是否启用 User-Agent 检查。
    • waf_check_referer:
      • 配置语法: waf_check_referer [ on | off ];
      • 默认值:on
      • 配置段: server
      • 作用:是否启用 Referer 检查。
    • waf_check_cookie:
      • 配置语法: waf_check_cookie [ on | off ];
      • 默认值:on
      • 配置段: server
      • 作用:是否启用 Cookie 检查。
    • waf_check_post:
      • 配置语法: waf_check_post [ on | off ];
      • 默认值:off
      • 配置段: server
      • 作用:是否启用 POST 检查。
    • waf_cc_deny:
      • 配置语法: waf_cc_deny [ on | off ];
      • 默认值:off
      • 配置段: server
      • 作用:是否启用 CC 防御。

# 改动

  • waf_mult_mount现在只允许写在server段中(3214fc8 (opens new window))。
    • waf_mult_mount:
      • 配置语法: waf_mult_mount [ on | off ];
      • 默认值:off
      • 配置段: server
      • 作用:进行多阶段检查,当nginx.conf存在地址重写的情况下(如rewrite配置)建议启用,反之建议关闭。
  • 更改现有的配置项关键字,删除了ngx_前缀(8b3e416 (opens new window))。
    • waf:
      • 配置语法: waf [ on | off ];
      • 默认值:off
      • 配置段: server
      • 作用:是否启用本模块。
    • waf_rule_path:
      • 配置语法: waf_rule_path dir;
      • 默认值:无
      • 配置段: server
      • 作用:规则文件所在目录,且必须以/结尾。
    • waf_mult_mount:
      • 配置语法: waf_mult_mount [ on | off ];
      • 默认值:off
      • 配置段: http
      • 作用:进行多阶段检查,当nginx.conf存在地址重写的情况下(如rewrite配置)建议启用,反之建议关闭。
  • 更新 referer 的默认规则,具体一点就是拷贝rules/url的内容到rules/referer中(55f5e26 (opens new window))。

# 修复


# [1.0.0] - 2020-08-18

# 新增

  • 改进日志格式(bd112ec (opens new window))。基本格式为xxxxx, ngx_waf: [拦截类型][对应规则], xxxxx,具体可看下面的例子。
    2020/01/20 22:56:30 [alert] 24289#0: *30 ngx_waf: [BLACK-URL][(?i)(?:/\.env$)], client: 192.168.1.1, server: example.com, request: "GET /v1/.env HTTP/1.1", host: "example.com", referrer: "http:/example.com/v1/.env"
    
    2020/01/20 22:58:40 [alert] 24678#0: *11 ngx_waf: [BLACK-POST][(?i)(?:select.*(?:from|limit))], client: 192.168.1.1, server: example.com, request: "POST /xmlrpc.php HTTP/1.1", host: "example.com", referrer: "https://example.com/"
    
  • 新增三个内置变量(92d6d84 (opens new window)
    • $waf_blocked: 本次请求是否被本模块拦截,如果拦截了则其的值为'true',反之则为'false'
    • $waf_rule_type:如果本次请求被本模块拦截,则其值为触发的规则类型。下面是可能的取值。若没有生效则其值为'null'
      • 'BLACK-IPV4'
      • 'BLACK-URL'
      • 'BLACK-ARGS'
      • 'BLACK-USER-AGENT'
      • 'BLACK-REFERER'
      • 'BLACK-COOKIE'
      • 'BLACK-POST'
    • '$waf_rule_details':如果本次请求被本模块拦截,则其值为触发的具体的规则的内容。若没有生效则其值为'null'
  • 支持过滤 POST 请求(b46641e (opens new window))。
  • 新配置项ngx_waf_mult_mount用于增加拦截面(e1b500d (opens new window)),典型的应用场景是存在rewrite的情况下重写前后均会对 URL 进行一次检测。
  • 支持 CC 防御功能(3a93e19 (opens new window))。

# 改动

# 修复