首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 安全配置完整指南:作業系統、補丁、帳號、審計與加密

     編輯:關於SqlServer

分層防禦架構

資料庫安全非單點防護,需構建 **OS → 網路 → 實例 → 資料庫 → 應用** 五層防線。本文聚焦 SQL Server 2000 實例與資料庫層面配置。

前置條件:作業系統與補丁基線

  1. OS 強化:Windows 2000/2003 安全性設定精靈 / SCW (Security Configuration Wizard)、關閉非必要服務、防火牆僅開 1433/1434 (必要時)、啟用稽核原則 (登入/物件存取/原則變更)。
  2. 修補程式:SQL Server 2000 **SP4 (最終版)** 為必裝基線,包含 MSXML 3.0 SP6、230+ 修正。下載:https://www.microsoft.com/download/details.aspx?id=8845 (歷史封存)。
  3. 應用層輸入驗證:ASP/PHP/.NET 等前端**必須**參數化查詢、白名單驗證、錯誤訊息不外洩,防止 SQL Injection 繞過資料庫層防禦。

1. 強健密碼策略

  • sa 帳號:安裝混合模式時**必須**設定複雜密碼 (≥16 字元、大小寫、數字、符號),**嚴禁**空密碼、寫入程式碼/設定檔/登入腳本。
  • 定期輪換:建立排程 (每 90 天) 變更所有 SQL 登入密碼,同步更新應用連線字串 (建議用 Key Vault/Secret Manager)。
  • 稽核弱密碼:

-- 稽核空密碼/弱密碼登入 (SQL 2000 相容)
SELECT name FROM master..syslogins WHERE password IS NULL OR pwdcompare('', password) = 1;
-- 注意:SQL 2000 密碼雜湊為未公開演算法,無法直接驗證複雜度,建議強制輪換。

2. 安全帳號策略

策略實作效益
專用管理帳號建立 sql_admin (sysadmin)、sql_operator (serveradmin/setupadmin),**禁用 sa 日常使用**,僅緊急修復啟用。審計追蹤、責任分離、減少 sa 暴露。
移除 BUILTIN\AdministratorsEXEC sp_droplogin 'BUILTIN\Administrators'; (需先確保有其他 sysadmin 可登入)。防止 OS 管理員直接具備 SQL 最高權限。
應用帳號最小權限唯讀應用 → db_datareader;寫入應用 → 自訂角色 GRANT INSERT, UPDATE, DELETE ON Schema::Sales TO App_Write。限制損害範圍、符合最小權限原則。
Windows 整合驗證優先網域環境啟用 僅 Windows 驗證模式,利用 Kerberos/NTLM、群組管理、密碼策略集中化。免管理 SQL 密碼、單一身分來源、支援委派。

3. 強化審計與日誌

  1. 登入審計**:企業管理員 → 實例屬性 → 安全性 → 稽核等級:**成功與失敗**。
  2. 定期檢視**:SQL Server 錯誤日誌、Windows 安全性事件日誌 (Event ID 18456 失敗登入、18453 鎖定)。
  3. 命令列快速掃描**:

findstr /C:"Login failed" "C:\Program Files\Microsoft SQL Server\MSSQL\LOG\ERRORLOG*"
findstr /C:"登入失敗" "C:\Program Files\Microsoft SQL Server\MSSQL\LOG\ERRORLOG*"

4. 管理擴展預存程序 (縮小攻擊面)

原則:預設拒絕,按需啟用。以下高風險程序**建議移除** (生產環境極少合理用途):


-- 1. 命令執行 (極高風險)
EXEC sp_dropextendedproc 'xp_cmdshell';
-- 還原: EXEC sp_addextendedproc 'xp_cmdshell', 'xpstar.dll'; (SQL 2000) / 'xplog70.dll' (SQL 7.0)

