萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 系統進階安全管理十大實戰技巧

隨著 Linux 在企業伺服器、政府關鍵基礎建設與嵌入式裝置的普及,系統安全防護已非選修課題。本文整理十大進階安全管理實務,涵蓋檔案系統屬性強化、備份驗證策略、核心層級緩衝區溢出防護、存取控制擴充、蜜罐偵測部署等核心領域,助管理員構建纵深防禦體系。

一、檔案系統安全:分區隔離與 ext2/ext3/ext4 屬性鎖定

1. 關鍵目錄獨立分區與掛載選項

將 /、/usr、/usr/local、/var、/home、/tmp、/boot、/lib、/sbin 等目錄劃分為獨立分區,並針對性質設定掛載參數:

  • 唯讀掛載(ro):/usr、/boot、/lib、/sbin、/usr/local — 任何檔案異動即觸發告警。
  • 禁止執行(noexec):/var、/tmp、/home、/dev/shm — 防止惡意腳本/二進制執行。
  • 禁止 SUID/SGID(nosuid):同上分區 — 避免提權漏洞利用。
  • 節點裝置節點(nodev):非 /dev 分區 — 防止建立偽裝裝置節點。

範例 /etc/fstab 片段:

/dev/sda3  /usr     ext4  ro,nodev,nosuid  0 2
/dev/sda5  /var     ext4  rw,noexec,nosuid,nodev  0 2
/dev/sda6  /tmp     ext4  rw,noexec,nosuid,nodev  0 2
/dev/sda7  /home    ext4  rw,noexec,nosuid,nodev  0 2

2. 善用 ext2/ext3/ext4 擴充屬性:不可變與只附加

透過 chattr 設定關鍵系統檔案與日誌檔案屬性:

  • 不可變:chattr +i /bin/ls /etc/passwd /etc/shadow /lib/libc.so.6 ... — 連 root 也無法修改/刪除/重命名,需先 chattr -i 解除。
  • 只附加:chattr +a /var/log/messages /var/log/secure /var/log/audit/audit.log — 僅允許在檔案末尾寫入,防止日誌被竄改/刪除。

查看屬性:lsattr /bin/ls /var/log/messages。這兩屬性結合唯讀分區,迫使入侵者必須重開機並進入單用戶模式才能破壞,大幅增加攻擊成本與被發現機率。

3. 日誌檔案輪替與屬性自動化管理

在 /etc/logrotate.d/syslog 或自訂腳本中,於輪替後對舊日誌設定 +i,對新日誌設定 +a,確保歷史日誌不可竄改、當前日誌只能追加。

二、備份與完整性驗證策略

1. 系統基準線備份至唯讀光碟(CD-ROM/DVD)

安裝完成並硬化後,製作可開機的唯讀光碟映像(含 /、/boot、/usr、/lib、/sbin、/etc 關鍵目錄)。定期(如每日/每週)以光碟為基準,使用 mtree、rpm -Va、debsums、aide 或 tripwire 進行完整性比對。

2. 關鍵分區定期從光碟映像重掛載

對於唯讀分區,可定期以 mount -o loop,ro /mnt/cdrom/usr.img /usr 方式重新掛載,確保執行檔未被植入後門。

3. 多層次備份介質

除光碟外,亦可備份至異地伺服器(rsync over SSH)、磁帶庫、加密外接硬碟,並建立離線備份輪換機制。

三、核心層級緩衝區溢出防護

1. 非可執行堆疊/堆區

啟用核心支援的 NX bit (No-eXecute) / XD bit 硬體特性(現代 x86_64 CPU 皆支援),配合核心配置 CONFIG_X86_PAE、CONFIG_STRICT_DEVMEM、CONFIG_DEBUG_RODATA 等,標記資料區段不可執行,從根本上阻斷 shellcode 執行。

2. Solaris Designer / PaX / grsecurity 核心補丁

歷史上的 Solaris Designer non-exec stack patch、PaX、grsecurity 提供更積極的記憶體保護(ASLR 隨機化、mprotect 限制、堆疊/堆區不可執行、RPF 反向路徑過濾等)。現代主流發行版核心已整合大部分防護(如 CONFIG_RANDOMIZE_BASE、CONFIG_DEBUG_SET_MODULE_RONX、CONFIG_HARDENED_USERCOPY、CONFIG_FORTIFY_SOURCE、CONFIG_CC_STACKPROTECTOR_STRONG)。

3. StackGuard / GCC Stack Smashing Protector (SSP)

以 -fstack-protector-strong 重新編譯關鍵服務(sshd、httpd、named、ftpd 等),在函數序言/結語插入 canary 值檢測堆疊破壞。性能損耗約 1-3%,換取強力防護。

