返回文章列表

Linux系統稽核強化安全性

本文探討如何強化 Linux 系統稽核功能以提升安全性,涵蓋 auditd 服務設定、日誌儲存策略、時間變更監控、使用者/群組資訊變更監控、登入/登出事件收集、會話啟動資訊收集、以及自主存取控制許可權修改事件收集等關鍵導向。透過組態 auditd

資安 系統管理

Linux 系統稽核是提升資安防護的根本,auditd 服務的正確組態更是重中之重。本文詳細介紹如何設定 auditd 以監控關鍵事件,包括系統呼叫、檔案存取、以及使用者和群組資訊的變更。同時也涵蓋瞭如何設定日誌儲存策略,避免日誌滿載而導致重要資訊遺失。此外,本文也闡述瞭如何監控時間變更、登入登出事件、以及自主存取控制許可權修改等重要安全事件,以提供全面的系統稽核方案,有效提升系統安全性。

加強 Linux 系統稽核功能以提升安全性

4.1.1 設定 auditd 服務

4.1.1.1 確保 auditd 服務已安裝(略)

4.1.1.2 確保 auditd 服務已啟用

系統管理員需要確保 auditd 服務已啟用,以記錄系統事件。啟用 auditd 可以提供系統活動的詳細記錄,幫助管理員檢測潛在的安全威脅。

檢查方法

執行以下指令檢查 auditd 是否已啟用:

# systemctl is-enabled auditd
enabled

確認輸出結果為 “enabled”。

修復方法

auditd 未啟用,請執行以下指令啟用:

# systemctl --now enable auditd

4.1.1.3 確保 auditd 在系統啟動前已啟用稽核功能

為了確保系統啟動過程中的所有事件都被記錄,需要在 grub 設定中加入 audit=1 引數。

檢查方法

執行以下指令檢查 grub.cfg 中是否包含 audit=1 引數:

# grep "^\s*linux" /boot/grub/grub.cfg | grep -v "audit=1"

若輸出為空,表示設定正確。

修復方法

編輯 /etc/default/grub 檔案,在 GRUB_CMDLINE_LINUX 中加入 audit=1

GRUB_CMDLINE_LINUX="audit=1"

然後執行以下指令更新 grub2 設定:

# update-grub

4.1.1.4 確保 audit_backlog_limit 設定合理

在系統啟動過程中,audit_backlog_limit 引數決定了能夠快取的稽核事件數量。預設值為 64,可能導致事件遺失。

檢查方法

執行以下指令檢查 audit_backlog_limit 是否設定合理:

# grep "^\s*linux" /boot/grub/grub.cfg | grep -v "audit_backlog_limit="
# grep "audit_backlog_limit=" /boot/grub/grub.cfg

確認設定的值符合組織的安全政策,建議至少設為 8192。

修復方法

編輯 /etc/default/grub 檔案,在 GRUB_CMDLINE_LINUX 中加入或修改 audit_backlog_limit

GRUB_CMDLINE_LINUX="audit_backlog_limit=8192"

然後執行以下指令更新 grub2 設定:

# update-grub

4.1.2 組態稽核日誌儲存

4.1.2.1 設定稽核日誌儲存大小

需要設定稽核日誌的最大儲存大小,以避免日誌檔案過大影響系統效能。

檢查方法

執行以下指令檢查 max_log_file 設定:

# grep max_log_file /etc/audit/auditd.conf
max_log_file = <MB>

確認設定的值符合組織的安全政策。

修復方法

編輯 /etc/audit/auditd.conf 檔案,設定 max_log_file 引數:

max_log_file = <MB>

4.1.2.2 確保稽核日誌不會自動刪除

設定 max_log_file_actionkeep_logs 以保留稽核日誌,避免重要記錄遺失。

檢查方法

執行以下指令檢查 max_log_file_action 設定:

# grep max_log_file_action /etc/audit/auditd.conf
max_log_file_action = keep_logs
修復方法

編輯 /etc/audit/auditd.conf 檔案,設定 max_log_file_action

max_log_file_action = keep_logs

