Linux 系統安全仰賴強大的稽核機制追蹤重要事件。本文探討如何設定 auditd 服務,監控未授權檔案存取、檔案系統掛載解除安裝、檔案刪除及特權命令執行等關鍵行為。同時,我們將結合 CIS Controls 安全規範,提供 32 位元和 64 位元系統的設定範例,並解說程式碼的含義,協助系統管理員有效提升系統安全性,及早發現並應對潛在威脅。透過 auditd 監控系統呼叫,例如 chmod、chown、mount、unlink、rename 等,並設定相應的篩選條件,可以精確記錄特定事件。規則設定中,-a always,exit 確保程式離開時記錄事件,-F arch 指定系統架構,-S 指定監控的系統呼叫,-F auid 設定使用者 ID 篩選,-k 設定關鍵字方便搜尋。此外,監控 sudo 命令執行、核心模組載入解除安裝等行為,也有助於提升系統安全性。

監控未授權檔案存取嘗試的稽核規則設定

在現代的資訊系統安全管理中,監控未授權的檔案存取嘗試是至關重要的。這不僅能幫助我們發現潛在的安全威脅,還能為事後分析提供詳細的日誌記錄。本文將介紹如何在 Linux 系統中使用 auditd 工具來監控未授權的檔案存取嘗試。

為什麼需要監控未授權的檔案存取嘗試?

未授權的檔案存取嘗試可能是惡意攻擊或內部人員誤操作的跡象。透過監控這些嘗試,我們可以及時發現並應對潛在的安全風險。

設定稽核規則

為了監控未授權的檔案存取嘗試,我們需要在 auditd 中設定相應的稽核規則。這些規則將根據系統架構(32 位或 64 位)有所不同。

32 位系統

對於 32 位系統,我們需要在 /etc/audit/rules.d/ 目錄下的 .rules 檔案中新增以下規則:

-a always,exit -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod

64 位系統

對於 64 位系統,我們需要在相同目錄下的 .rules 檔案中新增以下規則:

-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod

驗證規則

新增規則後,我們需要驗證這些規則是否正確地被載入到 auditd 的設定中。可以使用以下命令來檢查:

# grep perm_mod /etc/audit/rules.d/*.rules
# auditctl -l | grep perm_mod

程式碼解密:

  1. -a always,exit: 表示在系統呼叫離開時總是記錄稽核日誌。
  2. -F arch=b32-F arch=b64: 指定系統架構為 32 位或 64 位。
  3. -S: 指定要監控的系統呼叫,例如 chmodfchmodchown 等。
  4. -F auid>=1000: 表示只記錄 UID 大於或等於 1000 的使用者操作。
  5. -F auid!=4294967295: 表示排除 UID 為 4294967295(表示 Daemon 事件)的記錄。
  6. -k perm_mod: 為這些稽核規則設定一個關鍵字(key),以便於篩選和查詢相關的日誌記錄。

安全控制措施

本設定的實施符合 CIS Controls Version 7 中的第 5.5 條款,即實施自動化組態監控系統,以驗證所有安全組態元素,記錄核准的例外情況,並在發生未授權變更時發出警示。

加強Linux系統稽核以確保安全合規

在現代的資訊安全環境中,稽核和監控系統活動對於檢測潛在的安全威脅至關重要。Linux系統提供了強大的稽核工具,可以用來監控系統呼叫、檔案存取以及特權命令的執行。本文將詳細介紹如何設定Linux稽核守護程式(auditd)來監控關鍵的安全事件,包括檔案存取失敗、特權命令執行等,並確保系統符合相關的安全合規要求。

4.1.10 確保收集到檔案存取失敗的稽核資訊(自動化)

為了監控檔案存取失敗的事件,需要在32位元和64位元系統上分別設定稽核規則。

稽核

  1. 檢查稽核規則檔案:首先,驗證/etc/audit/rules.d/目錄下的.rules檔案是否包含正確的規則。

    # grep access /etc/audit/rules.d/*.rules
    

    預期的輸出應該與以下內容相符(針對32位元系統):

    -a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
    -a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
    

    對於64位元系統,還需要包含針對b64架構的規則:

    -a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
    -a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
    -a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
    -a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
    
  2. 檢查執行中的稽核組態:執行以下命令來驗證規則是否已生效。

    # auditctl -l | grep access
    

