企業管理器 → 管理 SQL Server 訊息 → 搜尋 "login failed"、"denied" 等關鍵字。確認相關事件寫入 Windows 事件日誌,並建立警示發送郵件/訊息給值班人員。
確認每個角色 (sysadmin、db_owner、securityadmin 等) 僅授予必要使用者。SQL Server 7.0+ 引入多層權限模型,必須監控避免過度授權。
透過角色指派權限而非直接給使用者,簡化審計。確認 public 角色無法從系統表執行 SELECT。
USE master
SELECT name, password
FROM syslogins
WHERE password IS NULL
ORDER BY name
立即為所有空密碼帳號設定強式密碼或停用。
利用作業系統安全機制,簡化雙重安全模型維護,避免密碼出現在連接字串中。
USE master
SELECT sysobjects.name
FROM sysobjects, sysprotects
WHERE sysprotects.uid = 0
AND xtype IN ('X','P')
AND sysobjects.id = sysprotects.id
ORDER BY name
移除不必要的 PUBLIC 執行權限。
舊版企業管理器在標準安全模式下會以明文儲存 sa 密碼於註冊表:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\MSSQLServer\SQLEW\RegediHKEY_USERS\SOFTWARE\Microsoft\Microsoft SQL Server\Tools\SQLEW\Registered Server X\SQL Server Group改用整合驗證並手動刪除註冊表殘留值。
報告內容:新漏洞、成功攻擊案例、備份保護狀況、物件存取失敗統計。提交 IT 主管審閱。
任何服務器皆應遵循:使用者一旦能互動式登入,即有提權風險。
套用最新 Service Pack、累積更新、安全性公告修補程式。
遵循最小權限:使用者僅能查詢業務必要物件,嚴禁直接存取系統表、動態管理檢視等敏感資訊。