Temos SSL ativado em nossos servidores SQL e nossa ferramenta de monitoramento está alertando que existem conexões não criptografadas.
A verificação que monitora isso é executada a cada minuto e usa a seguinte consulta para verificar:
SELECT COUNT(*)
FROM sys.dm_exec_connections
WHERE encrypt_option <> 'TRUE'
Fiz uma investigação mais aprofundada, configurando um trabalho de agente para despejar os resultados da seguinte consulta em uma tabela (o trabalho é executado a cada minuto)
SELECT c.*,
r.status,
r.command,
r.last_wait_type,
s.host_name,
s.program_name,
s.client_interface_name,
s.login_name,
s.database_id,
qs.text
FROM sys.dm_exec_connections c
LEFT JOIN sys.dm_exec_requests r
ON c.connection_id = r.connection_id
LEFT JOIN sys.dm_exec_sessions s
ON c.session_id = s.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) qs
WHERE encrypt_option <> 'TRUE'
Se eu selecionar na minha tabela, vejo alguns resultados (espalhados em três capturas de tela devido ao amplo conjunto de resultados):
Para mim, sys.dm_exec_connections
não dá muito para continuar aqui. A única coisa que parece particular a essas conexões é que elas são todas endpoint 2 ( TSQL Local Machine
) e têm um auth_schema de(unknown)
Posso excluí-los do monitoramento com base nisso, mas gostaria de ter certeza de que são benignos antes de fazer isso.
Quais são essas conexões? Por que eles não são criptografados quando o SSL está ativado? Existe alguma informação adicional que eu poderia olhar para entendê-los melhor?
A DMV sys.dm_exec_connections retorna todas as conexões atualmente estabelecidas, enquanto sys.dm_exec_sessions retorna uma linha por sessão autenticada. A implicação é que uma linha
sys.dm_exec_connections
pode existir sem uma linha correspondentesys.dm_exec_sessions
até que uma conexão recém-estabelecida conclua o processo inicial de handshake e autenticação. Normalmente, essa é uma condição de curta duração em uma instância íntegra.Considere alterar a
sys.dm_exec_sessions
associação para umINNER JOIN
para que apenas as sessões autenticadas sejam retornadas. Eles devem aparecerencrypt_option = 'TRUE'
porque o handshake TLS será concluído após a autenticação.