重點解析

  1. 啟用 auditd 服務:確保系統能夠記錄詳細的安全事件,有助於事後分析和威脅檢測。
  2. 組態 grub 引導引數:加入 audit=1 和合理的 audit_backlog_limit,確保系統啟動過程中的事件被完整記錄。
  3. 設定稽核日誌儲存策略:合理組態 max_log_filemax_log_file_action,在保障日誌完整性的同時,避免過度佔用儲存空間。

程式碼範例與解析

以下是一個檢查與設定 auditd 相關引數的指令碼範例:

#!/bin/bash

# 檢查 auditd 是否啟用
if [ "$(systemctl is-enabled auditd)" != "enabled" ]; then
    echo "auditd is not enabled, enabling..."
    systemctl --now enable auditd
else
    echo "auditd is already enabled."
fi

# 檢查 grub 組態是否包含 audit=1
if grep -q "^\s*linux" /boot/grub/grub.cfg | grep -v "audit=1"; then
    echo "audit=1 is not set in grub, setting..."
    sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="audit=1"/g' /etc/default/grub
    update-grub
else
    echo "audit=1 is already set in grub."
fi

#### 程式碼解析:
此指令碼首先檢查 `auditd` 服務是否已啟用,若未啟用則自動啟用。接著檢查 `grub` 組態中是否包含 `audit=1` 引導引數,若未包含則進行設定並更新 `grub`。這些步驟確保了系統在啟動時能夠正確記錄稽核事件。

加強 Linux 系統稽核功能以提升安全性

在現代資訊安全領域中,系統稽核(Audit)扮演著至關重要的角色。適當的稽核設定不僅能幫助系統管理員監控系統的運作狀態,還能在發生安全事件時提供詳細的調查依據。本文將探討如何透過組態 auditd 來增強 Linux 系統的安全性,涵蓋日誌滿載處理、時間變更監控、以及使用者/群組資訊變更監控等關鍵議題。

4.1.2.3 設定當稽核日誌滿時系統應採取的動作

在高安全性要求的環境中,當稽核日誌滿載時,系統應能夠採取適當的措施以確保安全。auditd 提供了一系列引數來控制當日誌空間不足時的行為。

檢查與修正

首先,我們需要檢查目前的設定是否符合安全要求。執行以下命令來驗證 auditd.conf 中的相關引數:

# grep space_left_action /etc/audit/auditd.conf
space_left_action = email
# grep action_mail_acct /etc/audit/auditd.conf
action_mail_acct = root
# grep admin_space_left_action /etc/audit/auditd.conf
admin_space_left_action = halt

若輸出結果不符合預期,請編輯 /etc/audit/auditd.conf 檔案並設定以下引數:

space_left_action = email
action_mail_acct = root
admin_space_left_action = halt

內容解密:

  1. space_left_action = email:當磁碟空間達到設定的閾值時,傳送電子郵件通知管理員。
  2. action_mail_acct = root:指定接收通知的電子郵件帳號為 root。
  3. admin_space_left_action = halt:當磁碟空間嚴重不足時,系統將會停止運作(halt),以防止任何可能的惡意活動。

4.1.3 監控修改日期和時間的事件

監控系統日期和時間的變更對於檢測潛在的安全威脅至關重要。我們需要組態 auditd 以記錄相關的系統呼叫。

檢查與修正(以 64 位元系統為例)

首先,檢查 /etc/audit/rules.d/ 目錄下的規則檔案:

# grep time-change /etc/audit/rules.d/*.rules

預期的輸出應包含以下規則:

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -k time-change
-a always,exit -F arch=b64 -S clock_settime -k time-change
-a always,exit -F arch=b32 -S clock_settime -k time-change
-w /etc/localtime -p wa -k time-change

然後,使用 auditctl 命令驗證目前生效的規則:

# auditctl -l | grep time-change

若規則未正確設定,請編輯或建立 /etc/audit/rules.d/time-change.rules 檔案,並加入上述規則。

內容解密:

  1. 監控系統呼叫:透過 -S 引數指定需要監控的系統呼叫,例如 adjtimexsettimeofdayclock_settime
  2. 記錄檔案變更:使用 -w 引數監控 /etc/localtime 檔案的寫入和屬性變更。
  3. 使用鍵值標記-k time-change 用於為相關的日誌記錄新增 “time-change” 鍵值,以便於後續的檢索和分析。

