国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Nginx+Lua實現(xiàn)自定義WAF(Web application firewall)

這篇具有很好參考價值的文章主要介紹了使用Nginx+Lua實現(xiàn)自定義WAF(Web application firewall)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

轉(zhuǎn)載https://github.com/unixhot/waf

WAF
使用Nginx+Lua實現(xiàn)自定義WAF(Web application firewall)

功能列表:
支持IP白名單和黑名單功能,直接將黑名單的IP訪問拒絕。
支持URL白名單,將不需要過濾的URL進行定義。
支持User-Agent的過濾,匹配自定義規(guī)則中的條目,然后進行處理(返回403)。
支持CC攻擊防護,單個URL指定時間的訪問次數(shù),超過設(shè)定值,直接返回403。
支持Cookie過濾,匹配自定義規(guī)則中的條目,然后進行處理(返回403)。
支持URL過濾,匹配自定義規(guī)則中的條目,如果用戶請求的URL包含這些,返回403。
支持URL參數(shù)過濾,原理同上。
支持日志記錄,將所有拒絕的操作,記錄到日志中去。
日志記錄為JSON格式,便于日志分析,例如使用ELK進行攻擊日志收集、存儲、搜索和展示。
WAF實現(xiàn)
WAF一句話描述,就是解析HTTP請求(協(xié)議解析模塊),規(guī)則檢測(規(guī)則模塊),做不同的防御動作(動作模塊),并將防御過程(日志模塊)記錄下來。所以本文中的WAF的實現(xiàn)由五個模塊(配置模塊、協(xié)議解析模塊、規(guī)則模塊、動作模塊、錯誤處理模塊)組成。

安裝部署
以下方案選擇其中之一即可:

選擇1: 可以選擇使用原生的Nginx,增加Lua模塊實現(xiàn)部署。
選擇2: 直接使用OpenResty
OpenResty安裝
1 Yum安裝OpenResty(推薦)

源碼安裝和Yum安裝選擇其一即可,默認均安裝在/usr/local/openresty目錄下。

[root@opsany ~]# wget https://openresty.org/package/centos/openresty.repo
[root@opsany ~]# sudo mv openresty.repo /etc/yum.repos.d/
[root@opsany ~]# sudo yum install -y openresty
測試OpenResty和運行Lua
[root@opsany ~]# vim /usr/local/openresty/nginx/conf/nginx.conf
#在默認的server配置中增加
        location /hello {
            default_type text/html;
            content_by_lua_block {
                ngx.say("<p>hello, world</p>")
            }
        }
[root@opsany ~]# /usr/local/openresty/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/openresty-1.17.8.2/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty-1.17.8.2/nginx/conf/nginx.conf test is successful
[root@opsany ~]# /usr/local/openresty/nginx/sbin/nginx

測試訪問

[root@opsany ~]# curl http://127.0.0.1/hello
<p>hello, world</p>

WAF部署

[root@opsany ~]# git clone https://github.com/unixhot/waf.git
[root@opsany ~]# cp -r ./waf/waf /usr/local/openresty/nginx/conf/
[root@opsany ~]# vim /usr/local/openresty/nginx/conf/nginx.conf
#在http{}中增加,注意路徑,同時WAF日志默認存放在/tmp/日期_waf.log
#WAF
    lua_shared_dict limit 50m;
    lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
    init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua";
    access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua";
[root@opsany ~]# ln -s /usr/local/openresty/lualib/resty/ /usr/local/openresty/nginx/conf/waf/resty
[root@opsany ~]# /usr/local/openresty/nginx/sbin/nginx -t
[root@opsany ~]# /usr/local/openresty/nginx/sbin/nginx -s reload

Nginx反向代理

Nginx+Lua WAF很重要的一個基礎(chǔ)功能,即反向代理功能,通過代理的方式保護網(wǎng)站:
在nginx.conf配置文件倒數(shù)第二行處添加一行,增加www.douwaf.com的反向代理配置,保護的網(wǎng)站多了以后會導致nginx.conf太大難以維護,所以通常會把不同服務的配置文件獨立組成文件。

 include "/usr/local/openresty/nginx/conf/www.douwaf.com.conf";

include指令也支持通配符,所以更常見的做法是:

include "/home/maidou/opt/openresty/nginx/conf/*.conf";

編輯www.douwaf.com.conf,定義upstream組,對應是后端真實提供服務的服務器地址和端口,192.168.1.222:80

