沒有絕對安全的系統,只有持續加固的過程。Linux 系統安全加固的核心原則是「最小權限、最小服務、最小暴露面」。本文提供一套可落地的加固框架,涵蓋安裝階段、服務精簡、權限管控、審計與持續維護。
| 目錄 | 建議掛載選項 | 目的 |
| /tmp | nodev,nosuid,noexec | 防止惡意程式在暫存區執行 |
| /var | nodev,nosuid | 隔離日誌、郵件、資料庫檔案 |
| /home | nodev,nosuid | 限制使用者程式執行權限 |
| /boot | nodev,nosuid,noexec | 保護開機載入器 |
2. 最小化套件安裝
- 安裝時選擇「最小安裝」或「核心套件群」。
- 安裝後立即執行
yum update / apt update && apt upgrade 修補已知漏洞。
- 移除無用套件:
yum remove $(package-cleanup --leaves -q) (RHEL/CentOS)。
3. BIOS/UEFI 與開機載入器防護
- 設定 BIOS/UEFI 密碼,禁止從外部媒體開機,僅允許硬碟開機。
- 為 GRUB 2 設定密碼:
grub2-setpassword,防止單用戶模式繞過認證。
4. 自訂核心編譯 (進階)
僅啟用必要的核心模組,禁用未使用的檔案系統、協定、驅動程式。使用 make localmodconfig 根據目前載入模組自動生成精簡配置。自訂核心能顯著減少核心層面的攻擊面,但維護成本較高,建議僅在高安全需求環境採用。
三、服務精簡:關閉不必要的網路服務
1. 盤點啟動服務
systemctl list-unit-files --state=enabled
systemctl list-units --type=service --state=running
ss -tulpn # 檢查監聽連接埠
2. 常見可停用服務
- 印表服務:
cups
- 郵件傳輸:
postfix / sendmail (非郵件伺服器)
- 遠端列印:
rpcbind、nfs-server (非 NFS 伺服器)
- 圖形介面:
gdm/lightdm (伺服器無需桌面)
- Avahi (mDNS):
avahi-daemon
停用範例:systemctl disable --now cups postfix avahi-daemon
3. 必要服務的隔離運行
對於必須開放的網路服務:
- 使用
chroot 或容器技術隔離檔案系統視野。
- 啟用 SELinux/AppArmor 強制存取控制,限制進程存取範圍。
- 以專用低權限帳號運行 (非 root),如
nginx、mysql、postgres。
四、權限管控與存取控制
1. 檔案系統權限審計
# 尋找全域可寫檔案
find / -type f -perm -o=w ! -path "/proc/*" ! -path "/sys/*" -exec ls -ld {} \;
# 尋找 SUID/SGID 執行檔
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -ld {} \;
移除不必要的 SUID/SGID 位元:chmod a-s /path/to/binary
2. 使用者帳號管理
- 鎖定/移除預設共用帳號 (games, lp, uucp 等)。
- 強制強密碼策略:
/etc/security/pwquality.conf 設定長度、複雜度、歷史記錄。
- 啟用登入失敗鎖定:
pam_faillock.so 或 pam_tally2.so。
- 定期審計
/etc/passwd、/etc/shadow、/etc/group。
3. sudo 權限最小化
在 /etc/sudoers.d/ 建立專用規則檔,避免使用 ALL=(ALL) ALL。範例:
webadmin ALL=(nginx) NOPASSWD: /bin/systemctl reload nginx
dbadmin ALL=(postgres) /usr/bin/pg_dump
4. 敏感資料加密
- 磁碟層面:LUKS 全盤加密或資料分區加密。
- 檔案層面:
gpg、age、sops 加密配置檔、備份檔、金鑰檔。
- 傳輸層面:強制 TLS 1.2+,禁用弱加密套件。
五、網路層面加固
- 防火牆預設拒絕:
iptables -P INPUT DROP,僅開放業務必要連接埠。
- SSH 強化:修改連接埠、禁用密碼登入、啟用金鑰、限制來源 IP、Fail2ban。
- 核心網路參數 (
/etc/sysctl.d/99-hardening.conf):
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
kernel.exec-shield = 1
kernel.randomize_va_space = 2
六、審計、日誌與入侵偵測
- auditd:監控關鍵檔案變更、身份認證事件、權限提升。規則範例:
-w /etc/passwd -p wa -k identity。
- 日誌集中化:rsyslog / syslog-ng 轉發至集中日誌伺服器 (ELK, Graylog, Splunk),防止本地日誌被竄改。
- 檔案完整性監控:AIDE / Tripwire 定期掃描系統關鍵檔案雜湊值。
- 入侵偵測:Suricata / Zeek (網路層)、Wazuh / OSSEC (主機層)。
七、持續維護流程
- 自動化修補:
dnf-automatic / unattended-upgrades 配合維護窗口自動套用安全更新。
- 漏洞掃描:定期執行 OpenVAS、Nessus、Lynis 掃描。
- 配置基線檢查:使用 OpenSCAP 對照 CIS Benchmarks、STIG 基線檢查合規性。
- 事件響應演練:每季進行桌面推演或實戰演練,驗證偵測、遏制、根除、恢復流程。
Linux 安全加固不是一次性專案,而是持續的生命週期管理。建立標準化加固基線映像 (Golden Image)、自動化合規檢查、完善的事件響應機制,才能在演進的威脅環境中保持防禦有效性。