資料庫安全非單一設定即可完成,需遵循「作業系統 → 網路/通訊協定 → 執行個體/服務 → 資料庫物件 → 應用程式」五層防禦體系。本文針對 SQL Server 2000 提供可落地的配置清單。
SELECT @@VERSION 驗證版本號:8.00.2039 為 SP4 基準,更高為後續修補。Encrypt=yes;TrustServerCertificate=no;sa 設定 16 字元以上複雜密碼,並嚴禁應用程式使用 sa 連線。sa 帳號隔離與監控sa(SP3+ 支援):sp_rename 'sa', 'sql_admin_legacy';dba_admin),授予 sysadmin 角色,日常管理使用;sa 登入嘗試:建立觸發器記錄失敗/成功登入,或啟用「稽核登入失敗/成功」。-- 僅保留業務必要者,其餘移除
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 還原。
EXEC sp_dboption 'pubs', 'single user', 'true';
DROP DATABASE pubs;
EXEC sp_dboption 'Northwind', 'single user', 'true';
DROP DATABASE Northwind;
db_datareader、db_datawriter、EXECUTE 預存程序權限;public 角色對系統資料表(sysobjects、syscolumns 等)的 SELECT 權限;ERRORLOG 與 Windows 安全性事件記錄(Event ID 18456 登入失敗、18453 登入成功)。-- 建立追蹤 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;
| 檢查項目 | 預期狀態 | 驗證指令 |
|---|---|---|
| 作業系統修補 | 最新 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 雖為舊版本,但許多企業仍在運行。安全配置非一次性動作,而是持續的流程:基線建立 → 變更控制 → 定期稽核 → 事件響應。本指南提供的配置項目經實戰驗證,可有效將攻擊面壓縮至最小,滿足合規與風險控管需求。