upstream xi{
    server 192.168.1.222:80;
}
server {
        listen       80;
    server_name  www.test.com;
    location / {
        proxy_pass    http://xi;
        index  index.html index.htm;
    }
}

使用頁面訪問,可以正常使用,說明反向代理配置生效。測試階段也可以不進行DNS切換,修改/etc/hosts文件也可以達到同樣效果

基于Nginx+Lua的WAF

1)WAF配置。WAF的配置在config.lua文件中完成,其中比較重要的幾個配置內(nèi)容如下所示。
● config_waf_enable:表明WAF是否攔截,on表明檢測并攔截,off表明檢測不攔截
● config_log_dir:表明WAF日志對應的路徑
● config_rule_dir:表明WAF規(guī)則對應的路徑
● config_url_check:表明是否對URL進行檢測
● config_user_agent_check:表明是否對user_agent進行檢測
● config_cookie_check:表明是否對cookie進行檢測
● config_post_check:表明是否對post內(nèi)容進行檢測
● config_output_html:表明檢測到攻擊后返回給用戶的頁面內(nèi)容

Lua環(huán)境初始化:Lua的初始化是在init.lua文件中完成的,根據(jù)配置分別加載不同的規(guī)則文件。比如在函數(shù)url_attack_check中,首先判斷配置文件中是否配置需要檢測URL:

function url_attack_check()
    if config_url_check == "on" then

如果配置了該選項,則加載對應的檢測規(guī)則:

local URL_RULES = get_rule('url.rule')

其他檢測URL參數(shù)、cookie以及post內(nèi)容都類似。

Lua處理HTTP協(xié)議:
這個是整個WAF最核心的部分,流程如圖2-8所示,Nginx處理HTTP協(xié)議的請求內(nèi)容,將HTTP協(xié)議解析成URL、URL參數(shù)、post內(nèi)容、cookie、user-agent等字段,Lua針對這些字段進行檢測,判斷攻擊類型。處理應答內(nèi)容類似,不再贅述。整個處理過程體現(xiàn)在access.lua文件,可以看出一個HTTP請求會如圖2-9所示,串行經(jīng)過各種檢測:
使用Nginx+Lua實現(xiàn)自定義WAF(Web application firewall)

    function waf_main()
        if white_ip_check() then
        elseif black_ip_check() then
        elseif user_agent_attack_check() then
        elseif cc_attack_check() then
        elseif cookie_attack_check() then
        elseif url_attack_check() then
        elseif url_args_attack_check()

Lua的檢測規(guī)則在rule-config目錄,不同檢測內(nèi)容保存在不同文件中文章來源地址http://www.zghlxwxcb.cn/news/detail-513511.html

