前言
資料庫安全非一次設定即可,需分層防護。本文依 Microsoft 最佳實務,彙整 SQL Server 2000 安全加固十大關鍵步驟。
步驟 1:升級至 SP3a + 所有安全性更新
步驟 2:執行 Microsoft Baseline Security Analyzer (MBSA)
免費掃描工具,檢測:
- 過多
sysadmin 角色成員
- 非
sysadmin 擁有 CmdExec 作業權限
- 空白/弱密碼帳號
- 脆弱驗證模式
- Administrators 群組過度授權
- 資料目錄 ACL 錯誤
- 安裝檔案含明文
sa 密碼
guest 帳號過度權限
- 網域控制器上運行 SQL Server
- Everyone 群組註冊表存取錯誤
- 服務帳號設定錯誤
- 缺少必要 Service Pack/更新
下載:MBSA 官方頁面
步驟 3:強制使用 Windows 整合驗證
企業管理員 → 伺服器屬性 → 安全性 → 「僅限 Windows 驗證」
- 限制僅 Windows/網域帳號連線,阻擋網路攻擊工具
- 受益 Windows 強式密碼策略、Kerberos、憑證委派
- 用戶端無需儲存密碼,消除連線字串洩露風險
步驟 4:物理與邏輯隔離 + 定期異地備份
- 機房上鎖、防水、防火
- 資料庫置於內部網路安全區,**不直接連接 Internet**
- 定期完整備份,異地離線保存
- 參考:《SQL Server 2000 作業指南》
步驟 5:設定強健 sa 密碼 (即使啟用 Windows 驗證)
企業管理員 → 安全性 → 登入 → sa → 屬性 → 密碼
- 防止未來切換至混合模式時出現弱/空密碼
- 複雜度:>12 字元、大小寫、數字、符號
步驟 6:最小權限原則設定服務帳號
| 服務 | 建議帳號類型 | 禁止使用 |
| MSSQLServer (SQL Server Engine) | 一般網域使用者 | Local System / Local Admin / Domain Admin |
| SQLServerAgent | 一般網域使用者 (或停用) | Local System / Local Admin / Domain Admin |
例外需本地管理員權限:
- Agent 使用 SQL 驗證連線 (不建議)
- Agent 多伺服器管理 (MSX) 使用 SQL 驗證
- Agent 執行非
sysadmin 擁有的 ActiveX/CmdExec 作業
**變更帳號必須用企業管理員**,不可用 services.msc (需手動調整大量登錄/NTFS/使用者權限)。
步驟 7:防火牆封鎖 SQL Server 連接埠
- TCP 1433 (預設執行個體)
- UDP 1434 (SQL Browser)
- 具名執行個體動態連接埠 → **建議固定連接埠**並僅開放該埠
步驟 8:使用 NTFS 檔案系統 + EFS 加密
- NTFS 提供 ACL、穩定性、可復原性
- 安裝時自動設定適當 ACL,**勿手動更改**
- EFS 加密資料檔:僅服務帳號可解密,換帳號須先解密再重新加密
步驟 9:刪除或保護舊安裝檔案 (含明文密碼風險)
檢查路徑:
%ProgramFiles%\Microsoft SQL Server\MSSQL\Install\ (預設實例)
%ProgramFiles%\Microsoft SQL Server\MSSQL$\Install\ (具名實例)
- 檔案:
sqlstp.log, sqlsp.log, setup.iss
- 升級自 7.0:
%Windir%\setup.iss, %Temp%\sqlsp.log
工具:Killpwd (Microsoft 免費工具,自動尋找刪除明文密碼)
步驟 10:啟用失敗連線稽核並定期審閱
企業管理員 → 伺服器屬性 → 安全性 → 稽核層級 → 「失敗」→ 重啟服務生效
- 記錄檔**勿與資料檔同磁碟**
- 定期匯出分析異常登入嘗試
- 參考:TechNet「SQL Server 2000 稽核」、線上叢書「使用稽核記錄」
總結
安全是過程而非終點。十大步驟涵蓋:修補、掃描、驗證、隔離、密碼、最小權限、網路、檔案系統、安裝殘留、稽核。**定期重跑 MBSA、審閱稽核記錄、追蹤安全性公告** 才能持續維護防護態勢。