-- 2. OLE 自動化 (COM 物件存取,歷史漏洞溫床)
EXEC sp_dropextendedproc 'sp_OACreate';
EXEC sp_dropextendedproc 'sp_OAMethod';
EXEC sp_dropextendedproc 'sp_OAGetProperty';
EXEC sp_dropextendedproc 'sp_OASetProperty';
EXEC sp_dropextendedproc 'sp_OADestroy';
EXEC sp_dropextendedproc 'sp_OAGetErrorInfo';
EXEC sp_dropextendedproc 'sp_OAStop';

-- 3. 登錄存取 (可讀取 SAM/機碼)
EXEC sp_dropextendedproc 'xp_regread';
EXEC sp_dropextendedproc 'xp_regwrite';
EXEC sp_dropextendedproc 'xp_regdeletekey';
EXEC sp_dropextendedproc 'xp_regdeletevalue';
EXEC sp_dropextendedproc 'xp_regenumvalues';
EXEC sp_dropextendedproc 'xp_regaddmultistring';
EXEC sp_dropextendedproc 'xp_regremovemultistring';

-- 4. 其他高風險
EXEC sp_dropextendedproc 'xp_availablemedia';
EXEC sp_dropextendedproc 'xp_dirtree';
EXEC sp_dropextendedproc 'xp_enumdsn';
EXEC sp_dropextendedproc 'xp_fileexist';
EXEC sp_dropextendedproc 'xp_fixeddrives';
EXEC sp_dropextendedproc 'xp_getfiledetails';
EXEC sp_dropextendedproc 'xp_readerrorlog';
EXEC sp_dropextendedproc 'xp_terminate_process';
注意:移除前確認無合法業務依賴 (如備份軟體、監控代理、DTS ActiveX 任務)。測試環境驗證後再推生產。

5. 協定加密 (保護傳輸機密性)

  • SQL Server 2000 使用 **TDS (Tabular Data Stream)** 協定,預設明文傳輸 (含密碼、資料)。
  • 強制加密**:伺服器網路公用程式 → 通訊協定 (TCP/IP) → 屬性 → **強制通訊協定加密**。需在伺服器安裝有效憑證 (CN = FQDN),用戶端需信任根 CA。
  • 用戶端加密**:連接字串 `Encrypt=yes;TrustServerCert=no;` (生產必須驗證憑證鏈)。
  • IPSec 替代方案**:若無法部署憑證,網域群組原則部署 IPSec 傳輸模式加密 1433 埠流量。

6. 進階配置清單

項目建議設定指令/路徑
隱藏執行個體命名執行個體 + 非預設埠 (非 1433) + 停用 SQL Browser 服務伺服器網路公用程式 → TCP/IP → 埠號
停用 SA 重命名無法重命名,但可建立同名低權限登入混淆 (不推薦),核心在強密碼+審計--
限制錯誤訊息追蹤旗標 3625 (僅記錄錯誤碼,不回傳細節給用戶端)DBCC TRACEON (3625, -1) 或啟動參數 -T3625
資料庫擁有者所有使用者資料庫 EXEC sp_changedbowner 'sql_admin'防止 dbo 權限被普通帳號取得
公開角色權限撤銷 public 不必要權限:REVOKE SELECT ON sysobjects TO public 等最小化資訊洩露

總結:安全配置驗收清單


[ ] OS 強化、防火牆、稽核原則完成
[ ] SQL Server 2000 SP4 已套用
[ ] sa 強複雜密碼、定期輪換、非日常使用
[ ] 專用 sysadmin/operator 帳號建立、BUILTIN\Administrators 移除
[ ] 應用帳號最小權限、Windows 整合驗證優先
[ ] 登入審計「成功與失敗」啟用、日誌定期歸檔分析
[ ] xp_cmdshell / sp_OA* / xp_reg* / 其他高風險擴展程序 已移除
[ ] TDS 強制加密 / IPSec 已部署
[ ] 隱藏執行個體、非預設埠、錯誤訊息限制、資料庫擁有者收斂
[ ] 文件化所有配置、變更記錄、定期滲透測試
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved