Skip to content

Commit 3c388c8

Browse files
committed
🚩 Modify the priority of the rule
1 parent be58d18 commit 3c388c8

File tree

2 files changed

+37
-22
lines changed

2 files changed

+37
-22
lines changed

README.md

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,26 @@ git clone -b v2.1.0 https://github.com/troydhanson/uthash.git inc/uthash
3636

3737
```bash
3838
./configure xxxxxx --add-module=/usr/local/src/ngx_waf
39-
make && make install
39+
make
4040
```
4141
> xxxxxx 为其它的编译参数,一般来说是将 xxxxxx 替换为`nginx -V`显示的编译参数。
4242
43+
如果您已经安装了 nginx 则可以直接替换二进制文件(假设原有的二进制文件的全路径为`/usr/local/nginx/sbin/nginx`
44+
45+
```bash
46+
nginx -s stop
47+
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
48+
cp objs/nginx /usr/local/nginx/sbin/nginx
49+
nginx
50+
```
51+
52+
> 如果不想中断 nginx 服务则可以通过热部署的方式来实现升级,热部署方法见[官方文档](https://nginx.org/en/docs/control.html)
53+
54+
如果您之前没有安装则直接执行下列命令
55+
```bash
56+
make install
57+
```
58+
4359
#### 修改 nginx.conf
4460

4561
在需要启用模块的 server 块添加两行,例如
@@ -52,7 +68,7 @@ http {
5268
ngx_waf on;
5369
ngx_waf_rule_path /usr/local/src/ngx_waf/rules/;
5470
ngx_waf_cc_deny on;
55-
ngx_waf_cc_deny_limit 5 1;
71+
ngx_waf_cc_deny_limit 1000 60;
5672
...
5773
}
5874
...
@@ -66,7 +82,7 @@ http {
6682
6783
> ngx_waf_cc_deny 表示是否启用 CC 防御。
6884
69-
> ngx_waf_cc_deny_limit 包含两个参数,第一个参数表示每分钟的最多请求次数(大于零),第二个参数表示第一个参数的限制后拉黑 IP 多少分钟(大于零)。
85+
> ngx_waf_cc_deny_limit 包含两个参数,第一个参数表示每分钟的最多请求次数(大于零的整数),第二个参数表示超出第一个参数的限制后拉黑 IP 多少分钟(大于零的整数)。
7086
7187
#### 测试
7288

@@ -84,19 +100,20 @@ https://example.com/www.bak
84100

85101
1. IP 白名单
86102
2. URL 白名单
87-
3. Referer 白名单
88-
4. IP 黑名单
89-
5. CC 防御
90-
6. URL 黑名单
91-
7. 参数黑名单
92-
8. Referer 黑名单
93-
9. UserAgent 黑名单
103+
3. IP 黑名单
104+
4. CC 防御
105+
5. URL 黑名单
106+
6. 参数黑名单
107+
7. UserAgent 黑名单
108+
8. Referer 白名单
109+
9. Referer 黑名单
110+
94111

95112
### rules/ipv4
96113

97114
IPV4 黑名单
98115

99-
每条规则独占一行。每行只能是一个 IPV4 地址或者一个 CIDR 地址块。拦截匹配到的 IP。
116+
每条规则独占一行。每行只能是一个 IPV4 地址或者一个 CIDR 地址块。拦截匹配到的 IP 并返回 403
100117

101118
### rules/url
102119

src/ngx_http_waf_module.c

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,6 @@ static ngx_int_t ngx_http_waf_handler(ngx_http_request_t* r) {
212212
return NGX_DECLINED;
213213
}
214214

215-
if (r->headers_in.referer != NULL
216-
&& ngx_regex_exec_array(srv_conf->white_referer, &r->headers_in.referer->value, r->connection->log) == NGX_OK) {
217-
return NGX_DECLINED;
218-
}
219-
220-
221215
switch (r->connection->sockaddr->sa_family) {
222216
case AF_INET:
223217
if (check_ipv4(ipv4, srv_conf->block_ipv4) == SUCCESS) {
@@ -243,14 +237,18 @@ static ngx_int_t ngx_http_waf_handler(ngx_http_request_t* r) {
243237
return NGX_HTTP_FORBIDDEN;
244238
}
245239

246-
if (r->headers_in.referer != NULL
247-
&& ngx_regex_exec_array(srv_conf->block_referer, &r->headers_in.referer->value, r->connection->log) == NGX_OK) {
248-
ngx_log_error(NGX_LOG_WARN, r->connection->log, 0, "ngx_waf: REFERER");
240+
if (ngx_regex_exec_array(srv_conf->block_ua, &r->headers_in.user_agent->value, r->connection->log) == NGX_OK) {
241+
ngx_log_error(NGX_LOG_WARN, r->connection->log, 0, "ngx_waf: USER-AGENT");
249242
return NGX_HTTP_FORBIDDEN;
250243
}
251244

252-
if (ngx_regex_exec_array(srv_conf->block_ua, &r->headers_in.user_agent->value, r->connection->log) == NGX_OK) {
253-
ngx_log_error(NGX_LOG_WARN, r->connection->log, 0, "ngx_waf: USER-AGENT");
245+
if (r->headers_in.referer != NULL
246+
&& ngx_regex_exec_array(srv_conf->white_referer, &r->headers_in.referer->value, r->connection->log) == NGX_OK) {
247+
return NGX_DECLINED;
248+
}
249+
if (r->headers_in.referer != NULL
250+
&& ngx_regex_exec_array(srv_conf->block_referer, &r->headers_in.referer->value, r->connection->log) == NGX_OK) {
251+
ngx_log_error(NGX_LOG_WARN, r->connection->log, 0, "ngx_waf: REFERER");
254252
return NGX_HTTP_FORBIDDEN;
255253
}
256254

0 commit comments

Comments
 (0)