身為系統管理員,守護伺服器安全是核心職責。面向 Internet 的 Web 伺服器遭受的攻擊可歸納為三大類:**根破壞 (Root Compromise)、隱私破壞 (Privacy Breach)、拒絕服務**。理解攻擊面與原理,才能建立纵深防禦體系。
一、根破壞
定義:攻擊者取得作業系統最高權限 (root/Administrator/SYSTEM)。
常見手法:
- 未加密傳輸竊聽:明文協定 (Telnet、FTP、HTTP Basic Auth) 傳輸帳密,被中間人攔截。
- 已知漏洞利用:Web 伺服器軟體 (Apache、Nginx、IIS)、應用框架、CMS、資料庫的未修補漏洞 (如緩衝區溢出、遠端代碼執行 CVE)。
- 提權攻擊:從低權限 Web 殼 (Webshell) 透過核心漏洞、配置錯誤 (SUID、sudo 錯配) 提升至 root。
攻擊後果:
- 植入 Rootkit 隱藏蹤跡 (竄改
ls、ps、last 等工具)。
- 竊取資料庫、原始碼、SSL 私鑰、用戶隱私資料。
- 將伺服器作為「肉雞」發動 DDoS、掃描內網、發送垃圾郵件、挖礦。
防禦要點:
- 全站強制 HTTPS (HSTS)、SSH 金鑰登入、禁用 FTP 改 SFTP。
- 建立修補週期:OS、中介軟體、應用層漏洞 24-72 小時內修補。
- 最小權限原則:Web 進程以非 root 使用者運行、禁用不必要的 SUID、鎖定
/tmp 執行位元。
- 部署 WAF (ModSecurity)、HIDS (OSSEC/Wazuh)、檔案完整性監控 (AIDE/Tripwire)。
二、隱私破壞
定義:攻擊者在未取得系統控制權前提下,竊取或洩露敏感資訊。
常見手法:
- 網路嗅探:未加密協定 (HTTP、FTP、SMTP、POP3、IMAP) 傳輸帳密、Session Cookie、個資。
- 資訊洩露:錯誤頁面堆疊追蹤、目錄列舉、版本號暴露、備份檔 (
.bak、.git、.svn) 可直接下載。
- 側信道攻擊:Timing Attack 推測資料、Cache Bleed 等。
防禦要點:
- 全站 TLS 1.2+、啟用 HSTS、Secure/Cookie/HttpOnly/SameSite 屬性。
- 關閉伺服器版本標頭 (
ServerTokens Prod、ServerSignature Off、expose_php = Off)。
- 錯誤頁面僅顯示通用訊息,詳細日誌僅寫入檔案不回傳前端。
- 敏感目錄/檔案 (`.git`、`.env`、備份檔) 以 Nginx/Apache 規則拒絕存取。
- 資料庫最小權限帳號、欄位級加密 (PII)、定期審計存取日誌。
三、拒絕服務
定義:消耗伺服器資源 (頻寬、CPU、記憶體、連接數、磁碟 I/O),導致合法用戶無法存取服務。
常見手法:
- 頻寬耗盡:UDP 反射放大 (NTP、DNS、Memcached)、大流量 SYN Flood。
- 應用層耗盡:CC 攻擊 (HTTP Flood)、Slowloris 慢速連線、大檔上傳佔滿磁碟、資料庫慢查詢拖垮。
- 協定漏洞:TCP 連接耗盡、SSL 重新協商攻擊 (THC-SSL-DOS)。
防禦要點:
- 邊界防禦:雲端 DDoS 清洗 (Cloudflare、AWS Shield、阿里云高防)、Anycast 分散流量。
- 主機層:
iptables/nftables 限制單 IP 連接數、syncookies、limit_req/limit_conn (Nginx)、mod_evasive (Apache)。
- 應用層:快取熱點頁面、靜態化、資料庫連線池限流、非同步佇列削峰。
- 監控告警:Prometheus + Grafana + Alertmanager 監控 QPS、延遲、錯誤率、連接數,異常自動封禁/擴容。
總結:纵深防禦檢查清單
| 層面 | 根破壞 | 隱私破壞 | 拒絕服務 |
| 網路 | SSH 金鑰、禁用明文協定 | 全站 HTTPS、HSTS | 雲端清洗、Anycast |
| 主機 | 及時修補、最小權限、HIDS/FIM | 關閉版本標頭、錯誤頁面通用化 | 連接數限制、syncookies |
| 應用 | WAF、輸入驗證、參數化查詢 | 敏感目錄封鎖、Cookie 安全屬性 | 快取、限流、非同步削峰 |
| 資料 | 資料庫最小權限、備份加密異地 | 欄位加密、存取審計 | 慢查詢優化、讀寫分離 |
| 運維 | 滲透測試、紅藍對抗 | 資料外洩防護 (DLP) | 壓力測試、應急預案演練 |
安全非一次性專案,而是持續的流程:識別 → 防護 → 偵測 → 回應 → 復原。將三大攻擊面納入日常運維體系,才能在威脅演進中保持韌性。