Linux 系統安全設定需多管齊下,涵蓋系統層級的稽核與日誌,以及使用者層級的許可權控管。本文整合 auditd、rsyslog 與 logrotate 等工具,建立完善的日誌記錄與管理機制,確保系統活動全程可追溯。同時,針對 SSH 登入安全,提供詳細的設定步驟,包含限制登入次數、停用 root 登入等,並搭配 PAM 模組強化密碼政策與驗證機制。最後,文章也涵蓋使用者帳戶管理、檔案許可權設定等導向,提供全面的安全強化策略,協助管理員有效降低系統風險。

加強Linux系統安全性的設定

4. Logging and Auditing

4.1 Configure System Accounting (auditd)

系統稽核(auditd)是用於記錄系統活動的重要工具,能夠幫助管理員監控系統的安全狀況。以下是確保系統稽核功能正常運作的步驟:

  1. 確保auditd已安裝:檢查系統是否已安裝auditd套件。

    • 命令:rpm -q audit (針對RPM-based系統)或 dpkg -s auditd (針對DEB-based系統)
    • 確保輸出顯示已安裝的版本號。
  2. 啟用auditd服務:確保auditd服務在系統啟動時自動啟動。

    • 命令:systemctl is-enabled auditd
    • 輸出應顯示enabled
  3. 組態auditd記錄啟動過程:確保auditd能夠記錄在它啟動之前發生的程式。

    • 編輯/etc/default/grub,在GRUB_CMDLINE_LINUX中加入audit=1
    • 更新grub組態:grub2-mkconfig -o /boot/grub2/grub.cfg
  4. 調整audit_backlog_limit:確保audit_backlog_limit引數設定合理,以避免在啟動過程中丟失稽核訊息。

    • 編輯/etc/default/grub,在GRUB_CMDLINE_LINUX中加入audit_backlog_limit=8192
    • 更新grub組態。

4.2 Configure Logging

日誌記錄對於監控系統活動、除錯問題以及檢測安全事件至關重要。以下是組態rsyslog和journald的步驟:

  1. 安裝和啟用rsyslog

    • 命令:rpm -q rsyslogdpkg -s rsyslog
    • 啟用服務:systemctl is-enabled rsyslog
    • 確保rsyslog服務已啟用。
  2. 組態rsyslog

    • 編輯/etc/rsyslog.conf,確保日誌組態正確,例如,記錄所有認證相關的日誌。
    • 重新啟動rsyslog服務以套用變更。
  3. 將日誌傳送到遠端日誌主機

    • /etc/rsyslog.conf中新增遠端日誌主機的組態,例如:*.* @@remote-log-host:514
    • 重新啟動rsyslog服務。

4.3 Ensure logrotate is configured

Logrotate用於管理日誌檔案的輪替、壓縮和刪除,以避免日誌檔案佔滿磁碟空間。

  1. 檢查logrotate是否已安裝和組態
    • 命令:rpm -q logrotatedpkg -s logrotate
    • 檢查/etc/logrotate.conf/etc/logrotate.d/下的組態檔案。

4.4 Ensure logrotate assigns appropriate permissions

確保logrotate在輪替日誌檔案時賦予適當的許可權。

  1. 檢查logrotate組態
    • 編輯/etc/logrotate.conf,確保包含正確的許可權設定,例如:create 0640 root root

5 Access, Authentication and Authorization

5.1 Configure time-based job schedulers

時間根據的作業排程器(如cron)用於執行定期的任務。確保cron相關的設定正確,以避免未授權的存取。

  1. 啟用cron服務

    • 命令:systemctl is-enabled cron
    • 確保輸出為enabled
  2. 設定cron相關目錄和檔案的許可權

    • 命令:檢查/etc/crontab/etc/cron.hourly/etc/cron.daily等目錄和檔案的許可權。
    • 使用chmodchown命令調整許可權和所有權。

5.2 Configure SSH Server

SSH伺服器是用於遠端存取伺服器的關鍵服務。正確組態SSH伺服器對於防止未授權存取至關重要。

  1. 設定SSH日誌級別

    • 編輯/etc/ssh/sshd_config,設定LogLevel INFO或更高階別。
  2. 停用SSH X11轉發

    • /etc/ssh/sshd_config中設定X11Forwarding no
  3. 限制SSH登入嘗試次數

    • 設定MaxAuthTries 4
  4. 停用root登入和空密碼登入

    • 設定PermitRootLogin noPermitEmptyPasswords no

這些設定對於加強Linux系統的安全性至關重要,能夠幫助防止未授權的存取、日誌遺失等安全問題。

程式碼範例

# 編輯/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config

# 設定SSH引數
LogLevel INFO
X11Forwarding no
MaxAuthTries 4
PermitRootLogin no
PermitEmptyPasswords no