4.1.4 監控使用者/群組資訊的變更

監控使用者和群組資訊的變更有助於及時發現潛在的安全問題。我們需要組態 auditd 以監視相關檔案的變更。

檢查與修正

檢查 /etc/audit/rules.d/ 目錄下的規則檔案:

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

預期的輸出應包含以下規則:

-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity

使用 auditctl 命令驗證目前生效的規則:

# auditctl -l | grep identity

若規則未正確設定,請編輯或建立 /etc/audit/rules.d/identity.rules 檔案,並加入上述規則。

內容解密:

  1. 監控關鍵檔案:監視 /etc/group/etc/passwd/etc/gshadow/etc/shadow/etc/security/opasswd 等檔案的寫入和屬性變更。
  2. 使用鍵值標記-k identity 用於為相關的日誌記錄新增 “identity” 鍵值,以便於後續的檢索和分析。

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

在現代的資訊系統中,安全性是不可或缺的一環。為了確保系統的安全,需要對系統進行全面的稽核。本篇文章將討論如何透過設定 auditd 來監控系統中的關鍵事件,以提升整體的安全性。

監控系統網路環境的變更

系統網路環境的變更可能會對系統的安全性造成影響。因此,監控這些變更是非常重要的。以下是需要監控的關鍵事件:

  • 修改系統的主機名稱或網域名稱
  • 修改 /etc/issue/etc/issue.net 檔案(登入前的訊息)
  • 修改 /etc/hosts 檔案(主機名稱和 IP 位址的對應)
  • 修改 /etc/network 目錄(網路介面指令碼和組態)

設定稽核規則

要監控上述事件,需要在 /etc/audit/rules.d/ 目錄中建立或編輯一個以 .rules 結尾的檔案,例如 system-locale.rules。對於 32 位元系統,應加入以下規則:

-a always,exit -F arch=b32 -S sethostname -S setdomainname -k system-locale
-w /etc/issue -p wa -k system-locale
-w /etc/issue.net -p wa -k system-locale
-w /etc/hosts -p wa -k system-locale
-w /etc/network -p wa -k system-locale

對於 64 位元系統,則需要加入:

-a always,exit -F arch=b64 -S sethostname -S setdomainname -k system-locale
-a always,exit -F arch=b32 -S sethostname -S setdomainname -k system-locale
-w /etc/issue -p wa -k system-locale
-w /etc/issue.net -p wa -k system-locale
-w /etc/hosts -p wa -k system-locale
-w /etc/network -p wa -k system-locale

內容解密:

  1. -a always,exit 表示在系統呼叫離開時總是記錄稽核事件。
  2. -F arch=b32-F arch=b64 指定了系統架構(32 位元或 64 位元)。
  3. -S sethostname -S setdomainname 表示監控 sethostnamesetdomainname 系統呼叫。
  4. -w 用於監控特定的檔案或目錄。
  5. -p wa 表示監控寫入和屬性變更。
  6. -k system-locale 是用於標識這些稽核記錄的關鍵字。

監控 Mandatory Access Controls (MAC) 的變更

Mandatory Access Controls (MAC) 是一種強制存取控制機制,用於限制程式的存取許可權。AppArmor 是 Linux 系統中的一種 MAC 實作。監控 AppArmor 組態的變更對於維護系統安全至關重要。

設定 AppArmor 稽核規則

要監控 AppArmor 組態的變更,需要在 /etc/audit/rules.d/ 目錄中加入以下規則:

-w /etc/apparmor/ -p wa -k MAC-policy
-w /etc/apparmor.d/ -p wa -k MAC-policy

內容解密:

  1. -w /etc/apparmor/-w /etc/apparmor.d/ 表示監控 /etc/apparmor//etc/apparmor.d/ 目錄。
  2. -p wa 表示監控寫入和屬性變更。
  3. -k MAC-policy 是用於標識這些稽核記錄的關鍵字。

CIS Controls 的相關建議

