Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se:SQL Server
A Proteção Estendida ajuda a evitar ataques de retransmissão de autenticação, garantindo que o cliente conheça o serviço ao qual se conecta.
A Proteção Estendida é um recurso dos componentes de rede implementados pelo sistema operacional. A Proteção Estendida tem suporte no Windows.
SQL Server é mais seguro quando as conexões são feitas usando a Proteção Estendida.
Lista de verificação de requisitos
Para que a Proteção Estendida seja eficaz, todas as seguintes condições devem ser atendidas:
- Use um driver de cliente que ofereça suporte à vinculação de canal.
- Habilite a criptografia TLS na conexão para que o cliente possa produzir um CBT (token de associação de canal).
- Conecte-se com o SPN (Nome da Entidade de Serviço) correto que corresponde à instância de SQL Server.
- Use a autenticação do Windows (NTLM ou Kerberos). A Proteção Estendida não se aplica à autenticação SQL.
- Habilite a Proteção Estendida na instância de SQL Server (definida como Permitida ou Necessária).
Note
Para obter um exemplo de um cadeia de conexão em C# que dá suporte à Proteção Estendida, consulte Exemplo cadeia de conexão.
Descrição da Proteção Estendida
A Proteção Estendida usa associação de serviço e associação de canal para ajudar a evitar um ataque de retransmissão de autenticação. Em um ataque de retransmissão de autenticação, um cliente que pode executar a autenticação NTLM (por exemplo, Windows Explorer, Outlook, um aplicativo .NET SqlClient e outros), conecta-se a um invasor (por exemplo, um servidor de arquivos CIFS mal-intencionado). O invasor usa as credenciais do cliente para se disfarçar de cliente e autenticar em um serviço (por exemplo, uma instância do Mecanismo de Banco de Dados).
Existem duas variações desse ataque:
Em um ataque de atração, o cliente se conecta voluntariamente ao invasor.
Em um ataque de falsificação, o cliente pretende se conectar a um serviço válido, mas não sabe que um ou tanto o DNS quanto o roteamento IP são envenenados para redirecionar a conexão ao invasor.
O SQL Server oferece suporte a vinculação de serviço e a vinculação de canal para ajudar a reduzir esses ataques em instâncias do SQL Server.
Vinculação de serviço
A associação de serviço combate ataques de indução ao exigir que um cliente envie um nome principal de serviço (SPN) assinado do serviço do SQL Server ao qual o cliente pretende se conectar. Como parte da resposta de autenticação, o serviço verifica se o SPN recebido no pacote corresponde a seu próprio SPN. Se um cliente for atraído para se conectar a um invasor, o cliente incluirá o SPN assinado pelo invasor. O invasor não pode retransmitir o pacote para autenticar no serviço real do SQL Server como o cliente porque ele incluiria o SPN do invasor. A associação de serviço incorre em um custo único insignificante, mas não lida com ataques de falsificação. A associação de serviço ocorre quando um aplicativo cliente não usa criptografia para se conectar ao SQL Server.
Associação de canal
Associação de canais estabelece um canal seguro (Schannel) entre um cliente e uma instância do serviço SQL Server. O serviço verifica a autenticidade do cliente comparando o CBT (token da associação de canal) do cliente específico a esse canal com seu próprio CBT. A associação de canal lida com ataques de atração e falsificação. No entanto, ele incorre em um custo de runtime maior porque requer a criptografia TLS (Transport Layer Security) de todo o tráfego de sessão. A associação de canal ocorre quando um aplicativo cliente usa criptografia para se conectar à SQL Server, independentemente de a criptografia ser imposta pelo cliente ou pelo servidor.
Aviso
SQL Server e Microsoft provedores de dados para SQL Server dão suporte a protocolos mais antigos, incluindo TLS 1.0 e SSL 3.0. Se você impor um protocolo diferente (como TLS 1.2 ou TLS 1.3) fazendo alterações na camada SChannel do sistema operacional, suas conexões com SQL Server poderão falhar. Verifique se você tem o build mais recente de SQL Server para dar suporte ao TLS 1.2 ou ao TLS 1.3. Para obter mais informações, consulte TLS 1.2 e TLS 1.3.
Suporte ao sistema operacional
Os links a seguir fornecem mais informações sobre como Windows dá suporte à Proteção Estendida:
- Autenticação Integrada do Windows com Proteção Estendida
- Segurança da Microsoft Advisory (973811), Proteção Estendida para Autenticação
Suporte de driver
Os únicos drivers que dão suporte à Proteção Estendida são baseados em Windows:
- Microsoft ODBC Driver for SQL Server (somente no Windows)
- Driver do Microsoft OLE DB para SQL Server
- System.Data.SqlClient (no .NET Framework e no Windows)
- Microsoft.Data.SqlClient (no Windows)
Configurações
Três configurações de conexão do SQL Server afetam a vinculação de serviço e a vinculação de canal. Você pode definir essas configurações usando o SQL Server Configuration Manager ou WMI. Exiba essas configurações usando a faceta de Configurações de Protocolo do Servidor do Gerenciamento Baseado em Políticas.
Forçar Criptografia
Os valores possíveis são Sim e Não. Para usar a associação de canal, defina Force Encryption como Sim e todos os clientes devem criptografar. Se a resposta for Não, somente a vinculação de serviço é garantida. Forçar Criptografia está localizada em Protocolos para Propriedades MSSQLSERVER (Guia Sinalizadores) no SQL Server Configuration Manager. A partir do SQL Server 2022 (16.x), você também pode definir Force Strict Encryption como Sim para uma proteção mais forte usando o TDS 8.0. Para obter mais informações, confira Configurar o Mecanismo de Banco de Dados do SQL Server para criptografia de conexões.
Defina Force Encryption como Sim quando usado com a Proteção Estendida.
Proteção Estendida
Os valores possíveis são Ativa, Permitidae Obrigatória. Use a variável Proteção Estendida para definir o nível de Proteção Estendida para cada instância SQL Server. Você pode encontrar a Proteção Estendida nos Protocolos para Propriedades MSSQLSERVER (Guia Avançada) em SQL Server Configuration Manager.
Defina como Desativado para desabilitar a Proteção Estendida. A instância do SQL Server aceita conexões de qualquer cliente, independentemente de o cliente ser protegido ou não. Off é compatível com sistemas operacionais mais antigos e não corrigidos, mas é menos seguro. Use essa configuração quando os sistemas operacionais cliente não dão suporte à proteção estendida.
Defina como Permitido para exigir Proteção Estendida para conexões de sistemas operacionais que dão suporte à Proteção Estendida. A Proteção Estendida é ignorada para conexões de sistemas operacionais que não dão suporte à Proteção Estendida. As conexões de aplicativos cliente desprotegidos em execução em sistemas operacionais cliente protegidos são rejeitadas. Essa configuração é mais segura do que Desativada, mas não é a mais segura. Use essa configuração em ambientes mistos. Alguns sistemas operacionais dão suporte à Proteção Estendida e outros não.
Defina como Obrigatório para aceitar apenas conexões de aplicativos protegidos em sistemas operacionais protegidos. Essa configuração é a mais segura, mas as conexões de sistemas operacionais ou aplicativos que não dão suporte à Proteção Estendida não podem se conectar a SQL Server.
Para obter mais informações sobre as configurações recomendadas, consulte Habilitar criptografia com a Proteção Estendida.
SPNs NTLM aceitos
Especifique a variável NTLM SPNs aceita quando mais de um SPN conhece um servidor. Quando um cliente tenta se conectar ao servidor usando um SPN válido que o servidor não conhece, a associação de serviço falha. Para evitar esse problema, especifique vários SPNs que representam o servidor usando os SPNs NTLM aceitos. SPNs NTLM aceitos é uma série de SPNs separados por ponto e vírgula. Por exemplo, para permitir os SPNs MSSQLSvc/ HostName1.Contoso.com e MSSQLSvc/ HostName2.Contoso.com, digite MSSQLSvc/HostName1.Contoso.com;MSSQLSvc/HostName2.Contoso.com na caixa SPNs NTLM Aceitos . Essa variável tem um tamanho máximo de 2.048 caracteres. Você pode encontrar SPNs NTLM aceitos nos protocolos para propriedades MSSQLSERVER (Guia Avançada) em SQL Server Configuration Manager.
Habilitar a Proteção Estendida para o mecanismo de banco de dados
Para usar a Proteção Estendida, o servidor e o cliente devem ter um sistema operacional compatível com a Proteção Estendida e que deve estar habilitado no sistema operacional. Para obter mais informações sobre como habilitar a Proteção Estendida para o sistema operacional, consulte Proteção Estendida para Autenticação.
Embora a Proteção Estendida e a NTLMv2 estejam habilitadas por padrão em todas as versões com suporte do Windows, a Proteção Estendida não está habilitada por padrão para conexões SQL Server. Você deve habilitá-lo manualmente no SQL Server Configuration Manager.
Para habilitar a Proteção Estendida para conexões SQL Server, os administradores devem definir as configurações no SQL Server Configuration Manager. Essa configuração inclui opções de associação de serviço e associação de canal para atenuar vários tipos de ataques de retransmissão de autenticação. Para obter instruções detalhadas, consulte a documentação do SQL Server sobre como configurar a Proteção Estendida.
Habilitar a criptografia com a Proteção Estendida
Aplica-se a: SQL Server
Para aprimorar a segurança quando você usar autenticação do Windows, defina a Proteção Estendida como Necessária e Force Encryption como Sim no SQL Server Configuration Manager.
Essas configurações fornecem a configuração mais segura para SQL Server.
Note
Em SQL Server 2022 (16.x) e versões posteriores, use Force Strict Encryption em vez de Force Encryption para habilitar uma segurança mais robusta via TDS 8.0.
Atualize as cadeias de conexão para acomodar essas alterações.
Para obter mais informações, consulte:
- Conectar-se ao mecanismo de banco de dados com a Proteção Estendida
- Configurar o Mecanismo de Banco de Dados do SQL Server para criptografia de conexões
- TDS 8.0
- Conectar-se ao SQL Server com criptografia estrita
Depois de habilitar a Proteção Estendida
Depois de habilitar a Proteção Estendida no computador do servidor, use as seguintes etapas para habilitar a Proteção Estendida:
Vá para SQL Server Configuration Manager no menu Iniciar do Windows.
Expanda Configuração de Rede do SQL Server e, então, clique com o botão direito do mouse em Protocolos para<InstanceName>. Selecione Propriedades.
Na guia Avançado , defina a Proteção Estendida como a configuração apropriada para associação de canal e associação de serviço.
Opcionalmente, quando mais de um SPN conhece um servidor, configure o campo SPNs NTLM aceito na guia Avançado , conforme descrito na seção Configurações .
Para associação de canal, na guia Sinalizadores , defina Force Encryption como Sim. Essa configuração é recomendada.
Reinicie o serviço Mecanismo de Banco de Dados.
Configurar outros componentes do SQL Server
Para obter mais informações sobre como configurar o Reporting Services, consulte Proteção estendida para autenticação com o Reporting Services.
Quando você usa o IIS para acessar dados do Analysis Services com uma conexão HTTP ou HTTPS, o Analysis Services pode aproveitar a Proteção Estendida fornecida pelo IIS. Para obter mais informações sobre como configurar o IIS para usar a Proteção Estendida, consulte Configure Extended Protection in IIS 7.5(em inglês).
Exemplo de cadeia de conexão
No exemplo de C# a seguir, o cadeia de conexão usa autenticação do Windows (Integrated Security=true). O token de associação de canal é habilitado por meio da criptografia TLS (Encrypt=true). A validação do certificado é aplicada com TrustServerCertificate=false. Embora não seja necessário, HostNameInCertificate é recomendado e incluído neste exemplo.
using (var conn = new SqlConnection(
"Server=sql01.contoso.com;" +
"Database=AdventureWorks2025;" +
"Integrated Security=true;" +
"Encrypt=true;" +
"TrustServerCertificate=false;" +
"HostNameInCertificate=sql01.contoso.com;"))
{
conn.Open();
}