白名单
来自SEnginx
目录 |
白名单
概要
白名单模块提供了基于User-Agent并带有DNS反查功能的匹配机制,可以在SEnginx中定义白名单,并将白名单应用到不同的安全功能中。命中白名单的请求将会跳过相关安全模块的检查,目前支持白名单的安全模块有:
- Naxsi
- Cookie防篡改
- 网页防篡改
- HTTP机器人缓解功能
DNS反查,是根据请求的源IP地址,查询DNS服务器获取域名,如果域名和用户定义的正则pattern匹配,则此白名单才命中。此机制是为了防止User-Agent伪造为知名机器人。
可以定义多个白名单并在不用功能上使用。
此模块在SEnginx 1.5.11以及以后的版本中提供。
命令
whitelist_ua
语法 | whitelist_ua $variable { ... } |
默认值 | - |
上下文 | http |
创建user-agent白名单。
示例:
whitelist_ua $ua_wl { "baiduspider"; "googlebot"; }
带有DNS反查功能的例子,需要配置resolver:
resolver 10.5.1.204 ipv6=off; resolver_timeout 5s; whitelist_ua $ua_wl_dns { "baiduspider" ".*\.baidu\.com"; "googlebot" ".*\.google\.com"; }
还可以指定忽略大小写匹配:
resolver 10.5.1.204 ipv6=off; resolver_timeout 5s; whitelist_ua $ua_wl_dns { caseless; "baiduspider" ".*\.baidu\.com"; "googlebot" ".*\.google\.com"; }
定义白名单时设置的变量可以在其他安全模块的命令中使用,也可以在location if中使用(不能在server if中使用),例如:
在cookie防篡改模块使用: cookie_poisoning_whitelist ua_var_name=ua_wl_dns; 在if中使用 if ($ua_wl_dns) { # do something } # else # do some secure checks
各个安全模块引用白名单的配置,请参考各个模块的文档。