根據 CIS Controls Version 7 的建議,應該實施自動化的組態監控系統,以驗證所有的安全組態元素、記錄已批准的例外情況,並在發生未授權變更時發出警示。

加強 Linux 系統監控:登入事件與許可權變更稽核

在現代的資訊安全環境中,系統監控和稽核是確保系統安全性的重要組成部分。Linux 系統提供了強大的稽核工具,可以幫助管理員監控系統活動並及時發現潛在的安全威脅。本文將重點介紹如何設定 Linux 系統的稽核功能,以監控登入事件和許可權變更。

4.1.7 確保收集登入和登出事件

監控登入和登出事件對於檢測對使用者登入的暴力破解攻擊至關重要。系統管理員可以透過監控相關的日誌檔案來取得這些資訊。

實施方法

  1. 編輯或建立 /etc/audit/rules.d/ 目錄下的 .rules 檔案,例如 logins.rules
  2. 新增以下規則以監控 /var/log/faillog/var/log/lastlog/var/log/tallylog 檔案的變更:
    -w /var/log/faillog -p wa -k logins
    -w /var/log/lastlog -p wa -k logins
    -w /var/log/tallylog -p wa -k logins
    
  3. 驗證規則是否正確載入到執行中的 auditd 組態中。

程式碼解析

# 編輯或建立稽核規則檔案
vi /etc/audit/rules.d/logins.rules

# 新增以下稽核規則
-w /var/log/faillog -p wa -k logins
-w /var/log/lastlog -p wa -k logins
-w /var/log/tallylog -p wa -k logins

內容解密

  • -w 指定要監控的檔案或目錄。
  • /var/log/faillog/var/log/lastlog/var/log/tallylog 分別記錄了失敗的登入嘗試、最後一次成功登入的時間和失敗的登入嘗試次數。
  • -p wa 表示監控寫入(write)和屬性變更(attribute change)事件。
  • -k logins 為該監控規則設定一個鍵值(key),以便於在稽核日誌中識別相關事件。

4.1.8 確保收集會話啟動資訊

監控會話啟動事件可以幫助管理員檢測異常的登入行為,例如在非正常時間登入。

實施方法

  1. 編輯或建立 /etc/audit/rules.d/ 目錄下的 .rules 檔案,例如 session.rules
  2. 新增以下規則以監控 /var/run/utmp/var/log/wtmp/var/log/btmp 檔案的變更:
    -w /var/run/utmp -p wa -k session
    -w /var/log/wtmp -p wa -k logins
    -w /var/log/btmp -p wa -k logins
    

程式碼解析

# 編輯或建立稽核規則檔案
vi /etc/audit/rules.d/session.rules

# 新增以下稽核規則
-w /var/run/utmp -p wa -k session
-w /var/log/wtmp -p wa -k logins
-w /var/log/btmp -p wa -k logins

內容解密

  • /var/run/utmp 記錄了當前登入的使用者。
  • /var/log/wtmp 記錄了登入、登出、關機和重啟事件。
  • /var/log/btmp 記錄了失敗的登入嘗試。
  • 這些檔案的監控有助於管理員檢測異常的登入行為。

4.1.9 確保收集自主存取控制許可權修改事件

監控檔案許可權和屬性變更可以幫助管理員檢測潛在的安全威脅,例如未授權的檔案存取或修改。

實施方法

  1. 編輯或建立 /etc/audit/rules.d/ 目錄下的 .rules 檔案,例如 perm_mod.rules
  2. 新增以下規則以監控檔案許可權和屬性變更:
    -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
    

程式碼解析

# 編輯或建立稽核規則檔案
vi /etc/audit/rules.d/perm_mod.rules

# 新增以下稽核規則(以64位元架構為例)
-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=b64 指定監控 64 位元架構的系統呼叫。
  • -S chmod -S fchmod -S fchmodat 指定要監控的系統呼叫,包括 chmodfchmodfchmodat,這些呼叫會更改檔案的許可權。
  • -F auid>=1000-F auid!=4294967295 用於過濾非系統使用者(UID >= 1000)並排除守護程式事件(UID = 4294967295)。
  • -k perm_mod 為該監控規則設定鍵值,以便於在稽核日誌中識別相關事件。