補救措施

根據系統的位元版本,編輯或建立/etc/audit/rules.d/目錄下的.rules檔案,並新增相應的稽核規則。例如,對於64位元系統,可以執行:

# vi /etc/audit/rules.d/access.rules

新增以下規則:

-a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b64 -S creat -S open-S openat-S truncate-S ftruncate-F exit=-EPERM-F auid>=1000-F auid!=4294967295-k access
-a always,exit-F arch=b32-S creat-S open-S openat-S truncate-S ftruncate-F exit=-EPERM-F auid>=1000-F auid!=4294967295-k access

CIS控制項

  • 版本7
    • 14.9 對敏感資料的存取或變更強制詳細記錄:強制對敏感資料的存取或變更進行詳細的稽核記錄。

4.1.11 確保收集到特權命令的使用情況(自動化)

監控具有特權的程式(如設定了setuid或setgid位元的程式)的執行情況,可以幫助檢測未授權的使用者是否正在執行這些命令。

稽核

  1. 尋找特權程式:執行以下命令來找出系統上所有具有特權的程式。

    # find <partition> xdev \( perm-4000-o-perm-2000 \) type f | awk'{print "-a always,exit-F path=" $1 "-F perm=x-F auid>=1000-F auid!=4294967295-k privileged" }'
    
  2. 驗證稽核規則:檢查產生的規則是否已包含在/etc/audit/rules.d/目錄下的.rules檔案中,以及是否出現在auditctl-l的輸出中。

補救措施

  1. 產生稽核規則:執行以下命令來為所有特權程式產生稽核規則。

    # find <partition> xdev \( perm-4000-o-perm-2000 \) type f | awk'{print "-a always,exit-F path=" $1 "-F perm=x-F auid>='"$(awk '/^\s*UID_MIN/{print $2}' /etc/login.defs)"' F auid!=4294967295-k privileged" }'
    
  2. 新增規則到稽核組態:將產生的規則新增到/etc/audit/rules.d/目錄下的.rules檔案中。

    # find/-xdev \( perm-4000-o-perm-2000 \) type f | awk'{print "-a always,exit-F path=" $1 "-F perm=x-F auid>='"$(awk '/^\s*UID_MIN/{print $2}' /etc/login.defs)"' F auid!=4294967295-k privileged"}' >>/etc/audit/rules.d/privileged.rules
    

CIS控制項

  • 版本7
    • 5.1 建立安全組態:維護所有授權作業系統和軟體的檔案化、標準化安全組態標準。

加強 Linux 系統稽核設定以提升安全性

在 Linux 系統的安全組態中,稽核(Audit)是一項至關重要的功能。透過稽核,系統管理員能夠監控和記錄系統上的各種活動,從而及時發現潛在的安全威脅。本文將重點介紹如何組態 Linux 稽核系統,以收集檔案系統掛載、解除安裝以及檔案刪除等事件的資訊。

4.1.12 確保收整合功的檔案系統掛載事件

適用範圍

  • Level 2 - 伺服器
  • Level 2 - 工作站

描述

監控 mount 系統呼叫的使用情況。mountumount 系統呼叫控制檔案系統的掛載和解除安裝。下面的引陣列態系統以在非特權使用者使用 mount 系統呼叫時建立稽核記錄。

理由

非特權使用者掛載檔案系統到系統是非常不尋常的。透過追蹤 mount 命令,系統管理員可以獲得外部媒體可能被掛載的證據。

稽核方法

對於 32 位系統,執行以下命令來驗證規則是否包含在 /etc/audit/rules.d/ 目錄下的 .rules 檔案中:

# grep mounts /etc/audit/rules.d/*.rules

輸出應符合:

-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts

對於 64 位系統,除了上述規則外,還應包含:

-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts
-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts

修復方法

對於 32 位系統,在 /etc/audit/rules.d/ 目錄下編輯或建立一個以 .rules 結尾的檔案,並新增以下行:

-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts

對於 64 位系統,則新增:

-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts
-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts

