Proteção Estendida do Windows <extendedProtection>
Visão geral
O elemento <extendedProtection>
especifica as definições que configuram a proteção estendida para autenticação do Windows no IIS 7.5.
A proteção estendida aprimora a funcionalidade existente de autenticação do Windows para mitigar ataques de retransmissão de autenticação ou ataques intermediários. Essa mitigação é realizada usando informações de segurança que são implementadas por dois mecanismos de segurança:
- Informações de associação de canal especificadas por meio de um CBT (Token de Associação de Canal), que é usado principalmente para conexões SSL.
- Informações de associação de serviço especificadas por um SPN (Nome do Princípio do Serviço), que é usado principalmente para conexões que não usam SSL ou quando uma conexão é estabelecida por meio de um cenário que fornece descarregamento de SSL, como um servidor proxy ou balanceador de carga.
O elemento <extendedProtection>
pode conter uma coleção de elementos <spn>
. Cada um deles contém um SPN exclusivo para as informações de associação de serviço. Cada SPN representa um ponto de extremidade exclusivo no caminho da conexão, que pode ser um FQDN (Nome de Domínio Totalmente Qualificado) ou um nome NetBIOS do servidor de destino ou um servidor proxy. Por exemplo, se um cliente estiver se conectando a um servidor de destino por meio de um servidor proxy, a coleção SPN no servidor de destino precisará conter o SPN para o servidor proxy. Cada SPN na coleção deve ser prefixado com "HTTP", portanto, o SPN resultante de "www.contoso.com" seria "HTTP/www.contoso.com".
Há dois atributos do elemento <extendedProtection>
que configuram a associação de canal e o comportamento adicional para a proteção estendida do IIS:
O atributo tokenChecking configura o comportamento para verificar se há tokens de associação de canal. Os valores possíveis para esse atributo são:
Nome Descrição None
Esse valor especifica que o IIS não executará a verificação de token de associação de canal. Essa configuração emula o comportamento que existia antes da proteção estendida.
O valor numérico é0
.Allow
Esse valor especifica que a verificação de token de associação de canal está habilitada, mas não é necessária. Essa configuração permite uma comunicação segura com clientes que dão suporte à proteção estendida, mas ainda dá suporte a clientes que não são capazes de usar a proteção estendida.
O valor numérico é1
.Require
Esse valor especifica que a verificação de token de associação de canal é necessária. Essa configuração não fornece suporte para clientes que não dão suporte à proteção estendida.
O valor numérico é2
.O atributo sinalizadores configura um comportamento adicional para proteção estendida. Os possíveis sinalizadores são:
Nome Descrição None
Esse sinalizador especifica que nenhum comportamento adicional está habilitado para proteção estendida. (Por exemplo, nenhum servidor proxy está sendo usado e a verificação de SPN está habilitada e requer FQDNs.)
O valor numérico é0
.Proxy
Esse sinalizador especifica que parte do caminho de comunicação será por meio de um proxy ou que o cliente está se conectando diretamente ao servidor de destino por HTTP.
O valor numérico é1
.NoServiceNameCheck
Esse sinalizador especifica que a verificação de SPN está desabilitada; esse sinalizador não deve ser usado em cenários em que apenas SPNs estão sendo verificados.
O valor numérico é2
.AllowDotlessSpn
Esse sinalizador especifica que os SPNs não são necessários para serem FQDNs. A definição desse sinalizador permite SPNs baseados em NetBIOS. Observação: a definição desse sinalizador não é um cenário seguro: nomes não baseados em FQDN são vulneráveis a ataques de envenenamento por resolução de nomes.
O valor numérico é4
.ProxyCohosting
Esse sinalizador especifica que todo o caminho de comunicação de cliente para servidor usará somente HTTP; nenhuma parte do caminho de comunicação usará SSL e a verificação de SPN será usada. Observação: ao especificar esse sinalizador, você também deve especificar o sinalizador Proxy
.
O valor numérico é32
.
Cenários de proteção estendida
Considere o exemplo de cenário seguinte:
- Em cada um dos cenários a seguir, você também pode especificar o sinalizador
AllowDotlessSpn
se o ambiente de rede der suporte a SPNs baseados em NetBIOS; no entanto, os SPNs baseados em NetBIOS não são seguros. - Para cada um dos cenários a seguir em que a verificação de SPN será usada e a verificação de token de associação de canal não será usada, você não deve especificar o sinalizador
NoServiceNameCheck
.
Cenário | Sinalizadores | Descrição |
---|---|---|
O cliente se conecta diretamente ao servidor de destino usando HTTP | Proxy , ProxyCohosting |
A verificação de SPN será usada e a verificação de token de associação de canal não será usada. |
O cliente se conecta diretamente ao servidor de destino usando SSL | None |
A verificação de token de associação de canal é usada e a verificação de SPN não é usada. |
O cliente se conecta ao servidor de destino por meio de um servidor proxy usando HTTP para todo o caminho | Proxy , ProxyCohosting |
A verificação de SPN será usada e a verificação de token de associação de canal não será usada. |
O cliente se conecta ao servidor de destino por meio de um servidor proxy usando SSL para todo o caminho | Proxy |
A verificação de SPN será usada e a verificação de token de associação de canal não será usada. |
O cliente se conecta ao servidor proxy usando SSL e o servidor proxy conecta-se ao servidor de destino usando HTTP (SSL de descarregamento) | Proxy |
A verificação de SPN será usada e a verificação de token de associação de canal não será usada. |
Informações Adicionais
Mais informações sobre a Proteção Estendida estão disponíveis no seguinte tópico:
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | O elemento <extendedProtection> não foi modificado no IIS 10.0. |
IIS 8.5 | O elemento <extendedProtection> não foi modificado no IIS 8.5. |
IIS 8.0 | O elemento <extendedProtection> não foi modificado no IIS 8.0. |
IIS 7.5 | O elemento <extendedProtection> foi introduzido no IIS 7.5. |
IIS 7.0 | N/D |
IIS 6,0 | N/D |
Instalação
A instalação padrão do IIS 7 e posterior não inclui o serviço de função de autenticação do Windows. Para usar a autenticação do Windows no IIS, você deve instalar o serviço de função, desabilitar a autenticação anônima para seu site ou aplicativo e habilitar a autenticação do Windows para o site ou aplicativo.
Observação
Depois de instalar o serviço de função, o IIS 7 confirma as seguintes definições de configuração para o arquivo ApplicationHost.config.
<windowsAuthentication enabled="false" />
Windows Server 2012 R2 ou Windows Server 2012
- Na barra de tarefas, clique em Gerenciador do Servidor.
- No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
- No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
- Na página Funções de Servidor, expanda Servidor Web (IIS), Servidor Web, expanda Segurança e selecione Autenticação do Windows. Clique em Avançar.
. - Na página Selecionar recursos, clique em Avançar.
- Na página Confirmar seleções de instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.1
- Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
- Expanda Serviços de Informações da Internet, expanda Serviços da World Wide Web, expanda Segurança e, em seguida, selecione Autenticação do Windows.
- Clique em OK.
- Clique em Fechar.
Windows Server 2008 R2 ou Windows Server 2008
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
- No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
- No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
- Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, selecione Autenticação do Windows e clique em Avançar.
- Na página Confirmar Seleções de Instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows Vista ou Windows 7
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
- Expanda Serviços de Informações da Internet e, em seguida, Serviços World Wide Web e, em seguida, Segurança.
- Selecione Autenticação do Windows e clique em OK.
Instruções
Como habilitar a proteção estendida para autenticação do Windows
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, expanda o nome do servidor, expanda Sites e, em seguida, o site, aplicativo ou serviço Web para o qual você deseja habilitar a Proteção Estendida para autenticação do Windows.
Role até a seção Segurança no painel Página Inicial e clique duas vezes em Autenticação.
No painel Autenticação, selecione Autenticação do Windows.
Clique em Configurações Avançadas no painel Ações.
Quando a caixa de diálogo Configurações Avançadas for exibida, selecione uma das seguintes opções no menu suspenso Proteção Estendida:
Clique em OK para fechar a caixa de diálogo Configurações Avançadas.
Configuração
O elemento <extendedProtection>
é configurável no nível do site, aplicativo ou diretório virtual no arquivo ApplicationHost.config.
Atributos
Atributo | Descrição | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
flags |
Atributo de sinalizadores opcionais. Especifica as configurações de comportamento adicionais para proteção estendida. O atributo flags pode ser uma combinação dos valores a seguir; o valor padrão é None .
|
||||||||||||
tokenChecking |
Atributo de enumeração opcional. Especifica o comportamento para verificar informações de associação de canal. O atributo tokenChecking pode ser um dos valores a seguir; o valor padrão é None .
|
Elementos filho
Elemento | Descrição |
---|---|
spn |
Adiciona um SPN à coleção. |
clearSpns |
Limpa a coleção de SPNs. |
removeSpn |
Remove um SPN da coleção. |
Exemplo de configuração
O exemplo a seguir exibe um elemento <extendedProtection>
que demonstra a habilitação da autenticação do Windows com proteção estendida para o Site Padrão e adiciona duas entradas SPN à coleção de SPNs.
<location path="Default Web Site">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true">
<extendedProtection tokenChecking="Allow" flags="None">
<spn name="HTTP/www.contoso.com" />
<spn name="HTTP/contoso.com" />
</extendedProtection>
</windowsAuthentication>
</authentication>
</security>
</system.webServer>
</location>
Exemplo de código
Os exemplos a seguir demonstram a configuração da autenticação do Windows com proteção estendida para o Site Padrão e adiciona duas entradas SPN à coleção de SPNs.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /extendedProtection.tokenChecking:"Allow" /extendedProtection.flags:"None" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/www.contoso.com']" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/contoso.com']" /commit:apphost
Observação
Defina o parâmetro commit para apphost
quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo ApplicationHost.config.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site");
windowsAuthenticationSection["enabled"] = true;
ConfigurationElement extendedProtectionElement = windowsAuthenticationSection.GetChildElement("extendedProtection");
extendedProtectionElement["tokenChecking"] = @"Allow";
extendedProtectionElement["flags"] = @"None";
ConfigurationElementCollection extendedProtectionCollection = extendedProtectionElement.GetCollection();
ConfigurationElement spnElement = extendedProtectionCollection.CreateElement("spn");
spnElement["name"] = @"HTTP/www.contoso.com";
extendedProtectionCollection.Add(spnElement);
ConfigurationElement spnElement1 = extendedProtectionCollection.CreateElement("spn");
spnElement1["name"] = @"HTTP/contoso.com";
extendedProtectionCollection.Add(spnElement1);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site")
windowsAuthenticationSection("enabled") = True
Dim extendedProtectionElement As ConfigurationElement = windowsAuthenticationSection.GetChildElement("extendedProtection")
extendedProtectionElement("tokenChecking") = "Allow"
extendedProtectionElement("flags") = "None"
Dim extendedProtectionCollection As ConfigurationElementCollection = extendedProtectionElement.GetCollection
Dim spnElement As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
spnElement("name") = "HTTP/www.contoso.com"
extendedProtectionCollection.Add(spnElement)
Dim spnElement1 As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
spnElement1("name") = "HTTP/contoso.com"
extendedProtectionCollection.Add(spnElement1)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site");
windowsAuthenticationSection.Properties.Item("enabled").Value = true;
var extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection");
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow";
extendedProtectionElement.Properties.Item("flags").Value = "None";
var extendedProtectionCollection = extendedProtectionElement.Collection;
var spnElement = extendedProtectionCollection.CreateNewElement("spn");
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com";
extendedProtectionCollection.AddElement(spnElement);
var spnElement1 = extendedProtectionCollection.CreateNewElement("spn");
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com";
extendedProtectionCollection.AddElement(spnElement1);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site")
windowsAuthenticationSection.Properties.Item("enabled").Value = True
Set extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection")
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow"
extendedProtectionElement.Properties.Item("flags").Value = "None"
Set extendedProtectionCollection = extendedProtectionElement.Collection
Set spnElement = extendedProtectionCollection.CreateNewElement("spn")
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com"
extendedProtectionCollection.AddElement(spnElement)
Set spnElement1 = extendedProtectionCollection.CreateNewElement("spn")
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com"
extendedProtectionCollection.AddElement(spnElement1)
adminManager.CommitChanges()