Linux 系統稽核日誌記錄著系統內所有活動,是資安事件分析與系統管理不可或缺的工具。Auditd 作為 Linux 主要稽核機制,負責收集、儲存及分析系統事件。透過設定 audit 規則,可以精確捕捉特定事件,例如檔案變更、使用者登入、系統呼叫等。Auditd 的日誌分析功能,結合 ausearch 與 aureport 等工具,能有效協助管理員追蹤可疑活動,並及時發現潛在安全風險。瞭解 auditd 的運作原理及操作方法,對於提升系統安全性至關重要,特別是針對敏感資料保護和入侵偵測等方面,能提供更全面的防護。
This file is automatically generated from /etc/audit/rules.d
-D -b 8192 -f 1
#### 設定解析
- `-D`:清除目前所有的規則和監控。
- `-b 8192`:設定可同時存在的稽核緩衝區數量。
- `-f 1`:設定錯誤模式為僅報告關鍵錯誤。
## 使用 auditd 監控系統活動
監控系統活動是確保系統安全的重要手段之一。Linux 提供了一個強大的工具——`auditd`,用於記錄系統中的各種事件,從而幫助管理員追蹤潛在的安全問題。
### 建立監控規則
要使用 `auditd`,首先需要建立監控規則。規則可以用來指定需要監控的檔案、目錄或系統呼叫。
#### 監控檔案變更
假設我們想要監控 `/etc/passwd` 檔案的變更,可以使用以下命令建立規則:
```bash
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
這條規則表示當 /etc/passwd 檔案被寫入或屬性變更時,記錄一個事件,並將其與 passwd_changes 關鍵字相關聯。
監控目錄存取
如果我們想要監控 /secretcats 目錄的存取,可以使用以下命令:
sudo auditctl -w /secretcats/ -k secretcats_watch
這條規則將監控對 /secretcats 目錄的所有存取操作,包括讀取、寫入、屬性變更和執行(進入目錄)。
監控系統呼叫
我們還可以監控特定的系統呼叫。例如,若要監控使用者 Charlie(UID 為 1006)嘗試開啟或建立檔案的操作,可以使用以下命令:
sudo auditctl -a always,exit -F arch=b64 -S openat -F auid=1006
這條規則的詳細解釋如下:
-a always,exit:指定在離開指定的系統呼叫時總是產生一個稽核記錄。-F arch=b64:指定監控的 CPU 架構為 x86_64。-S openat:指定要監控的系統呼叫為openat,該呼叫用於開啟或建立檔案。-F auid=1006:指定要監控的使用者 ID 為 1006(Charlie)。
使用 ausearch 和 aureport
建立監控規則後,我們需要使用 ausearch 和 aureport 工具來查詢和報告稽核日誌。
搜尋檔案變更警示
假設我們已經建立了監控 /etc/passwd 檔案變更的規則,並對該檔案進行了變更。我們可以使用 ausearch 查詢相關的日誌記錄。
首先,使用 chfn 命令變更 /etc/passwd 中的資訊:
sudo chfn cleopatra
然後,使用 ausearch 查詢相關的日誌記錄。
圖表翻譯:稽核流程圖示
圖表翻譯: 此圖示呈現了使用 auditd 的基本流程。首先,建立監控規則以指定需要監控的物件。接著,auditd 會記錄相關的日誌。然後,使用 ausearch 和 aureport 工具分析這些日誌。最後,檢視報告和分析結果,以瞭解系統活動和潛在的安全問題。
監控系統日誌與稽核規則的應用
在 Linux 系統中,稽核功能(audit)能夠幫助管理員追蹤系統中的重要事件,例如檔案修改、使用者行為等。透過審核日誌,管理員可以即時監控系統的安全狀況。
使用 ausearch 查詢稽核訊息
ausearch 命令用於查詢稽核日誌中與特定稽核規則相關的訊息。以下範例展示如何使用 ausearch 查詢與 passwd_changes 相關的稽核訊息:
sudo ausearch -i -k passwd_changes
輸出結果中包含了兩種型別的事件:
- 建立稽核規則的事件。
- 觸發稽核規則的事件。
程式碼解析
sudo ausearch -i -k passwd_changes
-i引數將數值資料轉換為文字輸出,例如將使用者 ID 轉換為實際的使用者名稱。-k passwd_changes指定要查詢的稽核規則名稱(或鍵值)。
使用 aureport 解析稽核日誌
aureport 命令能夠將稽核日誌中的原始資料解析為更容易理解的格式。以下範例展示如何使用 aureport 查詢與 passwd_changes 相關的日誌:
sudo aureport -i -k | grep 'passwd_changes'
輸出結果顯示了多個與 passwd_changes 相關的事件,包括使用 chfn 和 usermod 命令的操作。
程式碼解析
sudo aureport -i -k | grep 'passwd_changes'
-i引數同樣用於將數值資料轉換為文字輸出。-k引數表示要查詢所有與稽核規則鍵值相關的日誌專案。grep 'passwd_changes'用於過濾出與passwd_changes相關的日誌。
監控目錄存取行為
以下範例展示如何建立一個監控 /secretcats/ 目錄的稽核規則:
sudo auditctl -w /secretcats/ -k secretcats_watch
當使用者存取或嘗試存取該目錄時,系統將會記錄相關事件。
程式碼解析
sudo auditctl -w /secretcats/ -k secretcats_watch
-w /secretcats/指定要監控的目錄。-k secretcats_watch指定該監控規則的鍵值名稱。
分析目錄存取事件
當 Vicky 存取 /secretcats/ 目錄並執行 ls -l 命令時,系統記錄了多個相關事件。使用 ausearch 可以檢視這些事件的詳細資訊:
sudo ausearch -i -k secretcats_watch | less
輸出結果顯示了多個記錄,每個記錄涵蓋了事件的不同方面,例如執行的命令、目錄資訊等。
程式碼解析
sudo ausearch -i -k secretcats_watch | less
- 該命令用於查詢與
secretcats_watch相關的稽核事件,並將結果透過管道傳輸給less命令以便分頁檢視。
事件分析與安全性提升
透過分析這些事件,管理員可以瞭解系統中的安全性狀況,並採取相應措施加強系統的安全性。例如,當 Charlie 嘗試存取 /secretcats/ 目錄但被拒絕時,系統同樣記錄了相關事件。這些資訊能夠幫助管理員檢測潛在的安全威脅。
使用Auditd監控系統活動與安全事件
Auditd是Linux系統上用來監控和記錄系統活動的重要工具,特別是在安全事件的追蹤和分析方面。本文將介紹如何使用Auditd來監控特定目錄的存取、分析相關日誌,並使用ausearch和aureport工具來檢視和匯總安全事件。
監控特定目錄的存取
首先,我們需要設定Auditd規則來監控特定目錄的存取。例如,若要監控/secretcats目錄,可以使用以下命令:
sudo auditctl -w /secretcats -p rwa -k secretcats_watch
這條規則會對/secretcats目錄進行讀取(r)、寫入(w)和屬性變更(a)的監控,並將相關事件標記為secretcats_watch。
分析Audit日誌
當監控規則生效後,系統會開始記錄相關的安全事件。我們可以使用ausearch命令來檢視這些事件:
sudo ausearch -i -k secretcats_watch | less
內容解密:
sudo ausearch -i -k secretcats_watch:使用ausearch命令查詢與secretcats_watch鍵相關的事件,並以人類可讀的格式(-i引數)顯示結果。| less:將結果透過管道傳給less命令,以便分頁檢視。
從輸出結果中,我們可以看到不同使用者對/secretcats目錄的操作記錄,例如:
type=PROCTITLE msg=audit(12/12/2017 12:32:04.341:14152) : proctitle=ls --color=auto -l /secretcat
type=PATH msg=audit(12/12/2017 12:32:04.341:14152) : item=0 name=/secretcats inode=33583041 dev=f
type=CWD msg=audit(12/12/2017 12:32:04.341:14152) : cwd=/home/charlie
type=SYSCALL msg=audit(12/12/2017 12:32:04.341:14152) : arch=x86_64 syscall=lgetxattr success=yes
內容解密:
type=PROCTITLE:顯示觸發事件的命令列內容。type=PATH:顯示涉及的檔案或目錄的詳細資訊。type=CWD:顯示當前的作業目錄。type=SYSCALL:顯示系統呼叫的詳細資訊,包括是否成功。
使用Aureport匯總安全事件
若要獲得更簡潔的安全事件匯總報告,可以使用aureport命令:
sudo aureport -i -k | less
內容解密:
sudo aureport -i -k:生成與鍵相關的報告,並以人類可讀的格式顯示。| less:將結果透過管道傳給less命令,以便分頁檢視。
輸出結果將顯示每個事件的日期、時間、鍵、成功狀態、可執行檔案、使用者ID和事件編號等資訊。
分析特定使用者的行為
透過過濾aureport的輸出結果,可以進一步分析特定使用者(如Charlie)的行為:
sudo aureport -i -k | grep 'secretcats_watch'
內容解密:
sudo aureport -i -k | grep 'secretcats_watch':過濾出與secretcats_watch鍵相關的事件。
Linux Audit 機制詳解與實務應用
Linux Audit(稽核)機制是一種強大的安全工具,用於監控和記錄系統上的各種事件。無論是系統管理員還是安全專家,都可以利用 Audit 來追蹤系統活動、偵測潛在威脅並進行故障排除。
Audit 事件型別與基本原理
Audit 機制能夠捕捉多種事件,包括但不限於:
- 系統呼叫(syscall)
- 檔案和目錄存取
- 使用者認證事件
- 系統設定變更
這些事件的記錄可以幫助管理員瞭解系統的執行狀況,並在需要時進行安全稽核。
設定 Audit 規則
Audit 規則定義了哪些事件應該被記錄。以下是一個簡單的範例,展示如何監控特定目錄:
sudo auditctl -w /secretcats -p rwxa
內容解密:
auditctl是用於控制 Audit 系統的命令。-w選項表示要監控的路徑(此例中為/secretcats目錄)。-p選項指定要監控的操作型別:r:讀取w:寫入x:執行a:屬性變更
分析 Audit 日誌
使用 aureport 和 ausearch 命令可以分析和查詢 Audit 日誌。
使用 aureport 檢視系統呼叫報告
sudo aureport -s -i | grep 'openat'
內容解密:
aureport用於生成各種報告。-s選項表示生成系統呼叫報告。-i選項使輸出更具可讀性(例如,將 UID/GID 轉換為使用者名稱/群組名稱)。grep 'openat'用於過濾出包含openat系統呼叫的事件。
使用 ausearch 檢視特定事件詳情
sudo ausearch -a 14122
內容解密:
ausearch用於搜尋特定的 Audit 事件。-a選項後面跟著事件編號,用於顯示該事件的詳細資訊。
圖表說明:Audit 事件流程
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title Linux系統稽核工具Auditd深度解析
package "安全架構" {
package "網路安全" {
component [防火牆] as firewall
component [WAF] as waf
component [DDoS 防護] as ddos
}
package "身份認證" {
component [OAuth 2.0] as oauth
component [JWT Token] as jwt
component [MFA] as mfa
}
package "資料安全" {
component [加密傳輸 TLS] as tls
component [資料加密] as encrypt
component [金鑰管理] as kms
}
package "監控審計" {
component [日誌收集] as log
component [威脅偵測] as threat
component [合規審計] as audit
}
}
firewall --> waf : 過濾流量
waf --> oauth : 驗證身份
oauth --> jwt : 簽發憑證
jwt --> tls : 加密傳輸
tls --> encrypt : 資料保護
log --> threat : 異常分析
threat --> audit : 報告生成
@enduml
圖表翻譯:
此圖展示了 Audit 事件從觸發到被記錄和分析的整個流程。使用者操作首先觸發事件,Audit 系統將這些事件記錄到日誌中。然後,使用 aureport 和 ausearch 等工具對日誌進行分析,最終生成安全稽核結果。
使用預定義規則集
在某些 Linux 發行版中,Audit 提供了預定義的規則集,可以根據不同的安全需求進行套用。例如,在 AlmaLinux 中,可以在 /usr/share/audit/sample-rules/ 目錄下找到這些規則集:
cd /usr/share/audit/sample-rules/
ls -l
內容解密:
- 此目錄包含多個預定義的 Audit 規則檔案,例如
30-pci-dss-v31.rules和30-stig.rules。 - 管理員可以根據實際需求選擇合適的規則檔案並將其套用到系統中。
使用 auditd 進行系統稽核
在確保系統安全性的過程中,稽核是一項至關重要的任務。Linux 系統中的 auditd 工具提供了一種有效的方式來監控和記錄系統活動,從而幫助管理員檢測潛在的安全威脅。
auditd 的基本概念
auditd 是 Linux 系統中的一個守護程式,負責收集和記錄系統的稽核資訊。它可以監控檔案系統的變化、系統呼叫、使用者活動等,並將相關資訊記錄到日誌檔案中。
使用預設的稽核規則集
auditd 提供了多個預設的稽核規則集,這些規則集針對不同的認證機構的稽核標準進行了最佳化。例如:
- nispom:美國國防部的國家工業安全計劃(National Industrial Security Program)使用的規則集。
- pci-dss:支付卡行業資料安全標準(Payment Card Industry Data Security Standard)使用的規則集,適用於金融行業。
- stig:安全技術實施(Security Technical Implementation Guides),主要用於美國政府部門。
要使用這些規則集,只需將相應的檔案複製到 /etc/audit/rules.d/ 目錄下,然後重啟 auditd 服務即可。
sudo cp 30-pci-dss-v31.rules /etc/audit/rules.d
sudo service auditd restart # 適用於 Red Hat、CentOS 或 AlmaLinux
sudo systemctl restart auditd # 適用於 Ubuntu
自定義稽核規則
如果預設的規則集不能滿足需求,可以透過編輯規則檔案來自定義稽核規則。例如,開啟或關閉特定的規則,或是新增自定義的監控規則。
實作:使用 auditd 進行稽核
練習 1:使用 auditd 的功能
- 安裝
auditd(僅限 Ubuntu)。 - 檢視當前生效的稽核規則。
- 建立一個臨時規則來監控
/etc/passwd檔案的變化。 - 新增一個使用者賬戶並檢查相關的稽核日誌。
- 將臨時規則儲存為永久規則。
練習 2:使用預設的稽核規則集
- 刪除之前的自定義規則檔案並重啟
auditd服務。 - 複製多個預設的規則檔案到
/etc/audit/rules.d/目錄。 - 重啟
auditd服務並檢視新的稽核規則。
使用 inotifywait 進行實時監控
除了 auditd,還可以使用 inotifywait 工具來實時監控檔案或目錄的變化。這個工具屬於 inotify-tools 軟體包。
基本用法
sudo inotifywait -m /secrets/donnie_file.txt
sudo inotifywait -m -r /secrets/
注意事項
- 需要使用
sudo以 root 許可權執行。 -m選項表示持續監控。-r選項表示遞迴監控整個目錄。