到了這里,關(guān)于使用Nginx+Lua實現(xiàn)自定義WAF(Web application firewall)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 使用nginx實現(xiàn)自定義大小預覽縮略圖,http_image_filter模塊的安裝使用

    使用nginx實現(xiàn)自定義大小預覽縮略圖,http_image_filter模塊的安裝使用

    本預覽圖功能使用的是nginx的http_image_filter模塊,可以自定義緩存大小解決占用服務器容量問題,建議配合fastDFS使用 http_image_filter不會改變圖片原始比例 例如原始圖片尺寸為16:9,那么輸入寬高值之后會以較小的一個參數(shù)展現(xiàn)預覽圖,比如原始圖為1600*900,傳遞參數(shù)320*90會拿到

    2023年04月24日
    瀏覽(27)
  • 虛擬機中使用Nginx + Keepalived 實現(xiàn)高可用 Web 負載均衡筆記

    虛擬機中使用Nginx + Keepalived 實現(xiàn)高可用 Web 負載均衡筆記

    物理操作系統(tǒng):Windows10 虛擬機軟件:VMWare Workstation 16 Pro 虛擬操作系統(tǒng)統(tǒng):CentOS7 Nginx:1.24.0 Keepalived:2.2.8 在VMWare Worksattion中安裝了2臺CentOS7的虛擬機,橋接方式下IP地址分別為:192.168.0.35、192.168.0.36 VIP IP 主機名 Nginx端口 默認主從 192.168.0.100 192.168.0.35 wongoing01 88 MASTER 192.168

    2024年02月11日
    瀏覽(25)
  • 將樹莓派轉(zhuǎn)身為強大的Web服務器:使用Nginx和cpolar實現(xiàn)遠程訪問

    將樹莓派轉(zhuǎn)身為強大的Web服務器:使用Nginx和cpolar實現(xiàn)遠程訪問

    安裝 Nginx(發(fā)音為“engine-x”)可以將您的樹莓派變成一個強大的 Web 服務器,可以用于托管網(wǎng)站或 Web 應用程序。相比其他 Web 服務器,Nginx 的內(nèi)存占用率非常低,可以在樹莓派等資源受限的設(shè)備上運行。同時結(jié)合cpolar 內(nèi)網(wǎng)穿透工具即可實現(xiàn)遠程訪問。 在樹莓派安裝Nginx也是

    2024年02月12日
    瀏覽(23)
  • lua使用resty.http做nginx反向代理(https請求,docker容器化部署集群),一個域名多項目轉(zhuǎn)發(fā)

    lua使用resty.http做nginx反向代理(https請求,docker容器化部署集群),一個域名多項目轉(zhuǎn)發(fā)

    下載使用 鏈接:https://pan.baidu.com/s/1uQ7yCzQsPWsF6xavFTpbZg 提取碼:htay –來自百度網(wǎng)盤超級會員V5的分享 ad_load.lua文件

    2024年01月18日
    瀏覽(34)
  • 使用nginx-lua配置統(tǒng)一url自動跳轉(zhuǎn)到hadoop-ha集群的active節(jié)點

    下載安裝nginx所用的依賴 下載nginx 稍后安裝nginx 安裝lua語言 安裝LuaJIT,安裝路徑/opt/luaJIT-2.1.0自行設(shè)置 設(shè)置環(huán)境變量 打開: vi /etc/profile 保存: . /etc/profile 下載ngx_devel_kit(NDK)模塊 :https://github.com/simpl/ngx_devel_kit/tags,不需要安裝,記住存放位置/opt/luaJIT-2.0.5/package/ngx_deve

    2024年02月10日
    瀏覽(47)
  • 基于nginx的waf方案naxsi源碼理解(6)_策略處理

    這里的策略處理以讀取MainRule策略為例。 以naxsi_core.rules的首條策略做示例: 如何讀入配置策略信息 value 的內(nèi)容通過gdb調(diào)試輸入如下: ngx_http_naxsi_cfg_parse_one_rule // 策略分析函數(shù) ngx_http_naxsi_cfg_parse_one_rule函數(shù)主要部分: 看這部分前,請先看先看下下面rule_parser的定義: 先看下

    2024年02月16日
    瀏覽(14)
  • 基于nginx的waf方案naxsi源碼理解(4)_框架架構(gòu)

    naxsi-1.3/naxsi_src源碼文件:

    2024年02月16日
    瀏覽(16)
  • WAF/Web應用安全(攔截惡意非法請求)

    WAF/Web應用安全(攔截惡意非法請求)

    Web 應用防火墻(Web Application Firewall, WAF)通過對 HTTP(S) 請求進行檢測,識別并阻斷 SQL 注入、跨站腳本攻擊、跨站請求偽造等攻擊,保護 Web 服務安全穩(wěn)定。 Web 安全是所有互聯(lián)網(wǎng)應用必須具備的功能,沒有安全防護的應用猶如懷揣珠寶的兒童獨自行走在盜賊環(huán)伺的黑夜里。

    2024年02月11日
    瀏覽(16)
  • 什么是 Web 應用防火墻(WAF)?

    什么是 Web 應用防火墻(WAF)?

    當下時候,網(wǎng)絡攻擊和針對網(wǎng)站的攻擊與日俱增。同時,在我們的日常生活中,安全的重要性也迅速提升。因此,保證在線上世界的安全變得越來越重要。更重要的是,保護你的網(wǎng)站和所存儲的數(shù)據(jù)的安全。所以,我們將介紹什么是 Web 應用防火墻(WAF)? 為什么保護你的網(wǎng)站

    2024年02月04日
    瀏覽(30)
  • 阿里云Web應用防火墻-WAF

    WAF可以對網(wǎng)站進行掃描,識別API漏洞。 如何設(shè)置API安全_Web應用防火墻-阿里云幫助中心 登錄認證 手機驗證碼認證 數(shù)據(jù)保存 數(shù)據(jù)查詢 數(shù)據(jù)導出 數(shù)據(jù)分享 數(shù)據(jù)更新 數(shù)據(jù)刪除 數(shù)據(jù)增加 下線注銷 信息發(fā)送 信息認證 郵件信息發(fā)送 郵箱驗證碼認證 賬號密碼認證 賬號注冊 敏感數(shù)

    2023年04月23日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包