Configurar a filtragem de solicitações no IIS
de Keith Newman e Robert McMurray
Este documento mostra como usar configurações de filtro de solicitação comuns para melhorar a segurança do seu servidor Web IIS 8.
Os filtros de solicitação restringem os tipos de solicitações HTTP que o IIS 8 processa. Bloqueando as solicitações de HTTP específicas, os filtros de solicitação ajudam bastante a impedir que as solicitações nocivas se conectem ao servidor. O módulo de filtro de solicitação verifica as solicitações de entrada e recusa as solicitações indesejadas com base nas regras que você configurar.
Por padrão, o IIS rejeita solicitações para procurar por segmentos de código críticos. Ele também recusa solicitações para algumas extensões de nome de arquivo.
Você pode configurar um filtro de solicitação na extensão de servidor e, em seguida, substituir a configuração em nível de site.
Pré-requisitos
Para aproveitar ao máximo este tutorial, você deve ter acesso a um computador com um dos seguintes sistemas operacionais:
- Windows Server ® 2012
- Windows® 8
Configurações do filtro de solicitação geral
As configurações gerais incluem as configurações conforme o seguinte:
- Se deseja permitir acesso a um arquivo com uma extensão que não está listada para o filtro de solicitação.
- Se deseja permitir solicitações que usem verbos HTTP que não estão listados.
- Se deseja permitir solicitações que contenham caracteres de bit alto (não ASCII).
- Se deseja permitir solicitações que são codificadas duas vezes.
- Tamanho máximo do conteúdo solicitado.
- Tamanho máximo da URL.
- Tamanho máximo de uma cadeia de caracteres de consulta.
Para configurar opções de filtro de solicitação geral usando a interface do usuário
- Abra o Gerenciador do IIS e selecione o nível para o qual você deseja configurar o filtro de solicitação.
- Em Exibição de Recursos, clique duas vezes em Filtragem de Solicitações.
- No painel Ações, clique em Editar Configurações de Recurso.
- Na caixa de diálogo Editar Configurações de Filtragem de Solicitações, edite as configurações conforme desejado e clique em OK.
Para configurar as opções de filtro de solicitação geral usando a linha de comando
Configurar caracteres de bit alto
Para configurar caracteres de alto bit, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /allowhighbitcharacters:
verdadeiro |
falso
Por exemplo, para permitir caracteres de alto bit, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /allowhighbitcharacters:true
Configurar saída dupla
Para configurar saída dupla, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /allowdoubleescaping:
verdadeiro |
falso
Por exemplo, para permitir saída dupla, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /allowdoubleescaping:true
Configurar o comprimento máximo de conteúdo permitido
Para configurar um valor para o tamanho máximo permitido de conteúdo, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:
unidade
A variável requestlimits.maxallowedcontentlength:
unit especifica o comprimento máximo do conteúdo.
Por exemplo, para especificar 30000000 como o tamanho máximo do conteúdo, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:30000000
Configurar o comprimento máximo de URL permitido
Para configurar um valor para o tamanho máximo permitido de uma URL de entrada, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /requestlimits.maxurl:
unidade
A variável requestlimits.maxurl:
unit especifica o comprimento máximo da URL de chegada.
Por exemplo, para especificar 4096 como o número máximo de comprimento da URL de entrada, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /requestlimits.maxurl:4096
Configurar o comprimento máximo permitido da cadeia de caracteres da consulta
Para configurar um valor para o tamanho máximo permitido de uma cadeia de caracteres de consulta de entrada, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring:
unidade
A variável requestlimits.maxquertystring:
unit especifica o comprimento máximo da cadeia de caracteres de consulta.
Por exemplo, para especificar 2048 como o número máximo de cadeia de caracteres de consulta de entrada, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring:2048
Configurar o tamanho máximo para um cabeçalho HTTP
Para configurar um limite de tamanho para um determinado cabeçalho HTTP, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='
string',sizelimit='
unit']
A variável header=
string especifica o cabeçalho ao qual essa restrição se aplica. A variável sizelimit=
unit especifica o tamanho máximo deste cabeçalho.
Por exemplo, para especificar o tamanho máximo de 2048 para os cabeçalhos que incluem um valor de contoso.com, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='contoso.com',sizelimit='2048']
Extensões de nome de arquivo
Para cada extensão de nome de arquivo que você adicionar, você pode indicar se deseja permitir ou rejeitar solicitações para esse tipo de arquivo.
Para configurar extensões de nome de arquivo usando a interface do usuário
- Abra o Gerenciador do IIS e selecione o nível para o qual você deseja configurar o filtro de solicitação.
- Em Exibição de Recursos, clique duas vezes em Filtragem de Solicitações.
- Selecione a guia Extensões de Nome de arquivo.
- No painel Ações, clique em Permitir Extensão de Nome de Arquivo ou Negar Extensão de Nome de Arquivo.
- Digite a extensão de nome de arquivo na caixa e clique em OK.
Para configurar as extensões de nome de arquivo usando a linha de comando
Configurar extensões de nome de arquivo não listadas
Para configurar como o IIS lida com extensões de nome de arquivo não listadas, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:
verdadeiro |
falso
Por exemplo, para negar extensões de nome de arquivo não listadas, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:false
Configurar para solicitações WebDAV
Para configurar se as extensões de nome de arquivo se aplicam a solicitações WebDAV, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:
verdadeiro |
falso
Por exemplo, para configurar o IIS para que as extensões de nome de arquivo não se apliquem às solicitações WebDAV, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:false
Adicionar ou remover uma extensão de nome de arquivo
Para adicionar uma extensão de nome de arquivo, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='
cadeia de caracteres',allowed='true | false']
A variável fileextension
=string é a extensão do nome de arquivo que você deseja permitir ou negar.
Por exemplo, para adicionar uma regra de permissão à extensão de nome de arquivo .xxx, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='.xxx',allowed='true']
Para remover uma regra para a extensão de nome de arquivo .xxx, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /-fileExtensions.[fileextension='.xxx']
Regras de filtragem
O IIS 8 permite que você defina regras de filtro customizado que se apliquem às solicitações de entrada. Usando este recurso, você pode definir filtros que podem fazer o seguinte:
- Examinar a solicitação URL.
- Verificar se há cadeias de caracteres de consulta contidas na URL.
- Verificar campos específicos de cabeçalho.
- Definir a quais extensões de nome de arquivo o filtro se aplica.
- Definir as cadeias de caracteres que você deseja negar.
Para configurar uma regra de filtragem usando a interface do usuário
- Abra o Gerenciador do IIS e selecione o nível para o qual você deseja configurar o filtro de solicitação.
- Em Exibição de Recursos, clique duas vezes em Filtragem de Solicitações.
- Selecione a guia Regras.
- No painel Ações, clique duas vezes em Adicionar Filtro de Regra.
- Na caixa Nome, digite um nome para a regra de filtragem.
- Se quiser a URL digitalizada, marque a caixa de seleção Examinar URL.
- Se quiser que a cadeia de caracteres de consulta seja verificada, marque a caixa de seleçãoExaminar cadeia de caracteres de consulta.
- Em Examinar Cabeçalhos, digite um ou mais cabeçalhos para fazer a verificação.
- Sob Aplica-se a, digite uma ou mais extensões de nome de arquivo às quais a regra se aplica.
- Em Negar Cadeias de Caracteres, digite uma ou mais cadeias que você deseja negar.
- Clique em OK.
Segmentos ocultos
Esse recurso permite que você rejeite as solicitações que contêm um segmento de URL (por exemplo, um nome de pasta).
Para configurar segmentos ocultos usando a interface do usuário
- Abra o Gerenciador do IIS e selecione o nível para o qual você deseja configurar o filtro de solicitação.
- Em Exibição de Recursos, clique duas vezes em Filtragem de Solicitações.
- Selecione a guia Segmentos ocultos.
- No painel Ações, clique em Adicionar Segmento Oculto.
- Digite o segmento de URL na caixa e clique em OK.
Para configurar segmentos ocultos usando a linha de comando
Configurar para solicitações WebDAV
Para configurar se os segmentos ocultos se aplicam a solicitações WebDAV, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:
verdadeiro |
falso
Por exemplo, para configurar o IIS para que segmentos ocultos não se apliquem às solicitações WebDAV, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:false
Adicionar um segmento oculto
Para configurar um segmento oculto, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /+hiddensegments.[segment='
cadeia de caracteres']
A variável segment=
string especifica um segmento de URL que está oculto.
Por exemplo, para especificar que /bin é um segmento oculto, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /+hiddensegments.[segment='/bin']
Filtragem de URL
Você pode configurar o IIS para aceitar uma URL especificada. Além disso, você pode configurá-lo para negar uma sequência de URL especificada.
Para configurar a filtragem de URL usando a interface do usuário
- Abra o Gerenciador do IIS e selecione o nível para o qual você deseja configurar o filtro de solicitação.
- Em Exibição de Recursos, clique duas vezes em Filtragem de Solicitações.
- Selecione a guia URL .
- No painel Ações, selecione Permitir URL ou Negar Sequência.
- Digite a URL ou a sequência de URL na caixa e clique em OK.
Para configurar a filtragem de URL usando a linha de comando
Para negar uma sequência de URL, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='
cadeia de caracteres']
A variável sequence=
string especifica uma sequência de caracteres em uma URL que o IIS nunca tem permissão para analisar.
Por exemplo, para especificar que o IIS nunca analisa URLs que contêm dois períodos, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='..']
Verbos HTTP
Você pode definir uma lista de verbos que o IIS 8 aceite como parte de uma solicitação. Quando o IIS rejeitar uma solicitação de acordo com esse recurso, o código de erro registrado será 404.6.
Para configurar os verbos HTTP não listados usando a interface do usuário
- Abra o Gerenciador do IIS e selecione o nível para o qual você deseja configurar o filtro de solicitação.
- Em Exibição de Recursos, clique duas vezes em Filtragem de Solicitações.
- Selecione a guia Verbos HTTP.
- No painel Ações, clique em Permitir verbo ou Negar verbo.
- Insira o verbo na caixa e clique em OK.
Para configurar os verbos HTTP não listados usando a linha de comando
Configurar verbos HTTP não listados
Para configurar como o IIS lida com verbos não listados, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /verbs.allowunlisted:
verdadeiro |
falso
Por exemplo, para negar verbos não listados, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /verbs.allowunlisted:false
Configurar para solicitações WebDAV
Para configurar se a filtragem de verbo se aplica às solicitações WebDAV, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:
verdadeiro |
falso
Por exemplo, para configurar o IIS para que a filtragem de verbo não se aplique às solicitações WebDAV, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:false
Adicionar um verbo HTTP
Para configurar um verbo para filtrar, use a seguinte sintaxe:
appcmd set config /section:requestfiltering /+verbs.[verb='
string',allowed='
true |
false']
A variável verb=
string especifica o verbo ao qual essa restrição se aplica.
Por exemplo, para especificar que o GET é permitido, digite o seguinte comando no prompt de comando e pressione ENTER:
appcmd set config /section:requestfiltering /+verbs.[verb='GET',allowed='true']
Limites de tamanho de cabeçalho
Você pode limitar o tamanho dos cabeçalhos de solicitação HTTP para melhorar o desempenho e a segurança. Os cabeçalhos são pares nome/valor que definem os parâmetros operacionais de uma transação HTTP.
Para configurar limites de tamanho de cabeçalho usando a interface do usuário
- Abra o Gerenciador do IIS e selecione o nível para o qual você deseja configurar o filtro de solicitação.
- Em Exibição de Recursos, clique duas vezes em Filtragem de Solicitações.
- Selecione a guia Cabeçalhos e clique em Adicionar cabeçalho.
- Na caixa Cabeçalho, digite o nome do campo de cabeçalho.
- Na caixa Limite de tamanho, digite um número inteiro positivo que represente o limite de tamanho do cabeçalho em bytes.
- Clique em OK.
Consultar cadeia de caracteres
Você pode configurar IIS 8 para permitir ou negar as cadeias de caracteres de consulta específicas contidas na URL solicitada. Por exemplo, se uma cadeia de caracteres de consulta negada for encontrada em uma URL de solicitação, a solicitação será negada.
Para configurar as cadeias de caracteres de consulta usando a interface do usuário
- Abra o Gerenciador do IIS e selecione o nível no qual você deseja configurar a filtragem de solicitação.
- Em Exibição de Recursos, clique duas vezes em Filtragem de Solicitações.
- Selecione a guia Cadeias de Caracteres de Consulta e clique em Permitir Cadeia de Caracteres de Consulta ou Negar Cadeia de Caracteres de Consulta.
- Na caixa Cadeia de caracteres de consulta, digite a cadeia de caracteres de consulta.
- Clique em OK.
Registro em log do filtro de solicitação
Você pode usar o registro em log do IIS para avaliar e otimizar sua configuração do filtro de solicitação.
A tabela a seguir mostra os códigos de erro de filtro de solicitação que você vê no log:
Descrição do erro | Código do Status |
---|---|
Filtragem de Solicitações: sequência de URL negada | 404,5 |
Filtragem de Solicitações: verbo negado | 404,6 |
Filtragem de Solicitações: extensão de nome de arquivo negada | 404,7 |
Filtragem de Solicitações: negado por segmento oculto | 404,8 |
Filtragem de Solicitações: negado porque a URL possui saída dupla | 404,11 |
Filtragem de Solicitações: negado devido a caracteres de bit alto | 404,12 |
Filtragem de Solicitações: negado porque a URL é muito longa | 404,14 |
Filtragem de Solicitações: negado porque a cadeia de caracteres é muito longa | 404,15 |
Filtragem de Solicitações: negado porque o comprimento do conteúdo é muito grande | 413.1 |
Filtragem de Solicitações: negado porque o cabeçalho da solicitação é muito longo. | 431 |