欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

功能描述:
處在黑名單中的ip與網(wǎng)絡,將無法訪問web服務。
處在白名單中的ip,訪問web服務時,將不受nginx所有安全模塊的限制。
支持動態(tài)黑名單(需要與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?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

四、動態(tài)黑名單
    要使用該功能必須對 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以上版本,建議正則過濾函數(shù)改為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規(guī)則目錄(一般在waf/conf/目錄下)

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

絕對路徑如有變動,需對應修改

然后重啟nginx即可

配置文件詳細說明:

  RulePath = "/usr/local/nginx/conf/waf/wafconf/"
  --規(guī)則存放目錄
  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~~]]
  --警告內(nèi)容,可在中括號內(nèi)自定義
  備注:不要亂動雙引號,區(qū)分大小寫

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

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

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

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

2016127115510844.png (550×314)

2016127115607432.png (550×253)

規(guī)則更新:

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

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

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

一些說明:

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

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

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

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

相關文章

  • 如何用Nginx解決前端跨域問題

    如何用Nginx解決前端跨域問題

    在開發(fā)靜態(tài)頁面時,類似Vue的應用,我們常會調用一些接口,這些接口極可能是跨域,這篇文章主要介紹了如何用Nginx解決前端跨域問題,非常具有實用價值,需要的朋友可以參考下
    2019-01-01
  • 使用nginx同域名下部署多個vue項目并使用反向代理的方法

    使用nginx同域名下部署多個vue項目并使用反向代理的方法

    這篇文章主要介紹了使用nginx同域名下部署多個vue項目并使用反向代理的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Nginx正向代理實現(xiàn)局域網(wǎng)電腦訪問外網(wǎng)的過程詳解

    Nginx正向代理實現(xiàn)局域網(wǎng)電腦訪問外網(wǎng)的過程詳解

    在工作中我遇到了一個類似的情況:在公司網(wǎng)絡中,由于管理要求,局域網(wǎng)內(nèi)的電腦不能直接訪問外網(wǎng),但是,工作上領導吩咐需要讓局域網(wǎng)內(nèi)的電腦能夠訪問外網(wǎng)上的某個網(wǎng)站,這時候就需要用到正向代理,本文將介紹如何配置 Nginx 實現(xiàn)這一功能,需要的朋友可以參考下
    2024-03-03
  • Nginx服務器中配置GeoIP模塊來攔截指定國家IP

    Nginx服務器中配置GeoIP模塊來攔截指定國家IP

    Nginx中自帶GeoIP模塊可以屏蔽指定IP的請求,只不過默認沒有被編譯,打開以后我們只要再下載一個IP規(guī)則就行,Nginx服務器中配置GeoIP模塊來攔截指定國家IP
    2016-06-06
  • windows7下安裝PHP+nginx的方法

    windows7下安裝PHP+nginx的方法

    這篇文章主要介紹了windows7下安裝PHP+nginx的方法,較為詳細的分析了Windows7環(huán)境下安裝php與nginx服務器環(huán)境的具體步驟與相關設置技巧,需要的朋友可以參考下
    2016-05-05
  • nginx反向代理java項目方式

    nginx反向代理java項目方式

    文章簡要介紹了如何使用Nginx作為反向代理來部署Java項目,核心在于配置proxy_pass指令
    2024-12-12
  • NGINX服務器配置404錯誤頁面轉向的方法

    NGINX服務器配置404錯誤頁面轉向的方法

    這篇文章主要為大家詳細介紹了NGINX服務器配置404錯誤頁面轉向的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • nginx反向代理二級域名綁定方法及注意事項

    nginx反向代理二級域名綁定方法及注意事項

    本文介紹了利用nginx實現(xiàn)多域名和多站點的綁定的方法及相關注意事項,需要的朋友可以參考下
    2018-04-04
  • 很詳細的Nginx配置說明

    很詳細的Nginx配置說明

    這篇文章主要為大家分享了一篇很詳細的Nginx配置說明,主要內(nèi)容包括Nginx常用功能、Nginx配置文件結構,想要了解Nginx配置的朋友不要錯過,參考一下
    2016-02-02
  • nginx配置虛擬主機vhost的方法詳解

    nginx配置虛擬主機vhost的方法詳解

    Nginx vhost配置,可實現(xiàn)基于ip、端口號、servername的虛擬主機,同時可避免直接修改主配置文件。在nginx下配置虛擬主機vhost非常方便。這篇文章主要介紹了nginx配置虛擬主機vhost的方法,需要的朋友可以參考下
    2017-03-03

最新評論