最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

為Nginx服務(wù)器配置黑名單或白名單功能的防火墻

 更新時(shí)間:2016年01月27日 11:56:52   投稿:goldensun  
這篇文章主要介紹了為Nginx服務(wù)器配置黑名單或白名單功能的防火墻的方法,文中還附帶介紹了一個(gè)基于lua的第三方防火墻模塊,需要的朋友可以參考下

功能描述:
處在黑名單中的ip與網(wǎng)絡(luò),將無法訪問web服務(wù)。
處在白名單中的ip,訪問web服務(wù)時(shí),將不受nginx所有安全模塊的限制。
支持動(dòng)態(tài)黑名單(需要與ngx_http_limit_req 配合)
具體詳見下面的說明
文件配置方法說明
一、定義黑名單或白名單方法:
1. 配置格式
配置關(guān)鍵字 黑名單或白名單文件 存儲(chǔ)空間
white_black_list_conf conf/white.list zone=white:2m;
  | | | |
  | | | --------------------------------------存儲(chǔ)空間大小 這里是2m. 空間大小決定黑白名單的容量
  | | ---------------------------------------------------------------------------------------------存儲(chǔ)空間名
  | ---------------------------------------------------------------黑名單或白名單配置文件路徑
  ------------------------------------------------配置命令
2. 配置關(guān)鍵字 white_black_list_conf。
3. 只能在http{} 中使用
4. white_black_list_conf可以配置多個(gè) 只需 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. 配置格式
配置關(guān)鍵字 on/off
配置關(guān)鍵字有:white_list 與 black_list 分別用來表示白名單與黑名單
2. 能在http{}、server{}、location{}下使用, 功能默認(rèn)是關(guān)閉
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 在整個(gè)http{} 中都開啟
    black_list black1 on; #黑名單 black1 在整個(gè)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 在整個(gè)server{} 中都開啟
        black_list black2 on; #黑名單 black1 在整個(gè)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 在整個(gè)server{} 中都開啟
            black_list black2 on; #黑名單 black2 在整個(gè)server{} 中都開啟
        }
        .......
    }
    .......
}

4.http配置接口說明:
(1)配置配置接口

http{
    .......
    server{
        ......
        location /sec_config{
            sec_config on;
        }
        ......
    }
    .......
}

(2)配置方法:
a. http://xxx/sec_config 查看黑白名單定義情況
返回結(jié)果如下

{
    "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中的具體內(nèi)容
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
三、黑白名單文件內(nèi)容
conf/black.list 文件內(nèi)容如下

2.2.2.2
192.168.141.1
3.3.3.3
4.4.4.5
2.3.4.4

四、動(dòng)態(tài)黑名單
    要使用該功能必須對(duì) ngx_http_limit_req_module.c 進(jìn)行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);

        配備關(guān)鍵字:
                dyn_black
        格式:
                dyn_black $zone_name time;
        比如:
                dyn_black black 60; //禁止訪問60秒,60秒后自動(dòng)解除
        注意:
                必須要配置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秒后自動(dòng)解除
         ...
         }
         location /xxx {
         sec_config on;
         }
         ...
            }
            ...
        }

PS:基于lua-nginx-module的ngx_lua_waf防火墻

項(xiàng)目地址:https://github.com/loveshell/ngx_lua_waf?utm_source=tuicool&utm_medium=referral
推薦安裝:

推薦使用lujit2.1做lua支持

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

使用說明:

nginx安裝路徑假設(shè)為:/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規(guī)則目錄(一般在waf/conf/目錄下)

  RulePath = "/usr/local/nginx/conf/waf/wafconf/"

絕對(duì)路徑如有變動(dòng),需對(duì)應(yīng)修改

然后重啟nginx即可

