部署 SQL Server 後,必須執行以下 10 項安全強化動作,建立纵深防禦基線。參考 Microsoft 官方最佳實務與 MBSA (Microsoft Baseline Security Analyzer) 掃描項目整理。
1. 套用最新 Service Pack 與安全性更新
- SQL Server 2000 → **SP3a (含 MS02-061 修補)** 為基準起點。
- 訂閱 Microsoft Security Notification Service 獲取最新修補通知。
- 定期執行
MBSA 掃描缺失修補。
2. 執行 MBSA 基線安全性分析
MBSA 免費掃描工具,檢測 SQL Server/MSDE 常見不安全配置:
- 過多
sysadmin 角色成員
- 非
sysadmin 角色擁有 CmdExec 作業建立權限
- 空白/弱密碼 (含
sa)
- 脆弱驗證模式 (混合模式)
- Administrators 群組過度授權
- 資料目錄 ACL 不正確
- 安裝記錄檔含純文字
sa 密碼 (setup.iss, sqlstp.log)
guest 帳戶過度權限
- 網域控制器上運行 SQL Server
- Everyone 群組註冊表存取不當
- SQL Server 服務帳戶配置不當
- 缺少必要 SP/安全性更新
3. 強制使用 Windows 驗證模式
- 僅允許 Windows/網域帳戶連線,**禁用 SQL Server 驗證 (混合模式)**。
- 優勢:受惠 Kerberos/NTLMv2 強式驗證、密碼複雜度/到期策略、憑證委派、用戶端無需儲存密碼。
- 設定:Enterprise Manager → 伺服器屬性 → 安全性 → **僅限 Windows 驗證**。
4. 物理與邏輯隔離 + 定期異地備份
- 機房:門禁、防水/火災偵測/滅火系統。
- 網路:置於內網 DMZ,**不可直接暴露於 Internet**。
- 備份:定期完整/差異/記錄備份,**備份檔加密並異地離線保存**。
- 參考《SQL Server 2000 Operations Guide》作業最佳實務。
5. 設定強健 sa 密碼 (即使啟用 Windows 驗證)
- 防止未來切換回混合模式時
sa 為空/弱密碼。
- 設定:EM → 安全性 → 登入 →
sa → 內容 → 密碼。
- 密碼策略:≥12 字元、大小寫、數字、符號、非字典詞。
6. 最小化 SQL Server 服務帳戶權限
| 服務 | 建議帳戶類型 | 禁止帳戶類型 |
| MSSQLSERVER (引擎) | 網域一般使用者帳戶 | Local System, Local Admin, Domain Admin |
| SQLServerAgent (代理程式) | 網域一般使用者帳戶 (若不需則停用) | 同上 |
Agent 需本地管理員權限的特例:
- Agent 使用 SQL 驗證連線 (不建議)。
- 多伺服器管理 (MSX) 使用 SQL 驗證。
- 執行非
sysadmin 成員擁有的 ActiveX Script 或 CmdExec 作業。
**務必使用 Enterprise Manager 變更服務帳戶**,它會自動設定檔案/登錄/使用者權限 ACL。切勿用 services.msc 手動改。
7. 防火牆封鎖 SQL Server 連接埠
- 預設執行個體:TCP 1433, UDP 1434 (Browser 服務)。
- 具名執行個體:動態埠 → 需鎖定 Browser (UDP 1434) 並限制動態埠範圍 (
netsh advfirewall 或註冊表 TcpPort)。
- 內網分段:僅允許應用伺服器 IP 存取。
8. 採用 NTFS 檔案系統 + EFS 加密
- NTFS:支援 ACL、磁碟配額、壓縮、EFS (檔案加密系統)、日誌復原。
- 安裝時 SQL Server 自動設定資料/記錄/備份目錄 ACL,**勿手動修改**。
- EFS:資料庫檔案以服務帳戶金鑰加密,唯有該帳戶可解密。變更服務帳戶時,**必須先解密再重新加密**。
9. 刪除或保護舊安裝記錄檔 (含明文密碼)
- SQL 2000 預設路徑:
C:\Program Files\Microsoft SQL Server\MSSQL\Install\ (具名實例 MSSQL$InstanceName\Install\)
- 關鍵檔案:
sqlstp.log, sqlsp.log, setup.iss (含 sa 密碼)。
- 升級自 SQL 7.0:檢查
%Windir%\setup.iss, %Temp%\sqlsp.log。
- 官方免費工具:**Killpwd.exe** 自動搜尋並清除這些檔案中的密碼。
10. 稽核失敗登入嘗試
- EM → 伺服器屬性 → 安全性 → 稽核等級 → **僅失敗** (或成功與失敗)。
- **重啟服務生效**。
- 定期審閱
SQL Server 錯誤記錄 (預設 ERRORLOG 檔) 與 Windows 安全性事件日誌。
- **建議**:稽核日誌與資料檔放置於**不同實體磁碟**,防止日誌填滿影響資料庫。
持續營運檢查清單
- 每月執行 MBSA 掃描。
- 每季審閱
sysadmin 成員名單。
- 每半年輪換服務帳戶/應用帳戶密碼。
- 重大變更後 (修補、架構調整) 重跑基線掃描。