Compartilhar via


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

  1. Abra o Gerenciador do IIS.
  2. No painel Conexões, selecione Pools de aplicativos.
  3. No painel Ações, selecione Adicionar pool de aplicativo.
  4. Na caixa Nome, digite um nome exclusivo para o pool de aplicativos.
  5. Selecione Versão do .NET Framework e Modo de Pipeline Gerenciado.
  6. Clique em OK.

Para mover um aplicativo para outro pool de aplicativos

  1. Abra o Gerenciador do IIS.
  2. Na página Conexões, selecione o site ou aplicativo Web que deseja mover.
  3. No painel Ações, clique em Configurações básicas.
  4. 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.
  5. 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

  1. Abra o Windows Explorer e navegue até a pasta ou arquivo.
  2. Clique com o botão direito do mouse na pasta ou arquivo e, em seguida, clique em Propriedades.
  3. Clique na guia Segurança e, em seguida, clique em Editar.
  4. Clique em Adicionar, clique em Locais e selecione o servidor como o local de pesquisa.
  5. Na caixa Digite os nomes de objeto a selecionar digite IIS APPPOOL\applicationPoolName, onde applicationPoolName é a identidade do pool de aplicativos.
  6. 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

  1. Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado.
  2. Em Exibição de Recursos, clique duas vezes em Níveis de Confiança do .NET.
  3. 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

  1. Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado.
  2. Em Exibição de Recursos, clique duas vezes em Autenticação.
  3. Na página Autenticação, selecione Autenticação de Formulários.
  4. No painel Ações, selecione Habilitar para usar a Autenticação de Formulários com as configurações padrão.
  5. No painel Ações, selecione Editar.
  6. 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.
  7. 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.
  8. A partir da lista Modo, selecione o modo de cookie a ser usado.
  9. Na caixa de texto Nome, digite o nome do cookie.
  10. A partir da lista Modo de proteção, selecione o modo Proteção a ser usada.
  11. Marque a caixa de seleção Exigir o SSL.
  12. 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

  1. Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado.
  2. Em Exibição de Recursos, clique duas vezes em Autenticação.
  3. Na página Autenticação, selecione Representação do ASP.NET.
  4. No painel Ações, selecione Habilitar para usar a autenticação de Representação do ASP.NET, com as configurações padrão.
  5. Opcionalmente, no painel Ações, selecione Editar, para definir a entidade de segurança.
  6. 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.
  7. Selecione OK para concluir ou prosseguir para as próximas etapas opcionais, para alterar a identidade para representar.
  8. Opcionalmente, selecione Definir para alterar a identidade do Usuário específico.
  9. 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.
  10. Selecione OK para fechar a caixa de diálogo Definir Credenciais.
  11. 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

  1. Abra o Gerenciador do IIS e navegue até o nível a ser gerenciado.
  2. Em Execução de Recursos, clique duas vezes em Chave do Computador.
  3. 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.
  4. Escolher um método de criptografia da listaMétodo de criptografia. O método de criptografia padrão é Automático.
  5. Opcionalmente, defina as configurações para validação e chaves de descriptografia.
  6. 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:

  1. Associação de SSL
  2. Exigir o SSL para o Site
  3. Certificados do cliente

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

  1. Abra o Gerenciador do IIS.
  2. 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.
  3. No painel Ações, clique em Associações.
  4. Na caixa de diálogo Ligações do Site , clique em Adicionar.
  5. Na caixa de diálogo Adicionar Associação do Site, na lista Tipo, selecione https.
  6. 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).
  7. Na caixa Porta, digite o número da porta (o padrão é 443).
  8. Na caixa Nome de Host, digite o nome do computador host.
  9. 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.
  10. 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.
  11. 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

  1. 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.

  2. Em Exibição de Recursos, clique duas vezes em Configurações de SSL.

  3. Na página Configurações de SSL, selecione Exigir o SSL.

  4. 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

  1. 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.

  2. Em Exibição de Recursos, clique duas vezes em Configurações de SSL.

  3. 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.

  4. 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.
  5. 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