Categories: Linux

Adultd:Linux 系統稽核工具使用教學與範例

介紹如何在 Linux 系統下安裝並使用 auditd 服務,收集、儲存與查閱系統各種安全性稽核記錄。

auditd(代表 audit daemon)是一個在背景運行的服務,專門負責將系統稽核記錄寫入磁碟,提供管理者搜尋與查核,對於正式的系統而言是一個必要的安全性工具。

安裝 Auditd

若在 Ubuntu Linux 中可透過 apt 來安裝 auditd:

# 安裝 Auditd 相關套件
sudo apt install auditd audispd-plugins

在安裝 auditd 時會安裝兩個套件,其中 auditd 是儲存稽核記錄用的 server,而 audispd-plugins 則是收集系統事件的 client,server 與 client 也可以放在不同的機器上(遠端記錄伺服器)。

安裝好之後,可以使用以下指令操控系統的 auditd 服務:

# 顯示 Auditd 執行狀態
systemctl status auditd

# 停止 Auditd
sudo systemctl stop auditd

# 啟動 Auditd
sudo systemctl start auditd

# 重新啟動 Auditd
sudo systemctl restart auditd

# 重新載入 Auditd 設定檔
sudo systemctl reload auditd

設定稽核記錄規則

安裝好 auditd 之後,要自行設定稽核記錄的詳細規則,auditctl 指令可用來檢視與管理稽核記錄規則:

# 顯示目前狀態
sudo auditctl -s

# 顯示所有規則
sudo auditctl -l

# 移除所有規則
sudo auditctl -D

# 設定每秒記錄筆數上限為 20
sudo auditctl -r 20

以下是一些簡單的稽核記錄規則範例:

# 記錄特定程式的所有系統呼叫
sudo auditctl -a always, -S all -F pid=1005

# 記錄特定使用者開啟的檔案
sudo auditctl -a always, -S openat -F auid=510

# 記錄失敗的 openat 呼叫
sudo auditctl -a always, -S openat -F success=0

# 記錄 /etc/shadow 檔案變更(兩種寫法皆可)
sudo auditctl -w /etc/shadow -p wa
sudo auditctl -a always, -F path=/etc/shadow -F perm=wa

# 記錄整個目錄的變更(包含子目錄與檔案,兩種寫法皆可)
sudo auditctl -w /etc/ -p wa
sudo auditctl -a always, -F dir=/etc/ -F perm=wa

# 記錄管理者存取其他使用者的檔案
sudo auditctl -a always, -F dir=/home/ -F uid=0 -C auid!=obj_uid

若要記錄系統上所有人執行的指令,可以使用以下規則:

# 記錄所有執行指令
sudo auditctl -a ,always -F arch=b64 -S execve
sudo auditctl -a ,always -F arch=b32 -S execve

使用 auditctl 指令所設定的規則會直接生效,但是重開機之後就會不見了,若需要長期使用的設定,可將設定內容(auditctl 指令的參數)寫在 /etc/audit/rules.d/audit.rules 設定檔案中。

其餘更詳細的規則可以參考 Neo23x0 所提供的範例設定。

查詢系統稽核記錄

若要查詢 auditd 所儲存下來的稽核記錄,可以使用 ausearch 指令,通常由於記錄內容量很大,所以查詢的時候都會需要配合各種查詢條件進行篩選,找出有興趣的部分,以下是一些常用的參數說明:

參數 說明
-a 事件ID 顯示指定事件的記錄報表
-c 指令名稱 顯示指定指令的記錄報表
-f 檔案名稱 顯示指定檔案的記錄報表
-hn 主機名稱 顯示指定主機的記錄報表
-i 將數值資料進行適當轉換,方便閱讀
-if 輸入檔案 從指定檔案輸入記錄資料
-k 標籤 顯示指定標籤的記錄報表
-p PID 顯示指定程式的記錄報表
-te 日期 時間 指定結束日期或時間
-ts 日期 時間 指定開始日期或時間
-ui UID 顯示指定使用者的記錄報表
-gi GID 顯示指定群組的記錄報表
-w 關鍵字 搜尋完整關鍵字
-x 執行檔名稱 顯示指定執行檔的記錄報表

以下是一些簡單的範例:

# 查看指定檔案或目錄的記錄
ausearch -f /etc

# 查看今天的記錄
ausearch -ts today

# 查看 2020/07/31 當天的記錄
ausearch -ts 07/31/20

# 查看來自於 IP 位址 192.168.0.12 的記錄
ausearch -hn 192.168.0.12

# 查看使用者 UID 為 1001 的相關記錄
ausearch -ui 1001

# 將數值資料進行適當轉換,方便閱讀
ausearch -i

# 查看含有特定標籤的記錄
ausearch -k my_keyword

ausearch 這些篩選參數可以任意組合混用,產生自己需要的查詢條件。

產生統計報表

若要產生記錄的統計報表,可以使用 aureport 指令,以下是一些常用的參數說明:

參數 說明
-ts 日期 時間 顯示指定日期、時間之後的記錄報表
-au 產生使用者認證相關報表
-e 產生事件相關報表
-cr 產生加密相關報表
-c 產生設定檔變更相關報表
--comm 產生指令執行相關報表
-f 產生檔案相關報表
-l 產生登入相關報表
-m 產生帳號變更相關報表
-n 產生異常事件相關報表
-i 將數值資料進行適當轉換,方便閱讀
--failed 只顯示成功的事件
--success 只顯示失敗的事件

以下是一些簡單的範例:

# 產生今天的統計報表
sudo aureport -ts today

# 產生昨天的統計報表
sudo aureport -ts yesterday

# 產生使用者認證相關報表,並將數值資料進行適當轉換,方便閱讀
sudo aureport -au -i

# 顯示登入失敗的報表
sudo aureport -l --failed

參考資料:The Urban PenguinLinux HintcloudinThe Geek Diaryn.sfs.twnixCraftStackExchange

Share
Published by
Office Guide
Tags: 資訊安全

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

10 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

10 個月 ago