我使用自签名证书启用了启用了强制加密的 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 连接 (in sys.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
.