# 儲存並離開編輯器後,重啟SSH服務
sudo systemctl restart sshd

內容解密:

此範例展示如何編輯SSH伺服器的組態檔案,以加強安全性。首先,使用文字編輯器(如nano)開啟/etc/ssh/sshd_config。然後,設定適當的引數,包括提高日誌級別、停用X11轉發、限制認證嘗試次數、禁止root使用者直接登入以及禁止使用空密碼登入。最後,重啟SSH服務以套用這些變更。這些措施有助於提高伺服器的安全性,防止暴力破解攻擊和未授權存取。

加強 Linux 系統安全性的設定

SSH 設定最佳實踐

確保 SSH 的安全性是保護 Linux 系統的重要步驟。以下是一些關鍵的 SSH 設定專案,能夠有效提升系統安全性。

1. 設定 SSH 登入寬限時間

確保 LoginGraceTime 設定為一分鐘或更少,以防止攻擊者無限制地嘗試登入。

# 在 /etc/ssh/sshd_config 中設定
LoginGraceTime 60

內容解密:

  • LoginGraceTime 用於設定使用者在連線後輸入正確憑證的時間限制。
  • 設定為 60 秒可以防止無限期等待登入憑證。

2. 限制 SSH 存取

透過設定 AllowUsersAllowGroups 來限制哪些使用者或群組可以透過 SSH 登入系統。

# 在 /etc/ssh/sshd_config 中設定
AllowUsers user1 user2

內容解密:

  • AllowUsers 引數用於指定允許透過 SSH 登入的使用者。
  • 只允許必要的使用者存取,可以減少潛在的安全風險。

3. 啟用 SSH 警告橫幅

組態 SSH 警告橫幅,以在使用者登入前顯示警告訊息。

# 在 /etc/ssh/sshd_config 中設定
Banner /etc/issue.net

內容解密:

  • Banner 引數指定在使用者登入前顯示的警告訊息檔案路徑。
  • 警告橫幅可以用來提醒使用者系統使用政策和禁止未授權存取。

4. 啟用 SSH PAM 認證

確保 SSH 使用 PAM(可插拔認證模組)進行認證。

# 在 /etc/ssh/sshd_config 中設定
UsePAM yes

內容解密:

  • UsePAM 引數啟用 PAM 認證機制。
  • PAM 提供靈活的認證方式,能夠與系統認證政策緊密結合。

PAM 設定最佳實踐

PAM 是 Linux 系統中重要的認證機制,正確組態 PAM 可以提高系統安全性。

1. 設定密碼建立要求

透過 PAM 設定密碼強度要求,例如密碼長度和複雜度。

# 在 /etc/security/pwquality.conf 中設定
minlen = 14

內容解密:

  • minlen 引數指定密碼的最小長度。
  • 設定足夠的密碼長度可以提高密碼安全性。

2. 設定密碼重用限制

限制使用者重用舊密碼,防止密碼重複使用。

# 在 /etc/pam.d/common-password 中新增或修改以下設定
password requisite pam_pwhistory.so remember=5

內容解密:

  • remember 引數指定記住的歷史密碼數量。
  • 設定為 5 表示不允許重用最近使用的 5 個密碼。

使用者帳戶和環境設定

正確組態使用者帳戶和環境,可以避免許多安全問題。

1. 設定密碼過期策略

確保密碼過期時間設定合理,例如設定為 365 天或更少。

# 使用 chage 命令設定使用者密碼過期時間
chage -M 365 username

內容解密:

  • chage 命令用於修改使用者密碼過期資訊。
  • -M 引數指定密碼的最大有效天數。

2. 鎖定無效帳戶

確保無效或不活躍的帳戶被鎖定或刪除。

# 使用 usermod 命令鎖定使用者帳戶
usermod -L username

內容解密:

  • usermod -L 命令用於鎖定使用者帳戶,防止登入。

系統檔案許可權檢查

定期檢查和修正系統檔案許可權,是維護系統安全的基本工作。

1. 檢查重要檔案許可權

確保重要系統檔案(如 /etc/passwd/etc/shadow)的許可權正確設定。

# 使用 stat 命令檢查檔案許可權
stat -c "%a %n" /etc/passwd /etc/shadow

內容解密:

  • stat 命令用於顯示檔案狀態資訊。
  • -c 引數指定輸出格式,%a 表示以八進位顯示許可權。

使用者和群組設定檢查

正確組態使用者和群組,可以避免潛在的安全風險。

1. 確保 root 是唯一的 UID 0 帳戶

檢查並確保只有 root 使用者的 UID 為 0。

# 使用 awk 命令檢查 UID 為 0 的使用者
awk -F: '($3 == 0) { print $1 }' /etc/passwd

內容解密:

  • awk 命令用於處理文字資料。
  • -F: 指定欄位分隔符為冒號,檢查第三欄(UID)為 0 的使用者。