Etapa de configuração 4: configurar a segurança do aplicativo
por Keith Newman e Robert McMurray
Nesta fase de criação do site ASP.NET, você define as configurações de segurança que estão disponíveis no IIS. As seções a seguir apresentam as configurações de segurança comuns para aplicativos ASP.NET:
4.1. Isolar aplicativos Web
Implemente as recomendações a seguir para isolar sites e aplicativos Web no seu servidor.
- Use um pool de aplicativos por site ou aplicativo Web.
- Limitar o acesso às pastas e arquivos do site para a identidade do pool de aplicativos.
- Configure uma pasta temporária do ASP.NET, separado por site e dê acesso somente à identidade de pool de aplicativos.
- Certifique-se de definir uma ACL (lista de controle de acesso) em cada raiz do site para permitir o acesso somente para a identidade do pool de aplicativos.
Se você tiver mais de um aplicativo por pool de aplicativos, considere criar suficiente pools de aplicativos e mover alguns dos aplicativos para novos pools.
Etapas para criar um pool de aplicativos
- Abra o Gerenciador do IIS.
- No painel Conexões, selecione Pools de aplicativos.
- No painel Ações, selecione Adicionar pool de aplicativo.
- Na caixa Nome, digite um nome exclusivo para o pool de aplicativos.
- Selecione Versão do .NET Framework e Modo de Pipeline Gerenciado.
- Clique em OK.
Para mover um aplicativo para outro pool de aplicativos
- Abra o Gerenciador do IIS.
- Na página Conexões, selecione o site ou aplicativo Web que deseja mover.
- No painel Ações, clique em Configurações básicas.
- Na caixa de diálogo Editar Site, clique em Selecionar para abrir a caixa de diálogo Selecionar pool de aplicativos e, em seguida, selecione o pool de aplicativos no menu Pool de aplicativos.
- Clique em OK para fechar a caixa de diálogo Selecionar pool de aplicativos e clique em OK para fechar o menu Editar Site.
Para adicionar uma identidade de pool de aplicativos a uma pasta ou arquivo ACL
- Abra o Windows Explorer e navegue até a pasta ou arquivo.
- Clique com o botão direito do mouse na pasta ou arquivo e, em seguida, clique em Propriedades.
- Clique na guia Segurança e, em seguida, clique em Editar.
- Clique em Adicionar, clique em Locais e selecione o servidor como o local de pesquisa.
- Na caixa Digite os nomes de objeto a selecionar digite IIS APPPOOL\applicationPoolName, onde applicationPoolName é a identidade do pool de aplicativos.
- Clique em OK, clique em OK, e clique em OK novamente para fechar as caixas de diálogo.
4.2. Níveis de confiança do .NET
Esta seção descreve como definir o nível de confiança do aplicativo usando a interface do usuário do Gerenciador do IIS ou a linha de comando.
Definir um nível de confiança usando a interface do usuário
- Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado.
- Em Exibição de Recursos, clique duas vezes em Níveis de Confiança do .NET.
- Na página Níveis de Confiança do .NET, selecione um nível de confiança na lista suspensa Nível de confiança e selecione Aplicar no painel Ações.
Definir um nível de confiança usando a linha de comando
Para definir um nível de confiança, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:trust /level:Full|High|Medium|Low|Minimal
O atributo de nível usa um dos cinco valores que correspondem aos arquivos de política de CAS pré-configurados. Por exemplo, para definir um nível de confiança Full
, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:trust /level:Full
Observação
Ao usa Appcmd.exe para configurar o elemento confiável no nível global no IIS 8, especifique /commit:WEBROOT
no comando, para que as alterações de configuração sejam feitas para o arquivo Web.config raiz, em vez de ApplicationHost.config.
4.3. Autenticação do .NET
No Planejar um site da Web do ASP.NET no IIS, você tomou decisões de design sobre qual modo de autenticação foi correto para o seu aplicativo.
Autenticação de Formulários do ASP.NET
Esta seção descreve como configurar a autenticação de formulários do ASP.NET usando a interface do usuário do Gerenciador do IIS ou a linha de comando.
Para configurar a Autenticação de Formulários usando a interface do usuário
- Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado.
- Em Exibição de Recursos, clique duas vezes em Autenticação.
- Na página Autenticação, selecione Autenticação de Formulários.
- No painel Ações, selecione Habilitar para usar a Autenticação de Formulários com as configurações padrão.
- No painel Ações, selecione Editar.
- Na caixa de diálogo Editar Configurações de Autenticação de Formulários, na caixa de texto URL de logon, digite o nome da página onde os clientes efetuam logon.
- Na caixa de texto Tempo limite do cookie de autenticação (em minutos), digite o número de minutos a ser usado para o valor de tempo limite.
- A partir da lista Modo, selecione o modo de cookie a ser usado.
- Na caixa de texto Nome, digite o nome do cookie.
- A partir da lista Modo de proteção, selecione o modo Proteção a ser usada.
- Marque a caixa de seleção Exigir o SSL.
- Marque a caixa de seleção Estender expiração do cookie em cada solicitação e selecione OK.
Para configurar a Autenticação de Formulários usando a linha de comando
Para habilitar a Autenticação de Formulários, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:system.web/authentication /mode:None|Windows|Passport|Forms
Por padrão, o IIS 8 define o atributo mode
como Windows
, o que desabilita a Autenticação de Formulários. Caso defina o atributo para Forms
, você habilitará a Autenticação de Formulários. Por exemplo, para habilitar a Autenticação de Formulários, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:system.web/authentication /mode:Forms
Observação
Ao usar appcmd para configurar o elemento de autenticação no nível global no IIS 8, especifique /commit:WEBROOT
no comando para que as alterações de configuração sejam feitas para o arquivo Web.config raiz, em vez de ApplicationHost.config.
Para especificar a URL de login para a Autenticação de Formulários, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.loginURL:string
A variável forms.loginURL:string
é o nome da página em que os clientes são logon. O valor padrão é Login.aspx. Por exemplo, para especificar a URL do login para a Autenticação de Formulários, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.loginURL:login.aspx
Observação
Ao usar appcmd para configurar o elemento de autenticação no nível global no IIS 8, especifique /commit:WEBROOT
no comando para que as alterações de configuração sejam feitas para o arquivo Web.config raiz, em vez de ApplicationHost.config.
Para especificar o tempo limite de autenticação para a Autenticação de Formulários, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.timeout:TimeSpan
A variável forms.timeout:TimeSpan
é o tempo em minutos em que o cookie usado para autenticação expira. O valor padrão é de 30 minutos. Por exemplo, para especificar o tempo limite de autenticação para a Autenticação de Formulários, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.timeout:30
Observação
Ao usar appcmd para configurar o elemento de autenticação no nível global no IIS 8, você deverá especificar /commit:WEBROOT
no comando para que as alterações de configuração sejam feitas para o arquivo Web.config raiz, em vez de ApplicationHost.config.
Para configurar o nome do cookie para a Autenticação de Formulários, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.name:string
A variável forms.name:string
é o nome do cookie usado para Autenticação de Formulários. O valor padrão é .ASPXAUTH. Por exemplo, para configurar o nome do cookie para a Autenticação de Formulários, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.name:.ASPXUTH
Para configurar o modo de cookie para a Autenticação de Formulários, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.cookieless:UseUri|UseCookies|AutoDetect|UseDeviceProfile
O valor padrão para forms.cookieless
é UseDeviceProfile
. Por exemplo, para configurar o modo de cookie para a Autenticação de Formulários para usar a configuração Usar Perfil do Dispositivo, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.cookieless:UseDeviceProfile
Para configurar o modo de proteção de cookie para a Autenticação de Formulários, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.protection:All|None|Encryption|Validation
O valor padrão para forms.protection
é All
. Por exemplo, para configurar o modo de proteção de cookie para a Autenticação de Formulários para usar a configuração de Criptografia e Validação, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.protection:All
Para exigir o SSL para um cookie de autenticação, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.requireSSL:true|false
O valor padrão para forms.requireSSL
é false
. Caso defina esse atributo como true
, você exigirá o SSL. Por exemplo, para exigir o SSL para um cookie de autenticação, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.requireSSL:true
Para armazenar em cache o conteúdo solicitado frequentemente, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.slidingExpiration:true|false
O valor padrão para forms.slidingExpiration
é true
. Por exemplo, para armazenar em cache o conteúdo solicitado frequentemente, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.slidingExpiration:true
Autenticação da representação do ASP.NET
Para configurar a Autenticação de Representação usando a interface do usuário
- Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado.
- Em Exibição de Recursos, clique duas vezes em Autenticação.
- Na página Autenticação, selecione Representação do ASP.NET.
- No painel Ações, selecione Habilitar para usar a autenticação de Representação do ASP.NET, com as configurações padrão.
- Opcionalmente, no painel Ações, selecione Editar, para definir a entidade de segurança.
- Na caixa de diálogo Editar Configurações de Representação do ASP.NET, selecione Usuário Autenticado ou Usuário Específico. Seja lá o que você decidir, o IIS usa essa identidade para o contexto de segurança do aplicativo ASP.NET. Por padrão, o IIS 8 é definido para representar o usuário autenticado.
- Selecione OK para concluir ou prosseguir para as próximas etapas opcionais, para alterar a identidade para representar.
- Opcionalmente, selecione Definir para alterar a identidade do Usuário específico.
- Na caixa de diálogo Definir Credenciais, digite o nome de uma conta de usuário existente em Nome de usuário, a senha associada a essa conta de usuário em Senha e, em seguida, o mesmo valor exato em Confirmar senha,para uma nova conta que o IIS deve usar para acesso anônimo.
- Selecione OK para fechar a caixa de diálogo Definir Credenciais.
- Selecione OK para fechar a caixa de diálogo Editar Configurações de Representação do ASP.NET.
Para configurar a Autenticação de Representação usando a linha de comando
Para habilitar ou desabilitar a Representação do ASP.NET, use a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:identity /impersonate:true|false
Por padrão, o IIS define o atributo impersonate
como false
, o que desabilita a Autenticação de Representação do ASP.NET. Caso defina o atributo como true
, você habilitará a Autenticação de Representação do ASP.NET. Por exemplo, para habilitar a Autenticação de Representação do ASP.NET, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:identity /impersonate:true
Opcionalmente, defina a conta para representar o IIS usando a seguinte sintaxe:
appcmd set config /commit:WEBROOT /section:identity /userName:string /password:string
A variável userName:string
é a conta que o IIS usa para representar e a variável password:string
é a senha. Por exemplo, para usar uma conta chamada Moe para representar o IIS, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /commit:WEBROOT /section:identity /userName: Moe /password:pass@word1
Observação
Ao usar Appcmd.exe para configurar o elemento de identidade no nível global no IIS 8, especifique /commit:WEBROOT
no comando para que as alterações de configuração sejam feitas para o arquivo Web.config raiz, em vez de ApplicationHost.config.
4.4. Configurações de chave do computador
Esta seção descreve como gerar chaves do computador para o seu aplicativo ASP.NET usando a interface do usuário do Gerenciador do IIS.
Para gerar chaves do computador usando a interface do usuário
- Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado.
- Em Execução de Recursos, clique duas vezes em Chave do Computador.
- Na página de Chave do Computador, selecione um método de validação da lista Método de validação. O método de validação padrão é SHA1.
- Escolher um método de criptografia da listaMétodo de criptografia. O método de criptografia padrão é Automático.
- Opcionalmente, defina as configurações para validação e chaves de descriptografia.
- No painel Ações, selecione Gerar chaves e selecione Aplicar.
4.5. Comunicação TLS/SSL
Esta seção descreve como configurar a segurança TLS/SSL para seu aplicativo.
Após obter um certificado de servidor de uma CA (autoridade de certificação), trabalhe com os procedimentos descritos nas seções a seguir:
Associação de SSL
Esta seção descreve como adicionar uma associação de SSL ao site usando a interface do usuário do Gerenciador do IIS ou a linha de comando.
Para adicionar uma associação de SSL a um site usando a interface do usuário
- Abra o Gerenciador do IIS.
- No painel Conexões, expanda o nó Sites na árvore e, em seguida, selecione para escolher o site ao qual você deseja adicionar uma associação.
- No painel Ações, clique em Associações.
- Na caixa de diálogo Ligações do Site , clique em Adicionar.
- Na caixa de diálogo Adicionar Associação do Site, na lista Tipo, selecione https.
- A partir da lista de Endereços IP, selecione odos os Não Atribuído (a menos que haja um endereço IP específico a ser usado).
- Na caixa Porta, digite o número da porta (o padrão é 443).
- Na caixa Nome de Host, digite o nome do computador host.
- Se quiser que vários sites seguros sejam servidos usando o mesmo endereço IP, marque a caixa de seleção Exigir a Indicação de Nome de Servidor.
- Na lista Certificado do SSL, selecione o certificado para o seu site. Se seu certificado não estiver na lista, clique em Selecionar e pesquise o certificado usando a caixa de diálogo Selecionar Certificado.
- Clique em OK.
Para adicionar uma associação de SSL a um site usando a linha de comando
Para adicionar uma associação a um site, use a seguinte sintaxe:
appcmd set site /site.name:string /+bindings.[protocol='string', bindingInformation='string']
A variável site.name:string
é o nome do site ao qual você deseja adicionar uma associação. A variável protocol='string'
é o protocolo a ser usado e a variável bindingInformation='string'
é a combinação de endereço IP, porta e cabeçalho de host.
Por exemplo, para configurar um site chamado contoso para ter uma associação HTTPS para todos os endereços IP, na porta 443, sem um cabeçalho de host, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set site /site.name:contoso /+bindings.[protocol='https', bindingInformation='*:443:']
Exigir o SSL para o Site
Esta seção descreve como Exigir o SSL para seu site usando a interface do usuário do Gerenciador do IIS ou a linha de comando.
Para exigir o SSL usando a interface do usuário
Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado. Verifique se você está no site, aplicativo ou nível de diretório; as Configurações de SSL não estão disponíveis no nível do servidor.
Observação
Caso queira configurar o SSL no nível de arquivo, navegue até o arquivo em Exibição de conteúdo e, em seguida, selecione Alternar para Exibição de Recursos no painel Ações.
Em Exibição de Recursos, clique duas vezes em Configurações de SSL.
Na página Configurações de SSL, selecione Exigir o SSL.
No painel Ações, clique em Aplicar.
Para exigir o SSL usando a linha de comando
Para exigir o SSL, use a seguinte sintaxe:
appcmd set config "site|URL" /section:access /sslFlags:Ssl /commit:APPHOST
A variável site|URL
será o site, aplicativo, diretório virtual ou o arquivo onde você deseja que o IIS 8 exija o SSL. Por exemplo, para exigir o SSL para o Site Padrão, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config "Default Web Site" /section:access /sslFlags:Ssl /commit:APPHOST
Para exigir o SSL para o arquivo iisstart.htm no Site Padrão, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config "http://localhost/iisstart.htm" /section:access /sslFlags:Ssl /commit:APPHOST
Certificados do cliente
Especificar os certificados de cliente usando a interface do usuário
Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado. Verifique se você está no site, aplicativo ou nível de diretório; as Configurações de SSL não estão disponíveis no nível do servidor.
Observação
Caso queira configurar o SSL no nível de arquivo, navegue até o arquivo em Exibição de conteúdo e, em seguida, selecione Alternar para Exibição de Recursos no painel Ações.
Em Exibição de Recursos, clique duas vezes em Configurações de SSL.
Na página Configurações de SSL, selecione opcionalmente Exigir o SSL. Não necessário o SSL para Ignorar ou Aceitar certificados de cliente.
Na página Configurações de SSL, na área de Certificados de cliente, use um dos seguintes procedimentos:
- Selecione Ignorar caso não queira aceitar um certificado de cliente mesmo que um cliente apresente um.
- Selecione Aceitar para aceitar certificados de cliente.
- Selecione Exigir para exigir certificados de cliente. Para usar o Exigir certificados de cliente, habilite o Exigir o SSL.
No painel Ações, clique em Aplicar.
Para especificar os certificados de cliente usando a linha de comando
Para especificar se deseja usar certificados de cliente, use a seguinte sintaxe:
appcmd set config "site|URL" /section:access /sslFlags:Ssl|SslNegotiateCert|SslRequireCert /commit:APPHOST
A variável site|URL
será o site, aplicativo, diretório virtual ou arquivo onde você deseja que o IIS habilite certificados de cliente. Por exemplo, para aceitar os certificados de cliente para o Site Padrão, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config "Default Web Site" /section:access /sslFlags:SslNegotiateCert /commit:APPHOST
Para aceitar certificados de cliente para o arquivo iisstart.htm no Site Padrão, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config "http://localhost/iisstart.htm" /section:access /sslFlags:SslNegotiateCert /commit:APPHOST
Especifique um ou mais dos valores para o atributo sslFlags. Caso queira mais de um valor, separe cada valor com uma vírgula (,). Por exemplo, para especificar um requisito para SSL e certificados de cliente no Site Padrão, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config "Default Web Site" /section:access /sslFlags:Ssl,SslRequireCert /commit:APPHOST