Splunk系列之Splunk搜索分析篇
一、簡單概述
Splunk 平臺的核心就是 SPL,即 Splunk 搜索處理語言。
它提供了非常強大的能力,通過簡單的SPL語句就可以實現對安全分析場景的描述。
這里,我們以Linux secure日志分析作為示例,進行安全場景的構建。
二、安全日志
我們先來了解一下Linux secure日志中比較常見的登錄日志,如下兩條登錄記錄作為示例:
#登錄失敗
Thu Feb 08 2022 00:15:04 www2 sshd[1100]: Failed password for root from 142.162.221.28 port 4585 ssh2
#登錄成功
Thu Feb 08 2022 00:15:05 mailsv1 sshd[74181]: Accepted password for nsharpe from 10.2.10.163 port 4245 ssh2
通過對比,我們可以找到幾個關鍵信息,比如登錄動作(成功/失敗),用戶名、ip地址等,可以通過編輯正則表達式將關鍵字段提取出來,以便進行搜索和分析。
新增字段提取:
三、安全分析場景
3.1 用戶暴力破解
場景描述:用戶賬戶在短時間內嘗試大量的錯誤密碼,即可視為用戶暴力破解攻擊。
安全策略:單一賬號,5分鐘內超過20次登錄失敗
sourcetype="secure*" action=Failed | bucket _time span=5m | stats count by user,ip | search count>20
3.2 爆破用戶名最多的前10個用戶名/ip地址
場景描述:獲取暴力破解所使用的密碼本,或者暴力破解的來源IP地址。
- 爆破用戶名TOP 10
sourcetype="secure*" "failed password" | stats count by user| sort 10 -count
- 爆破IP地址TOP 10
sourcetype="secure*" AND "failed password" | stats count by ip | sort 10 -count
3.3 用戶異地登錄
場景描述:用戶在短時間內多次異地登錄,即可視為賬號異常。
安全策略:1天內超過3個城市登錄即可視為異地登錄異常。
sourcetype="secure*" action="Accepted"| bin _time span=1d |iplocation ip | stats values(ip) as ip values(City) as City dc(City) as src_count by user|search src_count>3
3.4 賬號共享
場景描述:同一個ip登錄多個賬號,以發現存在賬號共享的用戶。
安全策略:1天內同一個ip登錄超過10個賬號
sourcetype="secure*" action="Accepted" | bin _time span=1d | stats count(user) by ip| rename count(user) as User_count | search User_count>10
3.5 異常登錄時間
場景描述:定義正常的服務器登錄時間,如在正常時間范圍之外登錄,可提示告警。
安全策略:凌晨0點到早上8點內,登錄成功的賬號。
sourcetype="secure*" action="Accepted" date_hour<8 | table _time,ip,user
3.6 異常IP登錄
場景描述:定義正常的服務器登錄地址,如在正常的IP地址之外登錄,可提示告警。
安全策略:查找登錄成功的用戶列表,排除來自堡壘機的登錄ip,就可以獲取到違規登錄行為。
sourcetype="secure*" action="Accepted" AND ip!="10.1.*" | stats count by ip,user
3.7 整體用戶登錄情況
場景描述:用戶整體的登錄趨勢應該是呈現規律性變化,如果某一天出現異常,就需要對引發問題的原因進行排查。
安全策略:查看每天登錄成功/失敗的次數,有了對照做參考,我們容易從數據趨勢看到異常情況。
sourcetype=secure-* "password" | timechart per_day(eval(action="Accepted"))
as success,per_day(eval(action = "Failed" OR action = "failed")) as Failed