功能描述:
处在黑名单中的ip与网络,将无法访问web服务。
处在白名单中的ip,访问web服务时,将不受nginx所有安全模块的限制。
支持动态黑名单(需要与ngx_http_limit_req 配合)
具体详见下面的说明
文件配置方法说明
一、定义黑名单或白名单方法:
1. 配置格式
配置关键字 黑名单或白名单文件 存储空间
white_black_list_conf conf/white.list zone=white:2m;
| | | |
| | | --------------------------------------存储空间大小 这里是2m. 空间大小决定黑白名单的容量
| | ---------------------------------------------------------------------------------------------存储空间名
| ---------------------------------------------------------------黑名单或白名单配置文件路径
------------------------------------------------配置命令
2. 配置关键字 white_black_list_conf。
3. 只能在http{} 中使用
4. white_black_list_conf可以配置多个 只需 zone=value 其中的value不同就可
5. 配置示例:
http{ ...... white_black_list_conf conf/white.list zone=white:4m; white_black_list_conf conf/black.list zone=black:4m; ...... server{ ....... } ....... }
二、黑白名单作用范围
1. 配置格式
配置关键字 on/off
配置关键字有:white_list 与 black_list 分别用来表示白名单与黑名单
2. 能在http{}、server{}、location{}下使用, 功能默认是关闭
3. 配置示例:
http{ ...... white_black_list_conf conf/white.list zone=white1:4m; white_black_list_conf conf/black.list zone=black1:4m; white_list white1 on; #白名单 white1 在整个http{} 中都开启 black_list black1 on; #黑名单 black1 在整个http{} 中都开启 server{ ....... } ....... } http{ ...... white_black_list_conf conf/white.list zone=white2:4m; white_black_list_conf conf/black.list zone=black2:4m; server{ ....... white_list white2 on; #白名单 white1 在整个server{} 中都开启 black_list black2 on; #黑名单 black1 在整个server{} 中都开启 ....... } ....... } http{ ...... white_black_list_conf conf/white.list zone=white3:4m; white_black_list_conf conf/black.list zone=black3:4m; white_black_list_conf conf/black.list zone=black2:4m; white_black_list_conf conf/white.list zone=white2:4m; server{ ....... location /do { ........ white_list white3 on; #白名单 white3 在location /do{} 中开启 black_list black3 on; #黑名单 black3 在location /do{} 中开启 ........ } location /do1{ white_list white2 on; #白名单 white2 在整个server{} 中都开启 black_list black2 on; #黑名单 black2 在整个server{} 中都开启 } ....... } ....... }
4.http配置接口说明:
(1)配置配置接口
http{ ....... server{ ...... location /sec_config{ sec_config on; } ...... } ....... }
(2)配置方法:
a. http://xxx/sec_config 查看黑白名单定义情况
返回结果如下
{ "version": "nginx/1.3.0", "code": "0", "item": { "conf_type": "white_black_list_conf", "zone_name": "white", "list_path": "/home/john/nginx/conf/white.list" }, "item": { "conf_type": "white_black_list_conf", "zone_name": "black", "list_path": "/home/john/nginx/conf/black.list" }, "item": { "conf_type": "white_black_list_conf", "zone_name": "ex", "list_path": "/home/john/nginx/conf/status_ex" } }
b. http://xxx/sec_config"htmlcode">
2.2.2.2 192.168.141.1 3.3.3.3 4.4.4.5 2.3.4.4
四、动态黑名单
要使用该功能必须对 ngx_http_limit_req_module.c 进行patch
在ngx_http_limit_req_module.c中
增加#include <white_black_list.h>
并修改代码找到:
" if (rc == NGX_BUSY) { ngx_log_error(lrcf->limit_log_level, r->connection->log, 0, "limiting requests, excess: %ui.%03ui by zone \"%V\"", excess / 1000, excess % 1000, &limit->shm_zone->shm.name); "
在其下面增加:
ngx_black_add_item_interface(r, 1);
配备关键字:
dyn_black
格式:
dyn_black $zone_name time;
比如:
dyn_black black 60; //禁止访问60秒,60秒后自动解除
注意:
必须要配置black_list
配置示例:
http{ .... white_black_list_conf conf/black.list zone=black:4m; limit_req_zone $binary_remote_addr zone=one:8m rate=4r/s; ... server { location / { black_list black on; limit_req zone=one burst=6; dyn_black black 60; //禁止访问60秒,60秒后自动解除 ... } location /xxx { sec_config on; } ... } ... }
PS:基于lua-nginx-module的ngx_lua_waf防火墙
项目地址:https://github.com/loveshell/ngx_lua_waf"htmlcode">
lua_package_path "/usr/local/nginx/conf/waf/"; lua_shared_dict limit 10m; init_by_lua_file /usr/local/nginx/conf/waf/init.lua; access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;
配置config.lua里的waf规则目录(一般在waf/conf/目录下)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
绝对路径如有变动,需对应修改
然后重启nginx即可
配置文件详细说明:
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
--规则存放目录
attacklog = "off"
--是否开启攻击信息记录,需要配置logdir
logdir = "/usr/local/nginx/logs/hack/"
--log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限
UrlDeny="on"
--是否拦截url访问
Redirect="on"
--是否拦截后重定向
CookieMatch = "on"
--是否拦截cookie攻击
postMatch = "on"
--是否拦截post攻击
whiteModule = "on"
--是否开启URL白名单
ipWhitelist={"127.0.0.1"}
--ip白名单,多个ip用逗号分隔
ipBlocklist={"1.0.0.1"}
--ip黑名单,多个ip用逗号分隔
CCDeny="on"
--是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
CCrate = "100/60"
--设置cc攻击频率,单位为秒.
--默认1分钟同一个IP只能请求同一个地址100次
html=[[Please go away~~]]
--警告内容,可在中括号内自定义
备注:不要乱动双引号,区分大小写
检查规则是否生效
部署完毕可以尝试如下命令:
curl http://xxxx/test.php"Please go away~~"字样,说明规则生效。
注意:默认,本机在白名单不过滤,可自行调整config.lua配置
规则更新:
考虑到正则的缓存问题,动态规则会影响性能,所以暂没用共享内存字典和redis之类东西做动态管理。
规则更新可以把规则文件放置到其他服务器,通过crontab任务定时下载来更新规则,nginx reload即可生效。以保障ngx lua waf的高性能。
只记录过滤日志,不开启过滤,在代码里在check前面加上--注释即可,如果需要过滤,反之
一些说明:
过滤规则在wafconf下,可根据需求自行调整,每条规则需换行,或者用|分割
- global是全局过滤文件,里面的规则对post和get都过滤
- get是只在get请求过滤的规则
- post是只在post请求过滤的规则
- whitelist是白名单,里面的url匹配到不做过滤
- user-agent是对user-agent的过滤规则
默认开启了get和post过滤,需要开启cookie过滤的,编辑waf.lua取消部分--注释即可
日志文件名称格式如下:虚拟主机名_sec.log
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]