splunk與日志分析
- splunk的使用
-
- splunk配置
- 日志字段提取
- 日志分析場景
-
- 已知ip,檢視行為
splunk的使用
在安全服務的多種場景下,我們都離不開日志分析這項工作,特别是在應急與溯源的過程中,日志分析成為快速定位問題的重要方式。輕量級的日志分析我們通常使用文本編輯器或者excel等具備簡單篩選功能的工具進行檢視,但是對于大量級的日志分析,在很多場景下這些工具不再适用,下面我将介紹splunk這款工具在日常應急及溯源工作中使用的一些思路。
splunk配置
打開splunk選擇search&reporting應用

在設定中選擇添加資料選項,選擇離線上傳方式。
選擇資料來源
splunk自帶了很多日志類型,如果沒有與我們需要分析的日志比對的,我們點選下一步。
自定義來源類型
填寫來源類型、名稱及描述
輸入設定:
建立索引:Splunk 平台在標明的索引中将傳入資料存儲為事件,友善我們後期搜尋。
這裡設定索引為”2021nginx_access”
檢查我們添加的資料資訊:
送出成功,進行搜尋
source=“nginx_access_2020-05-31.log” host=“WIN-74J486TOVSJ” index=“2021nginx_access” sourcetype=“nginx_access_log”
可以看到搜尋比對日志的重要參數,由于我們設定了索引,隻需要保留index字段即可。
日志字段提取
接下來介紹一下,當splunk無法識别我們的日志類型時,無法自動提取我們想要的字段,平台提供了兩種方式進行自定義的字段提取
在這一條記錄中我們發現隻有host、source、sourcetype三個字段,我們需要将日志内容字段進行提取
在字段設定區域點選提取新字段
選擇一條内容完整的日志作為提取的樣例
選擇方法
Splunk提供了兩種提取的方式,一種是正則表達,一種是分隔符,由于大部分日志記錄沒有明顯的分隔符且日志字段複雜,是以一般情況下選擇正規表達式。Splunk具有強大的自動生成正規表達式的功能,一般情況下不需要我們自己去寫正則。
我們隻需要勾選對應的字段,并設定字段名稱,splunk會為我們自動生産正規表達式,并同将正則同步到所有的日志。
提取了7個重要的字段
儲存後對我們的正則進行驗證,檢視是否達到我們想要的提取效果
nginx access日志格式詳解
time_local 本地時間戳
host 請求host位址
remote_addr 遠端請求位址
request 請求uri
request_time 整個請求的總時間
body_bytes_sent 請求檔案内容大小
status http請求狀态
upstream_addr 背景提供服務的位址(即轉發處理的目标位址)
upstream_reponse_time 請求時,upstream的響應時間
upstream_status upstream狀态
http_refer url跳轉來源
http_user_agent 使用者終端浏覽器的UserAgent
到此我們完成了日志的前期處理,接下來我們傳回到搜尋功能,定位我們的日志,選擇提取的字段,發現所有字段提取成功。
日志分析場景
這裡使用tomcat的access日志進行分析
已知ip,檢視行為
使用語句進行篩選
index=“tomcat_log” tomcat_access_ip=xxx.165.152.167
使用splunk語句檢視該ip所有通路情況,可以快速查到該ip的行為
index=“tomcat_log” tomcat_access_ip=xxx.165.152.167 |top tomcat_uri limit=1000
之後會繼續更新splunk在安全服務場景中的使用情況,更多的splunk語句參考官方使用手冊:https://docs.splunk.com/Documentation/Splunk/7.2.4/Translated/SimplifiedChinesemanuals