Linux 系統安全設定需多管齊下,涵蓋系統層級的稽核與日誌,以及使用者層級的許可權控管。本文整合 auditd、rsyslog 與 logrotate 等工具,建立完善的日誌記錄與管理機制,確保系統活動全程可追溯。同時,針對 SSH 登入安全,提供詳細的設定步驟,包含限制登入次數、停用 root 登入等,並搭配 PAM 模組強化密碼政策與驗證機制。最後,文章也涵蓋使用者帳戶管理、檔案許可權設定等導向,提供全面的安全強化策略,協助管理員有效降低系統風險。
加強Linux系統安全性的設定
4. Logging and Auditing
4.1 Configure System Accounting (auditd)
系統稽核(auditd)是用於記錄系統活動的重要工具,能夠幫助管理員監控系統的安全狀況。以下是確保系統稽核功能正常運作的步驟:
確保auditd已安裝:檢查系統是否已安裝auditd套件。
- 命令:
rpm -q audit(針對RPM-based系統)或dpkg -s auditd(針對DEB-based系統) - 確保輸出顯示已安裝的版本號。
- 命令:
啟用auditd服務:確保auditd服務在系統啟動時自動啟動。
- 命令:
systemctl is-enabled auditd - 輸出應顯示
enabled。
- 命令:
組態auditd記錄啟動過程:確保auditd能夠記錄在它啟動之前發生的程式。
- 編輯
/etc/default/grub,在GRUB_CMDLINE_LINUX中加入audit=1。 - 更新grub組態:
grub2-mkconfig -o /boot/grub2/grub.cfg
- 編輯
調整audit_backlog_limit:確保
audit_backlog_limit引數設定合理,以避免在啟動過程中丟失稽核訊息。- 編輯
/etc/default/grub,在GRUB_CMDLINE_LINUX中加入audit_backlog_limit=8192。 - 更新grub組態。
- 編輯
4.2 Configure Logging
日誌記錄對於監控系統活動、除錯問題以及檢測安全事件至關重要。以下是組態rsyslog和journald的步驟:
安裝和啟用rsyslog:
- 命令:
rpm -q rsyslog或dpkg -s rsyslog - 啟用服務:
systemctl is-enabled rsyslog - 確保rsyslog服務已啟用。
- 命令:
組態rsyslog:
- 編輯
/etc/rsyslog.conf,確保日誌組態正確,例如,記錄所有認證相關的日誌。 - 重新啟動rsyslog服務以套用變更。
- 編輯
將日誌傳送到遠端日誌主機:
- 在
/etc/rsyslog.conf中新增遠端日誌主機的組態,例如:*.* @@remote-log-host:514 - 重新啟動rsyslog服務。
- 在
4.3 Ensure logrotate is configured
Logrotate用於管理日誌檔案的輪替、壓縮和刪除,以避免日誌檔案佔滿磁碟空間。
- 檢查logrotate是否已安裝和組態:
- 命令:
rpm -q logrotate或dpkg -s logrotate - 檢查
/etc/logrotate.conf和/etc/logrotate.d/下的組態檔案。
- 命令:
4.4 Ensure logrotate assigns appropriate permissions
確保logrotate在輪替日誌檔案時賦予適當的許可權。
- 檢查logrotate組態:
- 編輯
/etc/logrotate.conf,確保包含正確的許可權設定,例如:create 0640 root root
- 編輯
5 Access, Authentication and Authorization
5.1 Configure time-based job schedulers
時間根據的作業排程器(如cron)用於執行定期的任務。確保cron相關的設定正確,以避免未授權的存取。
啟用cron服務:
- 命令:
systemctl is-enabled cron - 確保輸出為
enabled。
- 命令:
設定cron相關目錄和檔案的許可權:
- 命令:檢查
/etc/crontab、/etc/cron.hourly、/etc/cron.daily等目錄和檔案的許可權。 - 使用
chmod和chown命令調整許可權和所有權。
- 命令:檢查
5.2 Configure SSH Server
SSH伺服器是用於遠端存取伺服器的關鍵服務。正確組態SSH伺服器對於防止未授權存取至關重要。
設定SSH日誌級別:
- 編輯
/etc/ssh/sshd_config,設定LogLevel INFO或更高階別。
- 編輯
停用SSH X11轉發:
- 在
/etc/ssh/sshd_config中設定X11Forwarding no
- 在
限制SSH登入嘗試次數:
- 設定
MaxAuthTries 4
- 設定
停用root登入和空密碼登入:
- 設定
PermitRootLogin no和PermitEmptyPasswords 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 存取
透過設定 AllowUsers 或 AllowGroups 來限制哪些使用者或群組可以透過 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 的使用者。