前言
Apache 佔據半壁江山得益於其安全基因,但默認安裝仍存在過度暴露風險。五大措施助你構建「最小權限、最少信息、最強隔離」的加固基線。
措施一:只安裝所需模塊 —— 減少攻擊面
- 標準安裝含 20+ 模塊 (CGI、各類認證等)。業務不用的模塊一律不編譯/不加載。
- 檢查 `httpd.conf` 中 `LoadModule` 行,註釋掉無用模塊 (如 `mod_cgi`、`mod_auth_*` 等),重啟驗證功能完整性。
- 原則:不確定是否需要 → 先關閉,業務驗證無影響再永久移除。
措施二:最小化信息暴露 —— 阻斷偵察
- 關閉版本號洩露:`httpd.conf` 設置 `ServerSignature Off` (默認 On 會在錯誤頁輸出版本/OS)。
- 禁用目錄瀏覽:`Options` 指令中移除 `Indexes`。
修改前: `Options Indexes FollowSymLinks`
修改後: `Options FollowSymLinks` 或 `Options -Indexes`。
- 效果:攻擊者無法獲取目錄結構、無法通過版本號精準匹配 CVE。
措施三:禁用符號鏈接跟蹤 —— 防止目錄遍歷越權
- 多人維護站點時,惡意/誤操作建立指向敏感目錄 (如 `/etc`、`/root`) 的符號鏈接風險極高。
- 修改 `Directory` 塊:移除 `FollowSymLinks`,改用 `SymLinksIfOwnerMatch` (僅允許擁有者同屬的鏈接)。
修改前: `Options Indexes FollowSymLinks`
修改後: `Options Indexes SymLinksIfOwnerMatch`
措施四:具體化 Listen 指令 —— 綁定業務 IP
- 默認 `Listen 80` 監聽所有網卡 80 端口。多 IP 服務器會暴露管理/備份/內網介面。
- 改為 `Listen 192.168.1.100:80` (僅綁定業務公網 IP)。內網管理另行綁定高位端口並配置 ACL。
- 不適用場景:單 IP 服務器、需監聽所有介面的負載均衡節點。
措施五:清理 httpd.conf 註釋 —— 消除配置漂移隱患
- 默認配置 400+ 行,絕大多數為註釋。註釋中常殘留危險示例配置 (如開啟 `mod_status`、`mod_info`、寬鬆 ``)。
- 實踐:備份原文件 (`cp httpd.conf httpd.conf.orig`),刪除所有註釋行,保留純指令。文件縮減至 50 行內,極易審計、難隱藏錯誤。
- 配合版本控制 (Git) 管理配置變更,實現 Infrastructure as Code。
驗證清單
- `curl -I https://server/` → 無 `Server` 版本細節 (僅 `Server: Apache`)。
- 訪問無索引目錄 → 返回 403 Forbidden 而非文件列表。
- `lsof -i :80` → 僅監聽預期 IP:Port。
- `grep -v '^#' httpd.conf | grep -v '^$' | wc -l` → 指令行數 < 60。
結語
五大措施直擊 Apache 核心風險點:模塊膨脹、信息洩露、符號鏈接越權、監聽過廣、配置雜訊。實施後攻擊面壓縮 80% 以上,配置可讀性大幅提升。建議納入基線模板,所有新節點自動化交付。