企業需將 SQL Server 發行/訂閱資料庫跨網際網路安全複寫,可透過 Microsoft Proxy Server (後繼者為 ISA Server / Forefront TMG) 的 WinSock Proxy 功能,建立 TCP 1433 通道並實施存取控制。本文詳細說明 Proxy Server 端協定定義、發行/訂閱伺服器端 WinSock 綁定與 Proxy Client 設定步驟。
架構概覽
- 發行者/散發者 (Publisher/Distributor): 內網 SQL Server,透過 Proxy Server 對外發布複寫資料。
- Proxy Server: 邊界防火牆/Proxy,執行 WinSock Proxy 服務,轉發 TCP 1433 流量並強制驗證/過濾。
- 訂閱者 (Subscriber): 遠端 SQL Server,透過 Proxy Server 連接發行者進行複寫同步。
步驟一:在 Proxy Server 定義 WinSock 協定 (TCP 1433 入站)
- 開始 → 程式集 → Microsoft Proxy Server → Microsoft Management Console (MMC)。
- 展開「Internet Information Service」→ 運行 Proxy Server 的伺服器節點。
- 右鍵 WinSock Proxy Service → 內容。
- 「通訊協定」頁籤 → 「新增」。
- 設定:
協定名稱: 輸入複寫散發伺服器的電腦名稱 (或描述性名稱)。
連接埠: 1433 (SQL Server 預設執行個體)。
類型: TCP。
方向: Inbound (入站)。
- 確定儲存。
進階存取控制: 在 Proxy Server 針對此協定 (連接埠 1433) 設定「僅允許指定 IP 位址建立連線」,限制僅授權訂閱者 IP 可連入。
步驟二:設定發行/散發伺服器為 Proxy Client 並綁定 WinSock 連接埠
1. 建立/確認 Wspcfg.ini 設定檔
路徑:C:\Mssql7\Binn\Wspcfg.ini (SQL Server 7.0/2000 路徑;SQL 2005+ 請參考對應 Binn 目錄)。
若不存在,用記事本建立,內容如下:
[sqlservr]
ServerBindTcpPorts=1433
Persistent=1
KillOldSession=1
參數說明:
ServerBindTcpPorts=1433:SQL Server 服務 (sqlservr.exe) 綁定 WinSock Proxy 連接埠 1433 接聽連線請求。
Persistent=1:保持持久連線。
KillOldSession=1:新連線建立時終止舊工作階段。
2. 安裝 Proxy Client 元件
- Proxy Server 安裝後會建立共享資料夾
C:\Msp\Clients (共享名 mspclnt)。
- 在 SQL Server (發行/散發伺服器) 上執行:
Win+R → \\ProxyServer名稱\mspclnt → 執行 Proxy Client 設定程式。
- 安裝完成後**重新啟動電腦**使設定生效。
此後 SQL Server 成為 Proxy Server 內部用戶,所有輸出連線 (含複寫流量) 經由 WinSock Proxy 轉發,受防火牆規則、驗證、稽核管控。
安全性考量與現代替代方案
- Microsoft Proxy Server / ISA Server / Forefront TMG 已停止支援 (TMG 2020 年結束延伸支援)。
- 現代環境建議採用:
- VPN (IPsec / SSL VPN / WireGuard):建立加密隧道,訂閱者直接連接內網 SQL Server,無需暴露 1433 於公網。
- SQL Server Always On 可用性群組 / 複寫過 VPN:原生高可用與複寫配合 VPN。
- Azure SQL / AWS RDS / GCP Cloud SQL:雲端託管資料庫,內建私有連結、VPC Peering、Private Endpoint,無需自建 Proxy。
- 應用層 API (REST/GraphQL/gRPC) + API Gateway (OAuth2/JWT、速率限制、WAF):取代直接資料庫複寫,解耦合並強化安全。
若維護舊系統必須使用 Proxy Server 複寫,**務必**:Proxy Server 修補至最終版、強制複雜密碼/雙因子認證、限制 1433 來源 IP、啟用完整稽核日誌、定期滲透測試。但長遠規劃應遷移至現代零信任架構。