4.1.13 確保收集使用者刪除檔案的事件

適用範圍

  • Level 2 - 伺服器
  • Level 2 - 工作站

描述

監控與刪除或重新命名檔案和檔案屬性相關的系統呼叫。該組態設定監控 unlinkunlinkatrenamerenameat 系統呼叫,並將其標記為 “delete”。

理由

監控非特權使用者的這些呼叫可以為系統管理員提供有關受保護檔案的刪除或更改的證據。

稽核方法

對於 32 位系統,執行以下命令:

# grep delete /etc/audit/rules.d/*.rules

輸出應符合:

-a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete

對於 64 位系統,還應包含對 b64 的設定。

修復方法

對於 32 位系統,在 /etc/audit/rules.d/ 目錄下編輯或建立一個以 .rules 結尾的檔案,並新增以下行:

-a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete

對於 64 位系統,則需新增對 b64b32 的設定。

#### 內容解密:

上述設定透過組態 auditd 服務來監控特定的系統呼叫,例如 mountunlinkrename 等,以收集有關檔案系統操作的資訊。這有助於系統管理員檢測和回應潛在的安全事件。設定包括編輯 /etc/audit/rules.d/ 目錄下的規則檔案,並使用 auditctl 命令來驗證當前生效的稽核規則。

加強Linux系統稽核設定的安全措施

在現代的資訊安全環境中,Linux系統的管理者需要確保他們的系統具有足夠的稽核能力,以便能夠追蹤和記錄系統中的重要事件。本文將探討如何透過設定Linux系統的稽核機制,來加強系統的安全性。

4.1.13 確保刪除事件被收集

為了確保系統能夠記錄重要檔案的刪除事件,需要在/etc/audit/rules.d/目錄下建立或編輯.rules檔案,並新增相應的稽核規則。對於32位元系統,應新增以下規則:

-a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete

對於64位元系統,則需要新增:

-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
-a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete

內容解密:

  • -a always,exit 表示在程式離開時總是記錄該事件。
  • -F arch=b32-F arch=b64 指定了系統架構。
  • -S unlink-S unlinkat-S rename-S renameat 指定了要監控的系統呼叫。
  • -F auid>=1000-F auid!=4294967295 用於篩選非系統使用者的操作。
  • -k delete 是用於標記這些稽核記錄的關鍵字。

4.1.14 確保系統管理範圍內的變更被收集

監控系統管理員許可權範圍內的變更對於維持系統安全至關重要。需要在/etc/audit/rules.d/目錄下新增以下規則:

-w /etc/sudoers -p wa -k scope
-w /etc/sudoers.d/ -p wa -k scope

內容解密:

  • -w /etc/sudoers-w /etc/sudoers.d/ 指定了要監控的檔案或目錄。
  • -p wa 表示監控寫入和屬性變更事件。
  • -k scope 是標記這些稽核記錄的關鍵字。

4.1.15 確保系統管理員命令執行被收集

為了記錄系統管理員使用sudo執行的命令,需要在稽核規則中新增以下內容:

對於32位元系統:

-a exit,always -F arch=b32 -C euid!=uid -F euid=0 -F auid>=1000 -F auid!=4294967295 -S execve -k actions

對於64位元系統:

-a always,exit -F arch=b64 -C euid!=uid -F euid=0 -F auid>=1000 -F auid!=4294967295 -S execve -k actions
-a always,exit -F arch=b32 -C euid!=uid -F euid=0 -F auid>=1000 -F auid!=4294967295 -S execve -k actions

內容解密:

  • -C euid!=uid 檢查有效使用者ID是否與實際使用者ID不同,表明使用了許可權提升。
  • -F euid=0 指定了root許可權的執行。
  • -S execve 監控程式執行的系統呼叫。

4.1.16 確保核心模組的載入和解除安裝被收集

監控核心模組的載入和解除安裝對於檢測潛在的安全威脅非常重要。需要在稽核規則中新增相關設定,以記錄使用insmodrmmodmodprobe等程式的操作,以及init_moduledelete_module系統呼叫。

內容解密:

監控這些操作可以幫助管理員發現未授權的核心模組操作,從而採取相應的安全措施。