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

SQL Server 2000 進階安全強化實戰指南(下):服務權限、防火牆、NTFS 與安裝殘留清理

     編輯:關於SqlServer

前言:纏深防御的最後防線

承接上篇網路協定、驗證模式、sa 帳戶與審計設定,本文聚焦作業系統層面的權限收斂、網路邊界隔離、檔案系統安全與安裝痕跡清理——這些往往被忽視,卻是駭客取得初始立足點後進行提權與橫向移動的關鍵路徑。

6. 精準收斂 SQL Server 服務帳戶權限

核心原則:最小權限原則

SQL Server (MSSQLSERVER) 與 SQL Server Agent (SQLSERVERAGENT) 均作為 Windows 服務運行,其安全上下文完全繼承自啟動帳戶。一旦資料庫引擎被攻破(如透過 SQL 注入觸發緩衝區溢位),攻擊者將獲得該服務帳戶的完整系統權限。

標準化帳戶配置矩陣

服務建議帳戶類型具體配置禁止配置
Database Engine
(MSSQLSERVER / MSSQL$InstanceName)
專用網域使用者帳戶• 僅具「標準使用者」權限
• 獲授「作為服務登入」
• 獲授「替換進程層級令牌」
• 資料/記錄/備份目錄具修改權限
Local System
Local Administrators
Domain Admins
SQL Server Agent
(SQLSERVERAGENT / SQLAgent$InstanceName)
專用網域使用者帳戶同上,若無 Agent 作業可直接「停用」服務同上

Agent 需本機管理員權限的三大例外場景

  1. Agent 使用 SQL Server 驗證(而非 Windows 整合驗證)連線資料庫引擎
  2. 多伺服器管理 (MSX/TSX) 架構下,主伺服器帳戶使用 SQL 驗證
  3. Agent 執行非 sysadmin 角色成員擁有的 CmdExec 或 ActiveX Script 作業步驟

對策:盡可能避免上述場景;若業務強制需求,請將該實例物理隔離於 DMZ 或獨立 VLAN,並啟用嚴格出站防火牆規則。

變更帳戶的正確姿勢:唯有 Enterprise Manager

⚠ 禁忌:絕不可使用「服務」嵌入式管理單元 (services.msc) 或 sc config 指令變更帳戶!這將導致註冊表 ACL、NTFS 權限、使用者權限指派大量缺失,服務無法啟動。

Enterprise Manager 會自動完成:

  • 資料/記錄/備份目錄的 NTFS ACL 重設
  • 註冊表機碼 HKLM\SOFTWARE\Microsoft\MSSQLServer 等的 ACL 重設
  • 「作為服務登入」、「替換進程層級令牌」等使用者權限指派

變更生效需重啟服務;雙服務需分別操作。

7. 防火牆層面封鎖 SQL Server 埠口

預設監聽埠必須封鎖

協定埠號用途處置
TCP1433預設執行個體 TDS 通訊邊界防火牆 拒絕所有入站
UDP1434SQL Server Browser 解析命名執行個體邊界防火牆 拒絕所有入站

命名執行個體動態埠處理

  • 命名執行個體啟動時向 SQL Server Browser 註冊隨機 TCP 埠
  • 客戶端先查詢 UDP 1434 取得實際埠號,再建立 TCP 連線
  • 生產環境建議:為命名執行個體配置固定 TCP 埠(組態管理器 → 網路設定 → TCP/IP → IPAll → TCP Port),並在防火牆僅開放該固定埠給特定應用伺服器 IP

8. 強制採用 NTFS 檔案系統並啟用 EFS 加密

為何 NTFS 是唯一選擇?

  • ACL 精細控制:檔案/目錄層級存取控制清單,支援繼承與審計
  • 日誌式結構:元資料交易日誌確保崩潰後一致性,較 FAT32 大幅降低損壞風險
  • 磁碟配額:防止資料庫無序增長佔滿磁碟
  • EFS (Encrypting File System):透明檔案級加密,資料檔 (.mdf/.ndf) 與記錄檔 (.ldf) 落地即加密

EFS 運作機制與帳戶變更流程

  1. SQL Server 服務啟動帳戶持有 EFS 憑證私鑰,唯有該帳戶可解密資料檔
  2. 安裝程式偵測到 NTFS 時自動設定註冊表與檔案 ACL——嚴禁人工修改
  3. 變更服務帳戶時:
    1. 以舊帳戶登入,解密所有資料/記錄/備份檔案
    2. 以新帳戶登入,重新加密上述檔案
    3. 再透過 Enterprise Manager 變更服務帳戶

9. 徹底清理或保護安裝殘留敏感檔案

高風險檔案清單與定位路徑

SQL 版本安裝類型敏感檔案路徑風險內容
SQL Server 2000預設執行個體%ProgramFiles%\Microsoft SQL Server\MSSQL\Install\sqlstp.log、sqlsp.log、setup.iss 可能含明文/弱加密 sa 密碼、服務帳戶憑證、授權金鑰
命名執行個體%ProgramFiles%\Microsoft SQL Server\MSSQL$InstanceName\Install\
SQL Server 7.0 升級—%Windir%\setup.iss
%Temp%\sqlsp.log

微軟官方清理工具:Killpwd.exe

  • 免費下載,掃描並安全刪除上述日誌中的密碼字串
  • 建議納入部署腳本自動化執行

補充防護:安裝介質與備份介質

  • 安裝光碟/ISO/網路共享若含 setup.iss 回應檔,同樣可能洩露密碼
  • 備份檔 (.bak) 本身不加密(除非啟用備份壓縮加密或 TDE),離線複製即可還原——異地備份必須加密傳輸與靜態加密

綜合檢核清單(可直接匯入 Excel 追蹤)

#檢核項目驗證方式責任人狀態
6.1資料庫引擎服務帳戶為專用網域使用者services.msc / Enterprise ManagerDBA☐
6.2Agent 服務帳戶同標準或已停用同上DBA☐
6.3帳戶變更皆透過 Enterprise Manager審計變更記錄DBA☐
7.1邊界防火牆封鎖 TCP 1433 / UDP 1434 入站防火牆規則審查 / nmap 掃描NetAdmin☐
7.2命名執行個體採固定埠並僅開放應用伺服器 IP組態管理器 + 防火牆規則DBA/NetAdmin☐
8.1資料/記錄/備份磁碟皆為 NTFSfsutil fsinfo volumeinfo X:SysAdmin☐
8.2EFS 已啟用且憑證備份離線保存檔案屬性 → 進階 → 加密內容SysAdmin☐
9.1Install 目錄下無殘留 .log/.iss 或已跑 Killpwd目錄掃描 / 關鍵字搜尋DBA☐
9.2安裝介質與回應檔已銷毀或加密保存實體/邏輯盤點SecOps☐

結語

安全非一次設定,乃持續過程。上述九大項(含上篇)構成 SQL Server 2000 纏深防御基線。建議每季執行一次完整檢核,重大變更(補丁、遷移、架構調整)後必須複驗。隨著 SQL Server 2000 早已結束延伸支援 (2013/04/09),規劃升級至支援中版本(SQL Server 2019/2022 或 Azure SQL)才是根本之道——舊版本無法獲得新發現漏洞的修補,上述所有努力終將面臨零日風險的挑戰。

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