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

SQL Server 2000 安全配置完整指南:從作業系統到資料庫深層防禦

     編輯:關於SqlServer

前言:深層防禦策略

資料庫安全非單一設定即可完成,需遵循「作業系統 → 網路/通訊協定 → 執行個體/服務 → 資料庫物件 → 應用程式」五層防禦體系。本文針對 SQL Server 2000 提供可落地的配置清單。

第一層:作業系統與網路基礎

  1. 修補作業系統:安裝最新 Service Pack 與安全性更新(Windows 2000 SP4+ / Windows 2003 SP1+);
  2. 停用不必要服務:僅保留 SQL Server、SQL Server Agent、MSDTC(分散式交易需求時);
  3. 防火牆規則:僅開放 1433/1434(預設執行個體)或指定連接埠(具名執行個體),限制來源 IP 區段;
  4. IPSec 政策:要求用戶端與伺服器間以 IPSec 加密傳輸,防止中間人攻擊與密碼竊聽。

第二層:SQL Server 執行個體強化

1. 服務帳號最小權限

  • 建立專用網域帳號(非 Administrator)執行 MSSQLSERVER、SQLSERVERAGENT 服務;
  • 帳號僅需「登入為服務」、「調整處理序記憶體配額」等最小權利;
  • 定期輪換服務帳號密碼(建議 90 天)。

2. 修補 SQL Server 本體

  • 安裝 SP4(8.00.2039)為基準,再套用後續累積修補程式(如 MS08-040、MS09-004 等關鍵更新);
  • 使用 SELECT @@VERSION 驗證版本號:8.00.2039 為 SP4 基準,更高為後續修補。

3. 網路通訊協定加密

  • 啟用「強制通訊協定加密」:企業管理員 → 伺服器屬性 → 網路設定 → 勾選「強制通訊協定加密」;
  • 或用戶端連接字串加入 Encrypt=yes;TrustServerCertificate=no;
  • 簽署有效 SSL 憑證(非自我簽署),防止中間人攻擊。

第三層:認證與授權核心

1. 強制 Windows 驗證模式

  • 企業管理員 → 伺服器屬性 → 安全性 → 僅限「Windows 驗證模式」;
  • 若業務需求必須混合模式,務必為 sa 設定 16 字元以上複雜密碼,並嚴禁應用程式使用 sa 連線。

2. sa 帳號隔離與監控

  • 重新命名 sa(SP3+ 支援):sp_rename 'sa', 'sql_admin_legacy';
  • 建立專屬 DBA 帳號(如 dba_admin),授予 sysadmin 角色,日常管理使用;
  • 稽核 sa 登入嘗試:建立觸發器記錄失敗/成功登入,或啟用「稽核登入失敗/成功」。

3. 密碼原則強制(需 Windows 2003+)

  • 群組原則 → 帳號原則 → 密碼原則:啟用複雜度、長度、歷程記錄、最長/最短使用期限;
  • SQL 2000 本身不強制密碼原則,需透過作業系統層面約束服務帳號與網域帳號。

第四層:資料庫物件與權限精細化

1. 移除危險擴展預存程序

-- 僅保留業務必要者,其餘移除
EXEC sp_dropextendedproc 'xp_cmdshell';        -- 作業系統命令執行,極高風險
EXEC sp_dropextendedproc 'xp_regread';         -- 登錄讀取
EXEC sp_dropextendedproc 'xp_regwrite';        -- 登錄寫入
EXEC sp_dropextendedproc 'xp_regdeletekey';    -- 登錄刪除
EXEC sp_dropextendedproc 'xp_servicecontrol';  -- 服務控制
-- 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_OAStop';

注意:移除前請確認應用程式無相依性;若需臨時使用,可 sp_addextendedproc 還原。

2. 移除範例資料庫

EXEC sp_dboption 'pubs', 'single user', 'true';
DROP DATABASE pubs;
EXEC sp_dboption 'Northwind', 'single user', 'true';
DROP DATABASE Northwind;

3. 最小權限原則實作

  • 應用程式連線帳號:僅授予 db_datareader、db_datawriter、EXECUTE 預存程序權限;
  • 拒絕 public 角色對系統資料表(sysobjects、syscolumns 等)的 SELECT 權限;
  • 使用「擁有權鏈」:應用程式僅透過預存程序存取資料,不直接授予資料表權限。

第五層:稽核與持續監控

1. 啟用登入稽核

  • 企業管理員 → 伺服器屬性 → 安全性 → 稽核層級:「失敗與成功」;
  • 定期檢視 ERRORLOG 與 Windows 安全性事件記錄(Event ID 18456 登入失敗、18453 登入成功)。

2. 追蹤高風險操作

-- 建立追蹤 DDL 與權限變更
CREATE TRIGGER tr_audit_ddl ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE, 
    CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,
    GRANT_DATABASE, DENY_DATABASE, REVOKE_DATABASE
AS
BEGIN
    INSERT INTO audit_ddl_log (event_type, object_name, login_name, sql_text, event_time)
    SELECT EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
           EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]', 'nvarchar(128)'),
           SYSTEM_USER,
           EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(max)'),
           GETDATE();
END;

3. 定期弱點掃描

  • 使用 Microsoft Baseline Security Analyzer (MBSA) 掃描 SQL Server 弱點;
  • 訂閱 Microsoft Security Bulletin,評估並部署安全性更新。

附錄:快速自檢清單

檢查項目預期狀態驗證指令
作業系統修補最新 SP + 關鍵更新MBSA 掃描
SQL Server 版本8.00.2039 (SP4) 以上SELECT @@VERSION
驗證模式Windows 驗證伺服器屬性 → 安全性
sa 密碼複雜度16+ 字元、定期輪換人工確認
xp_cmdshell 狀態已移除SELECT * FROM master..sysobjects WHERE name='xp_cmdshell'
範例資料庫已移除sp_helpdb
通訊協定加密強制加密伺服器屬性 → 網路設定
登入稽核失敗與成功伺服器屬性 → 安全性 → 稽核層級

結語

SQL Server 2000 雖為舊版本,但許多企業仍在運行。安全配置非一次性動作,而是持續的流程:基線建立 → 變更控制 → 定期稽核 → 事件響應。本指南提供的配置項目經實戰驗證,可有效將攻擊面壓縮至最小,滿足合規與風險控管需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved