中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么為Nginx服務器配置黑名單或白名單功能

發布時間:2022-04-29 16:37:59 來源:億速云 閱讀:2174 作者:iii 欄目:大數據

本篇內容介紹了“怎么為Nginx服務器配置黑名單或白名單功能”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、定義黑名單或白名單方法:
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?zone_name=white 查看zone_name 為white 的 list_path中的具體內容
c.http://xxx/sec_config?zone_name=white&add_item=192.168.141.23 向 zone_name 為white 中增加192.168.141.23
d. http://xxx/sec_config?zone_name=white&delete_item=192.168.141.23 在 zone_name 為white 中刪除192.168.141.23
查看配置方法2:
http://xxx/sec_config?for_each
三、黑白名單文件內容
conf/black.list 文件內容如下

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?utm_source=tuicool&utm_medium=referral
推薦安裝:

推薦使用lujit2.1做lua支持

ngx_lua如果是0.9.2以上版本,建議正則過濾函數改為ngx.re.find,匹配效率會提高三倍左右。

使用說明:

nginx安裝路徑假設為:/usr/local/nginx/conf/

把ngx_lua_waf下載到conf目錄下,解壓命名為waf

在nginx.conf的http段添加

  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;

配置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?id=../etc/passwd

    返回"please go away~~"字樣,說明規則生效。
注意:默認,本機在白名單不過濾,可自行調整config.lua配置

怎么為Nginx服務器配置黑名單或白名單功能

怎么為Nginx服務器配置黑名單或白名單功能

規則更新:

考慮到正則的緩存問題,動態規則會影響性能,所以暫沒用共享內存字典和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

“怎么為Nginx服務器配置黑名單或白名單功能”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渝中区| 青阳县| 金阳县| 阿拉尔市| 灵寿县| 涟源市| 白玉县| 丹阳市| 同德县| 托克逊县| 义马市| 靖远县| 茂名市| 永登县| 郁南县| 安塞县| 乌兰浩特市| 特克斯县| 汤原县| 嘉定区| 莲花县| 海林市| 吉安县| 大连市| 即墨市| 牡丹江市| 方山县| 夏河县| 临高县| 桃源县| 南安市| 巍山| 柳州市| 教育| 黑龙江省| 黄大仙区| 大荔县| 阿巴嘎旗| 乐至县| 辽宁省| 湖北省|