配置文件詳細(xì)說明:

  RulePath = "/usr/local/nginx/conf/waf/wafconf/"
  --規(guī)則存放目錄
  attacklog = "off"
  --是否開啟攻擊信息記錄,需要配置logdir
  logdir = "/usr/local/nginx/logs/hack/"
  --log存儲(chǔ)目錄,該目錄需要用戶自己新建,切需要nginx用戶的可寫權(quán)限
  UrlDeny="on"
  --是否攔截url訪問
  Redirect="on"
  --是否攔截后重定向
  CookieMatch = "on"
  --是否攔截cookie攻擊
  postMatch = "on"
  --是否攔截post攻擊
  whiteModule = "on"
  --是否開啟URL白名單
  ipWhitelist={"127.0.0.1"}
  --ip白名單,多個(gè)ip用逗號(hào)分隔
  ipBlocklist={"1.0.0.1"}
  --ip黑名單,多個(gè)ip用逗號(hào)分隔
  CCDeny="on"
  --是否開啟攔截cc攻擊(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
  CCrate = "100/60"
  --設(shè)置cc攻擊頻率,單位為秒.
  --默認(rèn)1分鐘同一個(gè)IP只能請(qǐng)求同一個(gè)地址100次
  html=[[Please go away~~]]
  --警告內(nèi)容,可在中括號(hào)內(nèi)自定義
  備注:不要亂動(dòng)雙引號(hào),區(qū)分大小寫

檢查規(guī)則是否生效

部署完畢可以嘗試如下命令:

  curl http://xxxx/test.php?id=../etc/passwd

    返回"Please go away~~"字樣,說明規(guī)則生效。
注意:默認(rèn),本機(jī)在白名單不過濾,可自行調(diào)整config.lua配置

2016127115510844.png (550×314)

2016127115607432.png (550×253)

規(guī)則更新:

考慮到正則的緩存問題,動(dòng)態(tài)規(guī)則會(huì)影響性能,所以暫沒用共享內(nèi)存字典和redis之類東西做動(dòng)態(tài)管理。

規(guī)則更新可以把規(guī)則文件放置到其他服務(wù)器,通過crontab任務(wù)定時(shí)下載來更新規(guī)則,nginx reload即可生效。以保障ngx lua waf的高性能。

只記錄過濾日志,不開啟過濾,在代碼里在check前面加上--注釋即可,如果需要過濾,反之

一些說明:

過濾規(guī)則在wafconf下,可根據(jù)需求自行調(diào)整,每條規(guī)則需換行,或者用|分割

  •   global是全局過濾文件,里面的規(guī)則對(duì)post和get都過濾 
  •   get是只在get請(qǐng)求過濾的規(guī)則  
  •   post是只在post請(qǐng)求過濾的規(guī)則  
  •   whitelist是白名單,里面的url匹配到不做過濾   
  •   user-agent是對(duì)user-agent的過濾規(guī)則

默認(rèn)開啟了get和post過濾,需要開啟cookie過濾的,編輯waf.lua取消部分--注釋即可

日志文件名稱格式如下:虛擬主機(jī)名_sec.log

相關(guān)文章

  • 詳解在使用CDN加速時(shí)Nginx獲取用戶IP的配置方法

    詳解在使用CDN加速時(shí)Nginx獲取用戶IP的配置方法

    這篇文章主要介紹了在使用CDN加速時(shí)Nginx服務(wù)器獲取用戶IP的方法,文中針對(duì)PHP站點(diǎn)環(huán)境舉例來講,需要的朋友可以參考下
    2016-02-02
  • nginx查看連接數(shù)的幾種方法小結(jié)

    nginx查看連接數(shù)的幾種方法小結(jié)

    nginx作為目前最流行的web服務(wù)器之一,在許多生產(chǎn)環(huán)境都能看到他的蹤影,有時(shí)候,我們需要統(tǒng)計(jì)nginx的連接配置,本文主要分享一下如何統(tǒng)計(jì)nginx的連接數(shù),需要的朋友可以參考下
    2024-02-02
  • 一些優(yōu)化Nginx服務(wù)器的技巧簡介

    一些優(yōu)化Nginx服務(wù)器的技巧簡介

    這篇文章主要介紹了一些優(yōu)化Nginx服務(wù)器的技巧簡介,包括對(duì)HTTP模塊和Events模塊的配置建議,需要的朋友可以參考下
    2015-06-06
  • Nginx配置本地圖片服務(wù)器的實(shí)現(xiàn)

    Nginx配置本地圖片服務(wù)器的實(shí)現(xiàn)

    本文主要介紹了Nginx配置本地圖片服務(wù)器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Nginx漏洞整改實(shí)現(xiàn)限制IP訪問&隱藏nginx版本信息

    Nginx漏洞整改實(shí)現(xiàn)限制IP訪問&隱藏nginx版本信息

    本文主要介紹了Nginx漏洞整改實(shí)現(xiàn)限制IP訪問&隱藏nginx版本信息,通過配置Nginx的ACL,可以輕松實(shí)現(xiàn),下面就來具體介紹一下,感興趣的可以了解一下
    2024-03-03
  • Nginx的yum安裝-Centos7過程

    Nginx的yum安裝-Centos7過程

    本文詳細(xì)介紹了如何在Linux系統(tǒng)上安裝和配置Nginx服務(wù)器,包括安裝yum工具包、創(chuàng)建Nginx yum源倉庫、安裝Nginx、啟動(dòng)Nginx、開啟80端口以及相關(guān)命令總結(jié)
    2024-12-12
  • nginx之virtual host虛擬主機(jī)的配置實(shí)現(xiàn)

    nginx之virtual host虛擬主機(jī)的配置實(shí)現(xiàn)

    虛擬主機(jī)(vhost)技術(shù)允許一臺(tái)物理服務(wù)器托管多個(gè)獨(dú)立網(wǎng)站或應(yīng)用,每個(gè)虛擬主機(jī)擁有獨(dú)立的域名、配置文件等,實(shí)現(xiàn)資源隔離管理,Nginx服務(wù)器通過配置文件實(shí)現(xiàn)虛擬主機(jī)設(shè)置,感興趣的可以了解一下
    2024-11-11
  • 基于Nginx 反向代理獲取真實(shí)IP的問題詳解

    基于Nginx 反向代理獲取真實(shí)IP的問題詳解

    下面小編就為大家分享一篇基于Nginx 反向代理獲取真實(shí)IP的問題詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 解決httpd占用80端口導(dǎo)致Nginx啟動(dòng)失敗報(bào)錯(cuò)的解決辦法

    解決httpd占用80端口導(dǎo)致Nginx啟動(dòng)失敗報(bào)錯(cuò)的解決辦法

    今天在建自己小網(wǎng)站時(shí)啟動(dòng)Nginx時(shí),發(fā)現(xiàn)其報(bào)下列錯(cuò)誤,意思是因?yàn)?0端口被占用導(dǎo)致Nginx啟動(dòng)失敗,所以本文小編給大家介紹介紹如何解決解決httpd占用80端口導(dǎo)致Nginx啟動(dòng)不成功報(bào)nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    2023-11-11
  • nginx 隱藏版本號(hào)與WEB服務(wù)器信息的解決方法

    nginx 隱藏版本號(hào)與WEB服務(wù)器信息的解決方法

    這篇文章主要介紹了nginx 隱藏版本號(hào)與WEB服務(wù)器信息的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11

最新評(píng)論

临洮县| 东台市| 洪江市| 伊川县| 营口市| 阜宁县| 建平县| 甘孜县| 德令哈市| 青阳县| 始兴县| 龙川县| 隆昌县| 海口市| 凤凰县| 南陵县| 墨竹工卡县| 皋兰县| 庆城县| 凌云县| 浦江县| 朝阳县| 灵川县| 南安市| 元江| 铜川市| 海宁市| 曲周县| 攀枝花市| 开封县| 文化| 屏山县| 章丘市| 射阳县| 桃源县| 明光市| 板桥市| 宣城市| 湘阴县| 自贡市| 怀仁县|