Red Hat Enterprise Linux 8 Security Hardening, 2020

本書旨在協助使用者和管理員學習保護 Red Hat Enterprise Linux 8 工作站與伺服器免受本地和遠端入侵、利用和惡意活動的程序與實踐。文件聚焦於 RHEL,但同時詳述適用於所有 Linux 系統的概念與技術,涵蓋了為資料中心、辦公場所和家庭建立安全運算環境所需的規劃與工具。透過適當的管理知識、警惕性和工具,運行 Linux 的系統可以既功能齊全,又能免受大多數常見入侵和利用方法的侵害。

1. 建構全面的安全基礎與理解威脅

文件的起始強調了電腦安全的重要性,特別是在高度互聯的現代環境中。它引入了資訊安全的基石——CIA 模型(Confidentiality 機密性、Integrity 完整性、Availability 可用性),並解釋了物理、技術和管理這三類安全控制措施。文件區分了弱點評估(Vulnerability Assessment)與滲透測試(Penetration Testing),指出弱點評估是找出潛在安全漏洞的過程,而滲透測試則是實際嘗試利用這些漏洞。它也列舉了針對網路、伺服器和工作站的常見安全威脅,如不安全的架構、未使用的服務、未修補的軟體、疏忽的管理行為以及固有的不安全服務,同時也詳細描述了諸如 IP 欺騙、竊聽、服務/應用程式漏洞、阻斷服務(DoS)攻擊等常見的利用手段。

論點: 建立強固的 RHEL 8 安全環境始於對核心安全原則(如 CIA 模型)的理解,實施多層次的安全控制(物理、技術、管理),並主動透過弱點評估來識別潛在風險。了解常見的安全威脅和利用手段是防禦策略的基礎,有助於針對性地採取預防措施。

2. 在安裝階段奠定安全基礎

安全性並非僅在系統運行後才考慮的事項;它應該在安裝階段就開始。文件強調了在安裝 RHEL 8 時採取特定步驟的重要性,以減少潛在攻擊面。這包括設定 BIOS/UEFI 和開機載入程式的密碼,以防止未經授權的物理訪問和繞過系統安全設定。建議採用分離的磁碟分割方案,為 /boot/home/tmp/var/tmp 等目錄建立獨立的分割區。這有助於隔離使用者資料和臨時檔案,防止單一分割區填滿導致系統不穩定,並簡化未來的升級和備份。文件也建議在安裝過程中限制網路連線,並僅安裝所需的最小套件集,因為每個額外的套件都可能引入潛在的漏洞。安裝後的立即步驟應包括系統更新和確保防火牆服務(firewalld)已啟用。

論點: RHEL 8 系統的初始安裝階段是建立安全環境的關鍵機會。透過設定韌體密碼、使用合理的磁碟分割、限制安裝時的網路曝露、最小化安裝套件,並立即執行安裝後更新,可以在系統投入使用前顯著提升其安全性。

3. 使用全系統加密政策強制執行密碼學標準

Red Hat Enterprise Linux 8 引入了全系統加密政策(System-Wide Cryptographic Policies)來簡化核心密碼學子系統(如 TLS, IPSec, SSH)的配置。這些政策提供了一組預定義的安全等級(DEFAULT, LEGACY, FUTURE, FIPS),可以輕鬆切換以符合不同的安全性或相容性需求。文件解釋了這些政策如何預設禁用不安全的密碼套件和協定,例如 SSLv3、RC4、3DES、DSA 小於 2048 位元的金鑰等,從而降低了因使用弱密碼學而導致的風險。管理員可以使用 update-crypto-policies 工具來查看、設定或甚至自訂這些政策。此外,文件也提到了啟用符合 FIPS 140-2 要求的 FIPS 模式以及在容器中啟用 FIPS 模式的步驟。

論點: RHEL 8 的全系統加密政策提供了一種高效且標準化的方式,確保系統上的應用程式預設使用現代、安全的密碼學演算法和協定。這對於防範基於弱密碼學攻擊至關重要,並且可以根據不同的安全需求(如 FIPS 合規性)進行調整。

4. 整合加密硬體提升金鑰保護

為了進一步保護敏感資訊,文件建議使用專用的加密硬體,如智慧卡(Smart Card)和硬體安全模組(HSM),來儲存私鑰並執行加密操作。RHEL 8 透過 PKCS #11 標準提供對這些硬體的統一支援,使得應用程式(如 SSH、Apache、Nginx、curl、wget)可以一致地存取硬體儲存的金鑰。將私鑰隔離在防篡改的硬體裝置中,可以顯著降低金鑰被竊取或洩露的風險,特別是在伺服器和終端使用者驗證場景中。文件說明了如何在 SSH、Web 伺服器以及其他應用程式中配置 PKCS #11 URI 來引用儲存在硬體中的金鑰和憑證。

