91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么為Nginx加入一個使用深度學習的軟WAF

發布時間:2021-12-13 09:46:23 來源:億速云 閱讀:183 作者:iii 欄目:網絡管理

本篇內容主要講解“怎么為Nginx加入一個使用深度學習的軟WAF”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么為Nginx加入一個使用深度學習的軟WAF”吧!

一、前言

本文介紹如何向Nginx增加了一個使用Tensorflow C庫的軟WAF模塊,模塊主體基于Naxsi。

二、獲取數據及訓練數據

這里,之前有Dalao發表過這樣一篇文章:基于卷積神經網絡的SQL注入檢測。

這是一個開源的項目,但是由于速度的關系,我不打算使用這篇文章的模型,僅僅采用這篇文章使用的數據集。這樣可以節省很多特征工程的時間。

數據訓練并不是這篇文章的重點,這里僅僅說一下訓練結果,這里為了防止CUDA周期對檢測時間的影響,使用CPU跑推理過程。

三、使用Tensorflow C庫做推理

我們的目標是向Nginx加入一個使用Tensorflow C庫的軟WAF模塊。如果從頭開始寫一個軟WAF,想必會占用相當多的時間,并且這個也和這篇文章的主旨偏離。

在Nginx的開源的軟WAF模塊中,Naxsi是一個很受歡迎的模塊。這個模塊使用C作為主開發語言,因此,如果我們想基于這個模塊加一個推理過程,很大可能性需要加入Tensorflow C庫。那么,首先應該做的是,試著使用Tensorflow C庫做單次推理,并做好模塊測試。

Main文件如下:

怎么為Nginx加入一個使用深度學習的軟WAF

編譯完成后,可以跑一下數據,這里為了節省篇幅,僅測試一條

怎么為Nginx加入一個使用深度學習的軟WAF

可見這部分代碼已經可以正常工作了。

四、向Naxsi內加入代碼

首先,回憶下Nginx的一些原理,Nginx在運行時使用fork,創建了一個master進程和若干worker進程,worker進程是實際處理數據的進程。每個模塊的初始化函數,實際上是由初始化的進程來完成的,在這之后,如果配置了daemon,初始化的進程自動退出。

同時,為了便于理解,我們可以把推理流程拆分成這樣幾個部分:

1. 初始化模型

2. 將輸入轉化為Tensorflow識別的格式

3. 運行模型,獲取結果

其中,步驟1僅需運行一次,步驟2,3在每次運行這個模塊時都需要進行。

我對于Nginx理解不深,DaLao輕拍。

由于worker進程是fork產生的,實際上是無法使用初始化進程產生的model,所以,每個worker進程需要自己初始化一次自己的model相關資源。因此,新加入的函數應該類似這樣:

怎么為Nginx加入一個使用深度學習的軟WAF

這里,我僅僅檢測uri內部的注入請求,其它部分的檢測代碼應該是非常相似的,這里就不再重復羅嗦了。

由于tf_model是在第一次調用模塊時才會自動載入,因此,在這個服務器的每個worker進程第一次接受到數據時,可能會稍卡頓一下。

五、編譯運行

將Naxsi和Nginx的代碼同時復制到編譯服務器內部,然后在編譯Nginx時,包含下Naxsi的代碼部分。

怎么為Nginx加入一個使用深度學習的軟WAF

由于Nginx在編譯時是不使用Tensorflow庫的,所以我們需要手動修改下Makefile,在鏈接時自動加入Tensorflow庫,最后編譯。

怎么為Nginx加入一個使用深度學習的軟WAF

然后,需要將Naxsi的配置文件復制到Nginx的conf文件夾內,配置Naxsi,并修改Nginx的配置文件,加入Naxsi模塊。自定義一個403的Page,作為注入發生時的替換界面。然后,運行Nginx。

六、手注測試

這里使用簡單的手注,測試模塊是否正常運行。這里實際是不可能出現注入的情況的,如果有興趣的話,可以加入DVWA等靶機,使用sqlmap等工具實際攻擊。

怎么為Nginx加入一個使用深度學習的軟WAF

到此,相信大家對“怎么為Nginx加入一個使用深度學習的軟WAF”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

禄丰县| 莒南县| 太湖县| 绥德县| 赤城县| 阿拉尔市| 玉树县| 富民县| 雷州市| 岳普湖县| 栾川县| 全椒县| 平利县| 九江县| 怀宁县| 修文县| 玉溪市| 泽库县| 朔州市| 天等县| 观塘区| 扎鲁特旗| 阳谷县| 蒙城县| 叙永县| 潮州市| 冕宁县| 龙州县| 绥宁县| 泰和县| 濉溪县| 无极县| 宜兰市| 宾阳县| 怀宁县| 宿松县| 澄迈县| 全州县| 电白县| 克什克腾旗| 岢岚县|