通過集中日志記錄來減少安全風(fēng)險(xiǎn)
日志記錄和日志分析對于保護(hù)基礎(chǔ)設(shè)施安全來說至關(guān)重要,尤其是當(dāng)我們考慮到通用漏洞的時(shí)候。這篇文章基于我在 FOSDEM'19 上的閃電秀《 Let's use centralized log collection to make incident response teams happy 》,目的是提高大家對日志匱乏這種安全問題的重視,提供一種避免風(fēng)險(xiǎn)的方法,并且倡議更多的安全實(shí)踐(利益聲明: 我為 NXLog 工作)。
為什么要收集日志?為什么要集中日志記錄?
確切的說,日志是寫入磁盤的僅追加的記錄序列。在實(shí)際生活中,日志可以在你嘗試尋找異常的根源時(shí)幫助你調(diào)查基礎(chǔ)設(shè)施的問題。當(dāng)你有多個(gè)使用自己的標(biāo)準(zhǔn)與格式的日志的異構(gòu)系統(tǒng),并且想用一種可靠的方法來接收和處理它們的時(shí)候,挑戰(zhàn)就來臨了。這通常以元數(shù)據(jù)為代價(jià)的。集中日志記錄解決方案需要共性,這種共性常常會(huì)去除許多開源日志記錄工具所提供的豐富的元數(shù)據(jù)。
日志記錄與監(jiān)控匱乏的安全風(fēng)險(xiǎn)
開源 Web 應(yīng)用程序安全項(xiàng)目(Open Web Application Security Project)( OWASP )是一個(gè)為業(yè)界貢獻(xiàn)了許多杰出項(xiàng)目(包括許多專注于軟件安全的 工具 )的非營利組織。OWASP 定期為應(yīng)用開發(fā)人員和維護(hù)者報(bào)告最危險(xiǎn)的安全挑戰(zhàn)。在最新一版《 10 項(xiàng)最嚴(yán)重的 Web 應(yīng)用程序安全風(fēng)險(xiǎn) 》中,OWASP 將日志記錄和監(jiān)控匱乏加入了列表中。OWASP 警告下列情況會(huì)導(dǎo)致日志記錄、檢測、監(jiān)控和主動(dòng)響應(yīng)的匱乏:
- 未記錄重要的可審計(jì)性事件,如:登錄、登錄失敗和高額交易。
- 告警和錯(cuò)誤事件未能產(chǎn)生、產(chǎn)生不足或不清晰的日志信息。
- 日志信息僅在本地存儲(chǔ)。
- 對于實(shí)時(shí)或準(zhǔn)實(shí)時(shí)的主動(dòng)攻擊,應(yīng)用程序無法檢測、處理和告警。
可以通過集中日志記錄(例如,不僅將日志本地存儲(chǔ))和結(jié)構(gòu)化日志數(shù)據(jù)以進(jìn)一步分析來緩解上述情形(例如,在告警儀表盤和安全套件中)。
舉例來說, 假設(shè)一個(gè) DNS 查詢會(huì)導(dǎo)向名為 hacked.badsite.net 的惡意網(wǎng)站。通過 DNS 監(jiān)控,管理員監(jiān)控并且主動(dòng)的分析 DNS 請求與響應(yīng)。DNS 監(jiān)控的效果依賴于充足的日志記錄與收集來發(fā)現(xiàn)潛在問題,同樣也依賴于結(jié)構(gòu)化 DNS 日志的結(jié)果來進(jìn)一步分析。
- 2019-01-29
- Time (GMT) Source Destination Protocol-Info
- 12:42:42.112898 SOURCE_IP xxx.xx.xx.x DNS Standard query 0x1de7 A hacked.badsite.net
你可以在 NXLog 社區(qū)版 中自己嘗試一下這個(gè)例子,也可以嘗試其他例子和代碼片段。 (再次聲明:我為 NXLog 工作)
重要的一點(diǎn):非結(jié)構(gòu)化數(shù)據(jù)與結(jié)構(gòu)化數(shù)據(jù)
花費(fèi)一點(diǎn)時(shí)間來考慮下日志數(shù)據(jù)格式是很重要的。例如,讓我們來考慮以下日志消息:
- debug1: Failed password for invalid user amy from SOURCE_IP port SOURCE_PORT ssh2
這段日志包含了一個(gè)預(yù)定義的結(jié)構(gòu),例如冒號前面的元數(shù)據(jù)關(guān)鍵詞(debug1)然而,余下的日志字段是一個(gè)未結(jié)構(gòu)化的字符串(Failed password for invalid user amy from SOURCE_IP port SOURCE_PORT ssh2)。因此,即便這個(gè)消息是人類可輕松閱讀的格式,但它不是一個(gè)計(jì)算機(jī)容易解析的格式。
非結(jié)構(gòu)化的事件數(shù)據(jù)存在局限性,包括難以解析、搜索和分析日志。重要的元數(shù)據(jù)通常以一種自由字符串的形式作為非結(jié)構(gòu)化數(shù)據(jù)字段,就像上面的例子一樣。日志管理員會(huì)在他們嘗試標(biāo)準(zhǔn)化/歸一化日志數(shù)據(jù)與集中日志源的過程中遇到這個(gè)問題。
接下來怎么做
除了集中和結(jié)構(gòu)化日志之外,確保你收集了正確的日志數(shù)據(jù)——Sysmon、PowerShell、Windows 事件日志、DNS 調(diào)試日志、ETW、內(nèi)核監(jiān)控、文件完整性監(jiān)控、數(shù)據(jù)庫日志、外部云日志等等。同樣也要選用適當(dāng)?shù)墓ぞ吆土鞒虂韥硎占R總和幫助理解數(shù)據(jù)。
希望這對你從不同日志源中集中日志收集提供了一個(gè)起點(diǎn):將日志發(fā)送到儀表盤、監(jiān)控軟件、分析軟件以及像安全性資訊與事件管理(SIEM)套件等外部源。