論點: 透過 PKCS #11 標準整合加密硬體(如智慧卡或 HSM)到 RHEL 8 環境中,可以將敏感的私鑰儲存在受保護的裝置上,而不是儲存在檔案系統中。這提供了一個額外的安全層,有效防止金鑰被軟體漏洞或系統入侵所危害。

5. 管理共享的系統憑證信任儲存庫

RHEL 8 提供了統一的系統信任儲存庫,允許不同的應用程式(如 NSS, GnuTLS, OpenSSL, Java)共享一套預設的信任錨(trust anchors)和黑名單資訊。這個中央化的儲存庫通常包含 Mozilla 憑證授權中心(CA)清單。管理員可以透過在特定目錄中放置憑證檔案(如 /etc/pki/ca-trust/source/anchors/)並運行 update-ca-trust 命令來輕鬆添加新的信任憑證。文件也提到了 trust 命令可以用來列出、提取或管理信任錨。這種共享機制確保了系統上所有支援的應用程式使用相同且最新的信任設定,簡化了憑證管理。

論點: RHEL 8 的共享系統憑證信任儲存庫為系統上的多個密碼學庫和應用程式提供了一個統一的憑證信任來源。這簡化了信任鏈管理,確保了憑證的一致性和最新性,是建立安全通訊(如 HTTPS, TLS)環境的基礎。

6. 自動化掃描系統的配置合規性與弱點

主動評估系統的安全狀態是持續安全管理的重要部分。RHEL 8 提供了一套基於 SCAP(Security Content Automation Protocol)標準的工具,用於自動化執行配置合規性檢查和弱點掃描。OpenSCAP 庫和 oscap 命令列工具,以及圖形化的 SCAP Workbench,能夠對本地或遠端系統進行掃描,根據 SCAP 安全指南 (SSG) 中定義的安全策略檔案(如 OSPP, PCI-DSS 設定檔)檢查系統配置是否合規,或使用 Red Hat Security Advisories (RHSA) OVAL 資料檢查系統是否存在已知弱點。文件詳細說明了如何執行這些掃描、生成報告,以及如何使用提供的補救措施(自動化腳本或 Ansible Playbook)來修復不合規的設定。SCAP 工具甚至可以整合到安裝流程中(Anaconda Add-on, Kickstart),以確保新部署的系統一開始就符合特定的安全基準。

論點: 利用 RHEL 8 提供的 SCAP 工具和 SSG 內容,可以自動化執行系統的配置合規性評估和弱點掃描。這使得管理員能夠有效地監控系統的安全狀態,識別不符合政策的配置和已知漏洞,並自動化實施補救措施,從而維持系統的安全基線。

7. 使用 AIDE 監控檔案完整性

檔案完整性監控對於偵測系統入侵和未經授權的修改至關重要。AIDE (Advanced Intrusion Detection Environment) 是一個用於實現此目的的工具。它透過建立系統關鍵檔案和目錄的基準資料庫(包含權限、檔案類型、使用者/群組所有權、修改時間、檔案大小、連結數量和選定的雜湊演算法計算出的雜湊值),然後定期(建議每天或至少每週)對比當前狀態與基準資料庫來檢測變更。文件說明了 AIDE 的安裝、初始化基準資料庫、執行完整性檢查以及在確認變更合法後更新資料庫的步驟。偵測到的任何與基準不符的變更都需要進一步調查,因為這可能代表系統已被入侵或損壞。

論點: 實施檔案完整性監控是偵測潛在系統入侵和惡意活動的重要技術控制措施。AIDE 提供了一個可靠的方法來建立和驗證系統關鍵檔案的完整性,及時發現未經授權的變更。

8. 使用 LUKS 加密區塊裝置

磁碟加密是保護靜態資料(data at rest)免受物理盜竊或丟失的有效方法。RHEL 8 使用 LUKS (Linux Unified Key Setup) 作為區塊裝置加密的標準格式。LUKS 允許使用多個使用者密碼或金鑰來解密一個主金鑰,該主金鑰用於對整個區塊裝置進行大批量加密。文件解釋了 LUKS 的工作原理、優點(保護靜態資料、支援多個金鑰、抵禦字典攻擊)和局限性(僅在裝置離線時保護),並強調了 LUKS2 作為 RHEL 8 中的預設格式,它支援線上重新加密和更強韌的元資料管理。文件提供了使用 LUKS2 加密空白裝置或加密現有資料的步驟。

論點: LUKS 提供了強大且標準化的區塊裝置加密功能,是保護 RHEL 8 系統上敏感靜態資料的首選方法。透過在安裝時或之後對關鍵磁碟分割區進行加密,可以顯著降低資料因物理存取而洩露的風險。

9. 配置基於政策的解密(PBD)自動解鎖加密磁區

