<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/tips/5796

            0x00 前言


            在前一篇文章《基于ngx_lua模塊的waf開發實踐》(鏈接為:http://drops.wooyun.org/tips/5136)中,提出了后續的三個研究方向,其中一個就是在多站點下waf分離的研究,現在將這方面的研究跟大家分享一下。

            0x01 問題分析


            最初的思路是直接在nginx中配置多個站點,然后在每個站點中都加載一份waf代碼。

            流程圖如下:

            enter image description here

            這樣做的情況下,如果站點比較多,就會導致nginx配置比較亂,而且當nginx配置多站點的情況下,會出現一些問題。我這里就借用安全寶的一份對比表來說明。

            enter image description here

            當然,在實際應用中,一般并不會應用到這么多站點,這里只是做個說明。但是上面說的問題確實是存在的。

            0x02 需求分析


            需求1:在nginx中能夠只監聽1個站點,能夠實現所有站點轉發

            需求2:各個站點可以獨立進行控制,包括waf開發,日志開關以及使用的規則

            0x03 需求實現


            針對需求1,流程圖如下:

            enter image description here

            nginx.conf關鍵代碼:

            enter image description here

            waf.lua關鍵代碼:

            enter image description here

            訪問過程分析:

            當一個用戶訪問到waf服務器時,首先獲取host參數,根據網址配置里查詢到對應的upstream,給預先定義的變量$upstream,從而達到正確轉發的目的。

            而且后期還可以將網站信息存儲在數據庫,當第一次訪問的時候再加載到內存,達到動態加載的目的。

            針對需求2:

            網址配置代碼如下:

            enter image description here

            規則配置代碼如下:

            enter image description here

            這樣可以給每一個網站單獨配置規則集,并在網址配置里面注明即可。

            在網址配置里面可以注明每個網站的waf開關,是否記錄日志,以及哪個規則。

            在規則配置中可以指定規則的放行或阻攔,日志的開啟或關閉。

            0x04 后續需解決問題


            0x05 總結


            此文只是提供一種思路,當然也不是我想出來的,也是參考各種資料,最主要的是針對現在各種大流量大并發的網絡環境下,很多公司包括我們公司有這樣一種需求,所以分享出來,希望和更多的人交流,學習。

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线