您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么做Nginx安全日志分析可視化,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
之前介紹過 ModSecurity 這款優秀的開源 WAF,它是一個入侵檢測與阻止的引擎,原本是Apache的一個模塊,現在可作為單獨模塊編譯添加到 Nginx 服務中
雖然這款 WAF 很優秀,但是使用起來并沒有那么容易,之前也整理了文章介紹它的原理和規則,然而還有一個問題,就是它的日志分析,之前介紹原理規則的時候,也介紹了它的日志規則,但是在使用過程中,純文本的記錄方式,對于入侵分析太不友好了
所以今天介紹一款管理 ModSecurity 日志的開源項目 WAF-FLE
WAF-FLE是專門用來處理ModSecurity日志和事件的控制臺,管理員可以通過WAF-FLE查看和搜索ModSecurity記錄的日志
WAF-FLE是PHP寫的開源項目,搭建需要LNMP/LAMP環境
環境需求:
Apache/Nginx
PHP5.3+
php-pdo
php-mysql
php-apc
php-geoip
MySQL5.1+
安裝環境不贅述,只說一個GeoIP庫的安裝,這里要通過GeoIP庫去展示入侵IP信息,所以需要用到這個庫,安裝很簡單,其實就是下載一個dat數據庫,從https://www.maxmind.com/en/geoip-demo下載
下載后解壓出dat文件即可
環境準備好之后,從github下載WAF-FLE:https://github.com/klaubert/waf-fle
在waf-fle的extra目錄下,存放了數據庫sql文件,以及Apache的配置文件,如果是用的Apache,直接將這個配置復制到apache配置目錄下即可,如果用Nginx,參考下面的配置
修改config.php的時候,因為我沒有安裝apc的緩存擴展,這擴展很老了,所以直接設置APC_ON=false,關閉這個緩存
完成上面之后,通過域名訪問,即可訪問到安裝界面
這里檢查php擴展的時候,如果你不是Apache的話,會有個問題,就是在setup.php的499行,它用apache_getenv檢測是否用Apache運行的,如果沒運行Apache,這里過不去,我這里是Nginx運行的,所以打開setup.php文件499行,把這部分代碼注釋掉即可
接著點擊運行創建數據庫
這里創建數據庫的時候又有個問題,在setup.php代碼28行的地方,執行創建函數的時候,引用一個$databaseSchema,這里修改定義了一個位置,但是我放置的是我的位置,所以這里需要根據自己情況進行修改
修改完成后,繼續通過頁面執行創建數據庫操作,創建完成如下:
安裝完成,默認用戶名密碼是admin/admin,之后,在config.php中配置$SETUP=false,關閉安裝之后,重新訪問
默認用戶密碼登錄之后,就需要修改用戶名密碼
設置完新密碼之后,就會跳轉到主界面了
目前沒有數據,現在開始接入日志數據,點擊菜單欄的management,添加sensor
保存后,即創建好一個sensor,用來接收日志
創建好之后,在這個sensor上面,開始配置事件接收器
這里選著用mlog2waffle的方式接收日志,然后選著service deamon的方式查詢日志,這種是實時查詢,WAF-FLE controller URL是配置waf-fle的控制器地址,mlog2waffle是通過put請求發送數據到這個接口地址,下面就是配置ModSecurity日志的配置路徑,配置完成后,點擊Next
系統會給出提示配置,需要按照給出的配置,配置這幾個配置文件,這里按照提示的配置操作即可,需要的mlog2waffle配置文件及啟動腳本都在extra目錄下
配置完成后,啟動mlog2waffle
mlog2waffle,是通過put方法發送日志到waf-fle的,但是默認Nginx是不允許put請求的,所以啟動會報錯,需要在nginx中,通過dav方法,允許put請求
啟動mlog2waffle過程中,遇到不少問題,記錄如下:
mlog2waffle中配置了$CHECK_CERT = “TRUE”,用來檢測SSL的,當用http的時候,這里要改成False,否則會握手失敗
mlog2waffle中配置了$CHECK_CONNECTIVITY = “TRUE”,這里是啟動,檢測mlog2waffle和waffle的連通信的,通過check_conn方法
這里通過PUT方法,發送了一個檢測請求,這里比較坑的是,發送PUT請求,沒有URI,但是Nginx在檢測到PUT請求沒有URI的時候,會報409,認為資源有沖突
所以,不管怎么做,這里檢測就不會通過,兩種方法處理,一種是直接關閉這個檢測,mlog2waffle就可以正常啟動,另外一種方法就是修改這個檢測的方法,將uri帶上,mlog2waffle是perl腳本,很簡單
waf-fle中使用了不少Apache專用內置函數,比如apache_getenv()、getallheaders()、apache_setenv(),因為這里用的Nginx,所以這幾個函數都沒有,
這里需要手動替換下,通過$_SERVER去獲取客戶端IP,而getallheaders()方法,需要手動寫一個,如下:
另外在index.php中,65行的位置,原本是通過apache_setenv()將獲取到的sensor的名稱,復制給Apache的”REMOTE_USER”,這里不用Apache,所以直接注釋掉即可
修改完這些,就可以通過腳本啟動mlog2waffle了
啟動后,通過waf的access日志就可以看到mlog2waffle已經開始通過put方法將日志解析成event,傳輸到waf-fle
在mlog2waffle的readIndex方法中,因為要讀取并解析日志索引文件,所以有一個正則匹配如圖:
這里需要你更具自己記錄的日志格式進行修改匹配,完全匹配后,才能正確讀取到日志,并解析后通過send_event方法將解析后的內容通過PUT方法傳輸到waf-fle進行展示
waf-fle的接收文件就一個index.php,它將所有步驟通過正則解析,有興趣的可以看下源碼,到此waf-fle就部署完成了,看下效果
雖然waf-fle是比較老的開源項目,但是對于modsecurity的日志分析完全夠用
感謝你能夠認真閱讀完這篇文章,希望小編分享的“怎么做Nginx安全日志分析可視化”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。