Rumah > Artikel > Operasi dan penyelenggaraan > Bagaimana untuk mengkonfigurasi fungsi senarai hitam atau senarai putih untuk pelayan Nginx
1. Kaedah menentukan senarai hitam atau senarai putih:
1 Format konfigurasi
Konfigurasikan senarai hitam kata kunci atau senarai putih ruang storan
white_black_list_conf conf/white.list zone =white:2m ;
|. --Saiz ruang simpanan di sini ialah 2m Saiz ruang menentukan kapasiti senarai hitam dan putih
|. ------------------------------------------------- --------------------Nama ruang storan
|. -------------------------------------------------Senarai hitam atau laluan fail konfigurasi senarai putih
- ------------------------------------------ --------Arahan konfigurasi
2. Konfigurasikan kata kunci white_black_list_conf.
3. Hanya boleh digunakan dalam http{}
4. White_black_list_conf boleh dikonfigurasikan dengan berbilang nilai selagi zon=nilai berbeza
5
2. Skop senarai hitam dan putih
1. Format konfigurasiKata kunci konfigurasi hidup/mati
Kata kunci konfigurasi ialah: white_list dan black_list digunakan untuk mewakili senarai putih dan hitam senarai masing-masing 2. Boleh digunakan di bawah http{}, pelayan{}, lokasi{}, fungsi dimatikan secara lalai
3 Contoh konfigurasi:
http{ ...... white_black_list_conf conf/white.list zone=white:4m; white_black_list_conf conf/black.list zone=black:4m; ...... server{ ....... } ....... }
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{} 中都开启 } ....... } ....... }
http{ ....... server{ ...... location /sec_config{ sec_config on; } ...... } ....... }
http://xxx/sec_config?for_each
3 Kandungan fail senarai hitam putih
conf/black.list kandungan fail adalah seperti berikut
{
"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"
}
}
4. Senarai hitam dinamik
Dalam ngx_http_limit_req_module.c Tambah #white_de_black.
dan ubah suai kod untuk mencari:
2.2.2.2 192.168.141.1 3.3.3.3 4.4.4.5 2.3.4.4
" 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); "Dilengkapi dengan kata kunci:
dyn_black
Format:
Contohnya: Dyn_black Black 60; // Akses dilarang untuk akses selama 60 saat, dan secara automatik mengetepikan
Nota:
mesti mengkonfigurasi Black_list
Contoh Konfigurasi:
ngx_black_add_item_interface(r, 1);
Pemasangan yang disyorkan:Adalah disyorkan untuk menggunakan lujit2.1 untuk sokongan Lua
Jika ngx_lua ialah versi 0.9.2 ke atas, adalah disyorkan untuk menukar yang biasa fungsi penapis ke ngx.re.find, yang akan meningkatkan kecekapan pemadanan kira-kira tiga kali ganda.
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; } ... } ... }dalam bahagian http nginx.conf untuk mengkonfigurasi direktori peraturan waf dalam config.lua (biasanya dalam direktori waf/conf/)
lua_package_path "/usr/local/nginx/conf/waf/?.lua"; 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;Laluan mutlak tertakluk kepada perubahan , anda perlu mengubah suai dengan sewajarnya dan kemudian mulakan semula nginx Butiran fail konfigurasi:
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?id=../etc/passwd
返回"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
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi fungsi senarai hitam atau senarai putih untuk pelayan Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!