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

SQL Server 安全防護實戰:從補丁、埠口、權限到危險預存程序清理完整指南

     編輯:關於SqlServer

前言:SQL Injection 威脅下的防禦體系

SQL Injection 攻擊頻發,許多大型網站慘遭注入。SQL Server 2000 已通過美國政府 C2 級安全認證,本身架構安全,關鍵在於**配置與管理**。本文提供分層防護實戰清單。

第一層:基礎加固

1. 套用最新安全更新

未打補丁的系統是最大漏洞,務必優先套用累積更新與安全公告補丁。

2. 修改預設埠口 1433 並隱藏伺服器

  • 企業管理器 → 伺服器屬性 → 網路設定 → TCP/IP 屬性:修改 TCP 埠號(如 2433、3433 等非預設值)。
  • 勾選「隱藏伺服器」,禁止回應用戶端列舉廣播。
  • TCP/IP 篩選再次封鎖 1433,雙重保險。

效果:攻擊者即使竊取帳密,也無法直接用查詢分析器遠端連線,大幅增加攻擊難度。

第二層:最小權限原則——資料庫角色精細化

為什麼不能用 sa / db_owner?

攻擊者確認注入點後,第一步必測權限:IS_SRVROLEMEMBER('sysadmin')、IS_MEMBER('db_owner')。若為 sa 或 db_owner,配合絕對路徑可植入 Webshell、執行 xp_cmdshell 奪取主機控制權。

自訂角色實作步驟

  1. 企業管理器 → 資料庫 → 角色 → 新增資料庫角色(如 App_Role)。
  2. **僅授予必要物件權限**:
    SELECT/INSERT/UPDATE/DELETE 特定資料表/檢視表/欄位
    EXECUTE 特定預存程序/函數
  3. **嚴禁授予**下列高風險角色/權限:
    db_owner、db_securityadmin、db_backupoperator、db_ddladmin
    CREATE TABLE、BACKUP DATABASE、BACKUP LOG 等陳述式權限
  4. 建立登入帳號時,**勿勾選任何伺服器角色**(特別是 sysadmin)。

第三層:移除/停用高危擴展預存程序

SQL Server 內建多支可讀寫登錄、執行命令、列舉目錄的擴展程序,若被注入利用後果嚴重。建議**全數移除**,需要時再恢復:

-- 移除高危擴展程序
EXEC sp_dropextendedproc 'xp_cmdshell';
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_regenumkeys';
EXEC sp_dropextendedproc 'xp_regaddmultistring';
EXEC sp_dropextendedproc 'xp_regremovemultistring';
EXEC sp_dropextendedproc 'xp_dirtree';
EXEC sp_dropextendedproc 'xp_enumgroups';
EXEC sp_dropextendedproc 'xp_fixeddrives';
EXEC sp_dropextendedproc 'xp_loginconfig';
EXEC sp_dropextendedproc 'xp_getfiledetails';
EXEC sp_dropextendedproc 'xp_enumerrorlogs';
-- ActiveX 相關
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';

補充防禦:移除後將對應 DLL(如 xplog70.dll, xpstar.dll)改名,防止攻擊者用 sp_addextendedproc 恢復。

第四層:其他加固細節

  • 修改 sa 密碼為高強度複雜密碼,**應用程式絕不使用 sa 連線**,採單一資料庫專用帳號。
  • 資料庫檔案(MDF/LDF)勿置於預設目錄,避免路徑遍歷洩露。
  • SQL Server 程式檔案勿安裝在 Program Files,減少權限提升面。
  • 啟用稽核:登入失敗/成功皆記錄,定期審查錯誤日誌。

總結

資料庫安全非單一設定可成,需**補丁管理 + 網路隔離 + 最小權限 + 移除危險功能 + 稽核監控**多層纵深防禦。將攻擊面壓縮到最小,才能在注入發生時將損失控制在資料層,避免主機淪陷。

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