返回文章列表

Linux系統稽核工具Auditd深度解析

本文探討 Linux 系統稽核工具 auditd 的使用方法,涵蓋規則設定、日誌分析、安全事件追蹤等導向。搭配 ausearch 和 aureport 指令,示範如何有效監控系統活動,並解析 audit

資安 系統管理

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

建立監控規則後,我們需要使用 ausearchaureport 工具來查詢和報告稽核日誌。

搜尋檔案變更警示

假設我們已經建立了監控 /etc/passwd 檔案變更的規則,並對該檔案進行了變更。我們可以使用 ausearch 查詢相關的日誌記錄。

首先,使用 chfn 命令變更 /etc/passwd 中的資訊:

sudo chfn cleopatra

然後,使用 ausearch 查詢相關的日誌記錄。

圖表翻譯:稽核流程圖示

圖表翻譯: 此圖示呈現了使用 auditd 的基本流程。首先,建立監控規則以指定需要監控的物件。接著,auditd 會記錄相關的日誌。然後,使用 ausearchaureport 工具分析這些日誌。最後,檢視報告和分析結果,以瞭解系統活動和潛在的安全問題。

監控系統日誌與稽核規則的應用

在 Linux 系統中,稽核功能(audit)能夠幫助管理員追蹤系統中的重要事件,例如檔案修改、使用者行為等。透過審核日誌,管理員可以即時監控系統的安全狀況。

使用 ausearch 查詢稽核訊息

ausearch 命令用於查詢稽核日誌中與特定稽核規則相關的訊息。以下範例展示如何使用 ausearch 查詢與 passwd_changes 相關的稽核訊息:

sudo ausearch -i -k passwd_changes

輸出結果中包含了兩種型別的事件:

  1. 建立稽核規則的事件。
  2. 觸發稽核規則的事件。

程式碼解析

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 相關的事件,包括使用 chfnusermod 命令的操作。

程式碼解析

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來監控特定目錄的存取、分析相關日誌,並使用ausearchaureport工具來檢視和匯總安全事件。

監控特定目錄的存取

首先,我們需要設定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 機制能夠捕捉多種事件,包括但不限於:

  1. 系統呼叫(syscall)
  2. 檔案和目錄存取
  3. 使用者認證事件
  4. 系統設定變更

這些事件的記錄可以幫助管理員瞭解系統的執行狀況,並在需要時進行安全稽核。

設定 Audit 規則

Audit 規則定義了哪些事件應該被記錄。以下是一個簡單的範例,展示如何監控特定目錄:

sudo auditctl -w /secretcats -p rwxa

內容解密:

  • auditctl 是用於控制 Audit 系統的命令。
  • -w 選項表示要監控的路徑(此例中為 /secretcats 目錄)。
  • -p 選項指定要監控的操作型別:
    • r:讀取
    • w:寫入
    • x:執行
    • a:屬性變更

分析 Audit 日誌

使用 aureportausearch 命令可以分析和查詢 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 系統將這些事件記錄到日誌中。然後,使用 aureportausearch 等工具對日誌進行分析,最終生成安全稽核結果。

使用預定義規則集

在某些 Linux 發行版中,Audit 提供了預定義的規則集,可以根據不同的安全需求進行套用。例如,在 AlmaLinux 中,可以在 /usr/share/audit/sample-rules/ 目錄下找到這些規則集:

cd /usr/share/audit/sample-rules/
ls -l

內容解密:

  • 此目錄包含多個預定義的 Audit 規則檔案,例如 30-pci-dss-v31.rules30-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 的功能

  1. 安裝 auditd(僅限 Ubuntu)。
  2. 檢視當前生效的稽核規則。
  3. 建立一個臨時規則來監控 /etc/passwd 檔案的變化。
  4. 新增一個使用者賬戶並檢查相關的稽核日誌。
  5. 將臨時規則儲存為永久規則。

練習 2:使用預設的稽核規則集

  1. 刪除之前的自定義規則檔案並重啟 auditd 服務。
  2. 複製多個預設的規則檔案到 /etc/audit/rules.d/ 目錄。
  3. 重啟 auditd 服務並檢視新的稽核規則。

使用 inotifywait 進行實時監控

除了 auditd,還可以使用 inotifywait 工具來實時監控檔案或目錄的變化。這個工具屬於 inotify-tools 軟體包。

基本用法

sudo inotifywait -m /secrets/donnie_file.txt
sudo inotifywait -m -r /secrets/

注意事項

  • 需要使用 sudo 以 root 許可權執行。
  • -m 選項表示持續監控。
  • -r 選項表示遞迴監控整個目錄。