概述
深信服防火墻自身監控可以滿足絕大部分需求,比如哪個應用占了最大帶寬,哪個用戶訪問了哪些網站?這里我們為什么使用鴻鵠呢?因為我們要的是數據的處理和分析,比如某個用戶在某個事件都做了哪些行為,這個在防火墻上去查看日志是巨大的工作量,效率低,費時長,且容易錯漏。而這個恰恰是鴻鵠擅長。我們在運維中不能僅僅關注在監控上,更擴展到安全上,從而保證整個基礎架構的穩定、安全運行。
監控目標
收集并保存防火墻設備的日志,滿足等保要求
監控防火墻的登錄安全
監控防火墻的配置安全
提供基于用戶或IP或其他關鍵字的搜索,強化安全
安裝vector
Vector作為數據采集器,可以接收設備的syslog日志,并轉發鴻鵠平臺。Vector配置方法參考下文:
安裝Vector
查看安裝后vector版本,確認安裝成功
vector安裝好后,直接執行vector 時,系統首先會去/usr/bin下尋找命令,如果不在這個目錄中,就會找不到了。這個時候我們就需要為這些找不到的命令建立一個鏈接文件,鏈接到/usr/bin下 ?
登錄鴻鵠平臺,數據管理>新建數據集
編輯數據源名稱,選擇數據集范圍為上面創建的“switch”,此時會啟用
創建syslog.toml腳本,需要調整字段
address = "0.0.0.0:514":0.0.0.0表示接收所有主機發送過來的syslog,514表示接收的端口(syslog默認為514)
mode = "udp":表示接收syslog的協議syslog默認為udp)
._target_table = "switch" : 表示上文你創建的數據集名稱
address = "172.20.6.111:9092":鴻鵠的IP和相應的端口
運行修改的syslog腳本,注意保持運行狀態。
登錄交換機觸發syslog(注:登錄交換機輸入命令都會自動觸發syslog)。登錄鴻鵠平臺查看數據是否導入到switch數據集。如下圖事件計數已經顯示數據導入成功
查詢下通過vector導入到switch數據集的數據
配置防火墻syslog
syslog配置>填寫鴻鵠IP和端口號>應用
字段抽取
深信服由于是國產防火墻,防火墻日志字段很多包含中文,因此我們需要再次抽取字段。字段抽取的邏輯是,先通過sql語句創建視圖,視圖生成后我們就可以直接調用視圖里的字段,它實際日志仍舊存放在原數據集。
我們先分析下日志格式。
通過以下兩條日志我們可以看到,日志格式后半段的格式是不一樣的,針對這種情況,我這里的做法是,先抽取共性字段,再單獨逐個抽取不同類型的日志字段。
以該日志為例
共性字段抽取
以該日志為例
sangfor_syslog,這里是需要新建的視圖名稱
switch._time 腳本中由第六行開始switch均指的需要抽取數據的原數據集,這里需要根據你的數據集名稱替換
where contains( switch._message, '日志類型') '日志類型'指的是你要搜索到這個寫日志特定的字段,通過’日志類型‘可以限定日志里所有包含'日志類型'的日志
正則表達式如何寫以及測試
訪問https://regex101.com/,在REGULAR EXPRESSION里填寫正則表達式,或直接在這里寫
在TESTING STRING里輸入日志,可以直接從鴻鵠上拷貝相關的日志
正則表達式如果是正確的,會生成對應的顏色,以及右下角會Match ?information里會顯示抽取的字段名和字段內容
在高階查詢中運行,成功
在視圖里可以查看到我們創建的sangfor_syslog的視圖
我們運行搜索語句測試下,同時在紅色部分可以看到我們抽取出來的字段
NAT字段抽取
以該日志為例
sangfor_nat_syslog,這里是需要新建的視圖名稱
switch._time 腳本中由第六行開始switch均指的需要抽取數據的原數據集,這里需要根據你的數據集名稱替換
where contains( switch._message, 'NAT') '日志類型'指的是你要搜索到這個寫日志特定的字段,通過NAT可以限定日志里所有包含NAT的日志
正則表達式如何寫以及測試
訪問https://regex101.com/,在REGULAR EXPRESSION里填寫正則表達式,或直接在這里寫
在TESTING STRING里輸入日志,可以直接從鴻鵠上拷貝相關的日志
正則表達式如果是正確的,會生成對應的顏色,以及右下角會Match ?information里會顯示抽取的字段名和字段內容,
注意:正則表達式寫的時候抽取字段,group一定都要命名,不然就不要定義為group。比如下面的正則表達式,由于紅色部分選擇了抽取,確又沒有定義字段名稱,那么鴻鵠在抽取匹配字段時就會異常,雖然結果是成功的,但是字段都沒有抽取出來。
(?\w{3}\s\d{2}\s\d{2}:\d{2}:\d{2})\s\w+\s(?\w+):\s\D{4}:(?\D{5}),\s\D{5}:(?\w+),\s\D{3}:(?\d+.\d+.\d+.\d+),\s\D{3}:(?\d+),\s\D{4}:(?\d+.\d+.\d+.\d+),\s\D{4}:(?\d+),\s\D{2}:(\d+),\s\D{6}:(?\d+.\d+.\d+.\d+),\s\D{6}:(?\d+)$
在高階查詢中運行,成功
在視圖里可以查看到我們創建的sangfor_nat_syslog的視圖
我們運行搜索語句測試下,同時在紅色部分可以看到我們抽取出來的字段
login字段抽取
防火墻日志每個組件的日志格式各不相同,那么我們可能需要根據自己的情況進行多次字段抽取,上文已詳述過字段抽取方法,這里只提供抽取字段腳本供參考
圖表展示
在圖表創建部分,我這邊每個類型的圖表只會舉一個例子,但會把所有的搜索語言列出來,供大家參考。
儀表板>新建儀表板
創建完成
日志告警等級統計
新建圖表>日志類別
選擇圖表類型:餅圖
查詢語句:這個語句可以先在查詢里驗證,確認查找的結果是想要的
時間范圍:選擇1天,可以根據自己的情況調整
生成圖表后,可以查看各種類型的日志的統計
目的:用于統計日志總量,查看類別的統計總數。另外一點好看。
登錄事件明細
新建圖表>登錄事件明細
選擇圖表類型:表格
查詢語句:這個語句可以先在查詢里驗證,確認查找的結果是想要的
時間范圍:選擇1天,可以根據自己的情況調整
生成圖表后,可以查看設備登錄的明細,比如哪個用戶,哪個時間,從哪個IP登錄
目的:用于判斷是否有異常登錄,或密碼探測行為
登錄事件明細
新建圖表>設備數量
選擇圖表類型:單值趨勢圖
查詢語句:這個語句可以先在查詢里驗證,確認查找的結果是想要的
時間范圍:選擇30分鐘,可以根據自己的情況調整
生成圖表后,可以統計所有日志的發送到鴻鵠的服務器數量。
目的:用于確認當前監控的設備總計數量,便于檢查錯漏,主要為了圖表布局的好看。
搜索語句
以下列出所有本文中的搜索語句,供參考
小提示:搜索語句命令部分會調用抽取的字符段,如果未抽取字段,會出現報錯
效果圖
圖表創建完成后,我們選擇“網格布局”對圖表布局進行優化調整,最終效果圖如下