四、存取控制機制擴充

1. POSIX ACL(存取控制列表)

核心 2.6+ 完整支援 setfacl/getfacl,突破傳統「擁有者/群組/其他」三元模型,允許針對任意使用者/群組設定精細權限。掛載選項需加 acl(ext4 預設啟用)。

2. RSBAC (Rule Set Based Access Control)

提供類似 SELinux 的強制存取控制(MAC)框架,支援多種政策模型(AUTH, RC, FD, CAP, MS, PM...),可實現 B1 級安全需求。適合極高安全要求環境,但學習曲線陡峭。

3. SELinux / AppArmor

現代企業級 Linux(RHEL/Fedora/CentOS 採用 SELinux;openSUSE/Ubuntu 採用 AppArmor)已內建 MAC 系統,強烈建議維持 Enforcing 模式,並針對自訂服務撰寫/調整政策,而非關閉。

五、蜜罐與入侵偵測陷阱部署

1. 低互動蜜罐:Honeyd、Dionaea、Cowrie

模擬脆弱服務(Telnet、FTP、SSH、HTTP、SMB、MySQL 等),記錄攻擊者指令、下載惡意碼樣本、分析攻擊手法。部署於 DMZ 或內網閒置 IP,作為早期預警感測器。

2. 偽裝高價值目標

  • 佈署假的 phf CGI 腳本、舊版脆弱 IMAP/POP3 服務、預設密碼的資料庫/管理介面。
  • 觸發即記錄攻擊者 IP、載荷、時間,並可聯動防火牆自動封鎖(iptables -A INPUT -s $ATTACKER_IP -j DROP)。

3. 系統層級完整性監控:AIDE / Tripwire / Samhain

建立關鍵檔案(/bin, /sbin, /lib, /etc, /usr/bin, 核心模組等)的資料庫指紋,定期排程掃描並告警任何未授權變更。

六、網路服務最小化與沙箱隔離

  • 關閉所有非必要服務(systemctl disable --now servicename)。
  • 必要服務以非 root 帳號運行,配合 systemd 的 PrivateTmp=yes, ProtectSystem=strict, ReadWritePaths=..., CapabilityBoundingSet=, NoNewPrivileges=yes 等強化選項。
  • 容器化部署(Docker/Podman)搭配 --read-only, --cap-drop=ALL, --security-opt no-new-privileges、seccomp 過濾器。

七、認證與授權強化

  • 強制 SSH 金鑰認證,禁用密碼登入(PasswordAuthentication no、PermitRootLogin prohibit-password)。
  • 部署雙因子認證(Google Authenticator PAM / YubiKey / FIDO2)。
  • 集中式身分管理:FreeIPA、LDAP + Kerberos、SSSD。
  • 定期稽核 /etc/passwd, /etc/shadow, /etc/sudoers, /etc/ssh/sshd_config。

八、核心參數硬化

編輯 /etc/sysctl.d/99-hardening.conf 套用關鍵參數:

# 網路層防護
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv6.conf.all.disable_ipv6 = 1  # 若不使用 IPv6

# 核心記憶體保護
kernel.randomize_va_space = 2
kernel.yama.ptrace_scope = 1
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
kernel.perf_event_paranoid = 3
kernel.modules_disabled = 1  # 禁用模組動態載入(生產環境視情況)

# 檔案系統保護
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
fs.suid_dumpable = 0

套用:sysctl --system。

九、稽核與日誌審計

  • 啟用 auditd,制定規則監控關鍵系統呼叫(execve, openat, unlink, setuid, mount 等)。
  • 集中日誌收集:rsyslog / syslog-ng → Elasticsearch / Splunk / Graylog / Loki。
  • 關鍵日誌檔案設定 chattr +a,並配置 logrotate 輪替後自動簽名/上傳異地。

十、持續性安全作業流程

  1. 漏洞掃描與修補:OpenVAS、Nessus、Lynis、yum update --security/apt upgrade 定期執行。
  2. 滲透測試:年度內外部滲透測試,驗證防禦有效性。
  3. 事件響應預案:建立 IRP,定期演練(資料外洩、勒索軟體、內部威脅等場景)。
  4. 安全基準合規:對照 CIS Benchmarks、STIG、PCI-DSS、GDPR、等保 2.0 等標準進行配置核查。
  5. 人員安全意識:定期社交工程演練、安全編碼訓練、權限最小化原則落實。

Linux 安全非一次性設定,而是持續的「防護-偵測-響應-改進」循環。將上述技巧整合至自動化部署流程與日常運維規範中,方能構建經得起實戰考驗的可信任系統。

copyright © 萬盛學電腦網 all rights reserved