Sql-Server
SQL Server - 為什麼我在沒有會話的情況下獲得 TCP 連接?
我使用自簽名證書啟用了啟用了強制加密的 SSL。
然後我設置了自動監控來檢測不安全的連接(我知道這似乎是多餘的,但請耐心等待),使用以下 T-SQL 查詢:
SELECT CONCAT('Not secured connection(s) detected of ' , ISNULL(QUOTENAME(COALESCE(ses.original_login_name, ses.nt_user_name, ses.login_name)), 'an unknown login') , ' from ', ISNULL(QUOTENAME(client_net_address), 'an unknown address') , ' ', QUOTENAME(ISNULL(ses.host_name, 'unknown host'), '(') , ', ', ISNULL(QUOTENAME(ses.program_name), 'unknown program') , ', to ', ISNULL(QUOTENAME(DB_NAME(ses.database_id)), 'an unknown database') , ', Session(s): ', COUNT(ses.session_id) ), COUNT(con.connection_id) AS NumberOfConnections FROM sys.dm_exec_connections AS con LEFT JOIN sys.dm_exec_sessions AS ses ON ses.session_id IN (con.session_id, con.most_recent_session_id) WHERE encrypt_option = 'FALSE' AND net_transport = 'TCP' AND client_net_address NOT LIKE '<%' GROUP BY COALESCE(ses.original_login_name, ses.nt_user_name, ses.login_name) , client_net_address, ses.host_name, ses.program_name, ses.database_id
後來,我開始收到此查詢產生的警報,輸出如下所示:
Not secured connection(s) detected of an unknown login from [x.x.x.x] (unknown host), unknown program, to an unknown database: 0
(
x.x.x.x
替換來自我們客戶網路之一的實際 IP 地址)這意味著我們正在檢測
sys.dm_exec_connections
沒有相應會話 (in ) 的 TCP 連接 (insys.dm_exec_sessions
)。根據我在 Microsoft 文件中發現的內容,這些場景可能會作為可用性組、數據庫鏡像或服務代理架構的一部分發生……但我們沒有在我們的實例中使用任何這些!
這不應該發生……有誰知道如何解釋這一點?這可能是由於某種埠掃描器而發生的嗎?
謝謝!
版本詳情:
Microsoft SQL Server 2019 [Enterprise] (RTM-CU4) (KB4548597) - 15.0.4033.1 (X64) Mar 14 2020 16:10:35 Copyright (C) 2019 Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor)
我假設您在啟用強制加密選項後重新啟動了 SQL Server。
除了您在問題中提到的原因之外,如果您在客戶端連接過程中執行查詢,您可能會看到沒有關聯會話的連接。將在建立物理連接後立即
encrypt_option
顯示,但在客戶端發送TDS消息作為握手過程的一部分後更改。登錄過程完成後將創建會話。FALSE``TRUE
PRELOGIN
您可以通過使用內部聯接而不是外部聯接來過濾監視查詢中正在進行的登錄噪音,
sys.dm_exec_sessions
或者添加AND con.protocol_version > 0
.