熱門分類
載入中…
目錄0%

🐧 Linux Auditd + SELinux 實務操作完整指南:系統審計、強化、稽核與安全最佳實務

    🐧 Linux Auditd + SELinux 實務操作完整指南:系統審計、強化、稽核與安全最佳實務

    Linux 的安全能力主要來自兩大核心元件:Auditd(稽核系統)SELinux(強制存取控制 MAC)。 兩者結合後可以完整做到:事件追蹤、權限強化、資料保護、攻擊行為偵測、應用程式限制與安全稽核。

    本篇提供一份真正實務級(Production Ready)的完整指南,包含 Auditd 規則設計、SELinux Context 管理、Policy 建立、Troubleshooting、SIEM 整合與強化策略。


    📌 一、Auditd 是什麼?核心架構與用途

    Auditd(Linux Auditing System)是一套 Kernel 層級的事件稽核系統,可追蹤:

    • 檔案讀寫 / 修改
    • 指令執行(execve)
    • sudo 行為
    • 帳號登入 / 系統設定變更
    • 安全相關事件(密碼、認證、權限修改)

    核心組件:

    元件說明
    auditd主守護程式,負責接收與儲存事件。
    auditctl設定與臨時管理稽核規則。
    ausearch搜尋稽核紀錄。
    aureport產生事件統計與報表。

    適用場景:企業資安、政府稽核、金融業法遵(Compliance)、系統安全監控等。


    📌 二、Auditd 安裝、啟動與基本設定

    🟦 安裝 Auditd

    sudo apt install auditd audispd-plugins      # Ubuntu / Debian
    sudo yum install audit                        # CentOS / RHEL
    

    🟦 啟動 Auditd

    sudo systemctl enable --now auditd
    sudo systemctl status auditd
    

    🟦 查看目前規則

    sudo auditctl -l
    

    Auditd 預設只啟用基本稽核,若要完整監控需自行撰寫規則。


    📌 三、Auditd 常用稽核規則(完整範例)

    1️⃣ 監控 /etc/passwd 變更

    sudo auditctl -w /etc/passwd -p rwxa -k passwd_changes
    

    2️⃣ 監控所有指令執行(execve)

    sudo auditctl -a exit,always -F arch=b64 -S execve -k exec_monitor
    

    3️⃣ 監控 sudo 行為

    sudo auditctl -a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_actions
    

    4️⃣ 寫入永久規則:/etc/audit/rules.d/audit.rules

    -w /etc/passwd -p rwxa -k passwd_changes
    -a exit,always -F arch=b64 -S execve -k exec_monitor
    

    套用規則:

    sudo augenrules --load
    

    📌 四、Auditd 日誌查詢:ausearch / aureport

    🔍 搜尋關鍵字事件

    ausearch -k exec_monitor
    

    🔍 搜尋特定使用者行為(UID)

    ausearch -ua 1000
    

    🔍 產生稽核報表

    aureport --summary
    aureport --exec --summary
    

    可與 SIEM(ELK、Splunk)整合,建立異常分析與攻擊偵測。


    📌 五、SELinux 三大模式:Enforcing / Permissive / Disabled

    模式說明
    Enforcing阻擋違規操作(正式環境必用)
    Permissive不阻擋但記錄違規(調試用)
    Disabled完全停用(不建議)
    檢查模式:
    getenforce
    
    永久設定:
    sudo nano /etc/selinux/config
    SELINUX=enforcing
    

    📌 六、SELinux Context 深度解析(Type 是核心)

    Context 由四部分組成:

    欄位說明
    UserSELinux User,不等於 Linux 用戶
    Role角色權限控制
    Type最重要!MAC 控制依據
    Level多層安全標籤

    查看 Context:

    ls -Z /var/www/html/index.html
    

    正確設定 httpd 文件 Context:

    sudo chcon -t httpd_sys_content_t /var/www/html/index.html
    
    永久修正:
    sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
    sudo restorecon -Rv /var/www/html
    

    📌 七、SELinux Troubleshooting(排錯流程)

    🔎 查看 AVC 拒絕事件

    sudo ausearch -m avc
    

    🔧 自動修正策略 audit2allow

    sudo grep AVC /var/log/audit/audit.log | audit2allow -M myfix
    sudo semodule -i myfix.pp
    

    注意:audit2allow 會「自動生成允許策略」,請務必先確認是否合理,避免造成安全性下降。


    📌 八、Auditd + SELinux 系統強化實務指南

    • Web 服務必須套用 httpd_sys_content_t / httpd_sys_rw_content_t
    • 所有管理動作(sudo, passwd)應加到 Auditd 規則
    • 在 Enforcing 前先以 Permissive 蒐集日誌
    • Auditd 日誌建議送至 SIEM 做分析
    • 不要隨意關閉 SELinux(高風險)

    📌 九、最佳實務與常見錯誤

    ❌ 錯誤 1:遇到錯誤就 setenforce 0

    這會直接放棄 MAC 防護。

    ❌ 錯誤 2:audit2allow 生成的策略沒審查就套用

    可能造成某些應用程式獲得過度權限。

    ✔ 正確做法

    • 先查看 AVC 訊息,再決定是否開放
    • 針對特定應用建立最小策略(Least Privilege)
    • Auditd 規則採固定分類方便 SIEM 處理

    🔎 十、常見 FAQ

    Q1. Auditd 與 SELinux 是否建議一起使用?

    是。Auditd 做稽核,SELinux 做存取控制,兩者互補構成完整安全架構。

    Q2. 什麼情況需要 audit2allow?

    當應用程式合法操作被阻擋時,例如 Web App 需要寫入資料夾。

    Q3. SELinux 可以關閉嗎?

    可以,但不建議。關閉後就少了最重要的 MAC 層安全。


    🔗 延伸閱讀

    💬 歡迎在下方留言交流!

    對 Auditd、SELinux 或 Linux 安全強化有疑問嗎?歡迎留言討論!

    — WWFandy・Linux Security 實務筆記

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級