為了提高使用者體驗並實現自動化部署,RHEL 8 引入了 Policy-Based Decryption (PBD) 框架,特別是 Network-Bound Disk Encryption (NBDE),用於自動解鎖 LUKS 加密的磁區,尤其適用於無頭伺服器或雲端環境。PBD 框架的核心組件是 Clevis 客戶端和稱為 “pins” 的外掛(如 Tang 用於網路解鎖,TPM2 用於硬體解鎖)。Clevis 可以將 LUKS 磁區的金鑰綁定到一個或多個 “pin” 定義的政策上,例如要求能夠連線到特定的 Tang 伺服器,或 TPM 裝置處於預期的狀態。這使得系統在啟動時無需手動輸入密碼即可解鎖磁區。文件詳細說明了部署 Tang 伺服器、配置 Clevis 客戶端進行綁定、處理 Tang 金鑰輪換、以及實現高可用性 NBDE(例如使用 Shamir’s Secret Sharing)的步驟和考慮事項。

論點: 基於政策的解密(特別是 NBDE)解決方案(如 Clevis 與 Tang/TPM2 的結合)為自動解鎖 LUKS 加密的 RHEL 8 磁區提供了一種安全且彈性的機制。這在需要遠端管理或大規模部署加密系統的環境中特別有用,它在安全性和易用性之間取得了平衡。

10. 設定和使用 Linux 稽核系統

Linux 稽核系統(Linux Audit system)是 RHEL 8 中用於追蹤系統安全相關事件的核心工具。它基於一系列規則,記錄系統上的活動,生成詳細的日誌,這對於事後分析、偵測安全政策違規和進行數位鑑識至關重要。稽核系統由核心組件和使用者空間工具(如 auditd 精靈、auditctlausearchaureport)組成。文件解釋了稽核日誌的結構和內容,以及如何使用 auditctl 設定即時規則或使用位於 /etc/audit/rules.d/ 目錄中的規則檔案來定義持久性規則(由 augenrules 編譯載入)。設定合理的 auditd.conf 參數(如日誌檔案大小、空間不足時的行為)對於確保稽核系統的可靠運行和防止日誌被覆蓋至關重要。

論點: 配置和維護一個全面的 Linux 稽核系統是 RHEL 8 安全策略的基石。透過定義適當的稽核規則,可以記錄關鍵的系統事件和使用者活動,這對於偵測入侵、分析安全事件、確保法規合規性以及追究責任至關重要。

11. 配置和管理應用程式白名單

應用程式白名單是一種主動的安全防禦措施,旨在僅允許已知和信任的應用程式在系統上執行,從而有效阻止未知和潛在惡意軟體的運行。RHEL 8 提供了 fapolicyd 框架來實現這一功能。fapolicyd 依靠 RPM 資料庫來識別受信任的軟體,並允許管理員定義基於檔案路徑、雜湊值、MIME 類型或信任來源的執行規則。文件說明了如何安裝和啟用 fapolicyd 服務,以及如何透過編輯規則檔案來新增自訂的允許或拒絕規則,以適應特定的應用程式或目錄。這提供了一個強力的控制機制,限制了系統上可以執行的程式。

論點: 實施應用程式白名單是增強 RHEL 8 安全性的有力方法,特別是對於防止零日惡意軟體和非授權程式的執行。fapolicyd 框架提供了一個靈活且可配置的機制來定義和強制執行應用程式執行政策。

12. 使用 USBGuard 保護系統免受入侵性 USB 裝置侵害

USB 裝置因其便捷性也帶來了潛在的安全風險,惡意 USB 裝置可能用於傳播惡意軟體或竊取資料。USBGuard 是 RHEL 8 中用於控制 USB 裝置存取的軟體框架。它利用核心的 USB 裝置授權功能,實施基於使用者定義政策的白名單或黑名單機制。管理員可以設定規則來允許或阻止特定 USB 裝置的連接,這些規則可以基於裝置的廠商/產品 ID、序號、雜湊值或其他屬性。文件提供了安裝 USBGuard、生成初始規則、使用命令列工具授權或阻止裝置、建立自訂規則集、以及配置哪些使用者或群組有權透過 IPC 介面管理 USBGuard 政策的步驟。將 USBGuard 事件記錄到 Linux 稽核日誌中,可以進一步增強監控能力。

論點: 部署 USBGuard 是保護 RHEL 8 系統免受潛在惡意或未經授權 USB 裝置威脅的有效方法。透過控制 USB 裝置的存取,可以降低惡意軟體傳播、資料洩露以及透過 USB 介面進行物理攻擊的風險。

總之,Red Hat Enterprise Linux 8 的安全強化是一項多方面的任務,需要結合預防性配置、強固的密碼學實施、持續的監控和評估,以及對外部裝置和應用程式執行的嚴格控制。這份文件提供的指導涵蓋了從系統安裝到運行時保護的關鍵領域,為建立一個安全且符合規範的 RHEL 8 環境提供了全面的藍圖和工具。