Configurar el filtrado de solicitudes en IIS

de Keith Newman y Robert McMurray

En este documento se muestra cómo usar la configuración común de filtrado de solicitudes para mejorar la seguridad de su servidor web de IIS 8.

Los filtros de solicitudes restringen los tipos de solicitudes HTTP que procesa IIS 8. Al bloquear solicitudes HTTP concretas, los filtros de solicitudes ayudan a evitar que lleguen al servidor solicitudes que pueden ser perjudiciales. El módulo de filtro de solicitudes examina las solicitudes entrantes y rechaza las no deseadas a partir de reglas configuradas.

De forma predeterminada, IIS rechaza las solicitudes que acceden a segmentos de código críticos. También rechaza las solicitudes de algunas extensiones de nombre de archivo.

Puede configurar un filtro de solicitudes en el nivel de servidor y después invalidar la configuración en el nivel de sitio web.

Requisitos previos

Para obtener el máximo provecho de este tutorial, debe tener acceso a un ordenador que ejecute alguno de los siguientes sistemas operativos:

  • Windows Server® 2012
  • Windows® 8

Configuración general del filtrado de solicitudes

La configuración general incluye opciones como las siguientes:

  1. Si se va a permitir acceso a un archivo con una extensión que no figura en el filtro de solicitudes.
  2. Si se van a permitir solicitudes que usen verbos HTTP no registrados.
  3. Si se van a permitir solicitudes que contengan caracteres de bit más significativo (no ASCII).
  4. Si se van a permitir solicitudes con codificación doble.
  5. Longitud máxima del contenido solicitado.
  6. Longitud máxima de la dirección URL.
  7. Tamaño máximo de una cadena de consulta.

Para configurar opciones generales de filtrado de solicitudes mediante la interfaz de usuario

  1. Abra el Administrador de IIS y seleccione el nivel para el que quiere configurar el filtro de solicitudes.
  2. En Vista Características, haga doble clic en Filtrado de solicitudes.
  3. En el panel Acciones, haga clic en Modificar configuración de característica.
  4. En el cuadro de diálogo Modificar configuración del filtrado de solicitudes, modifique los valores según sea necesario y después haga clic en Aceptar.

Para configurar opciones generales de filtrado de solicitudes mediante la línea de comandos

Configuración de caracteres de bit más significativo

Para configurar caracteres de bit más significativo, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /allowhighbitcharacters:true|false

Por ejemplo, para permitir caracteres de bit más significativo, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /allowhighbitcharacters:true

Configuración del doble escape

Para configurar el doble escape, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /allowdoubleescaping:true|false

Por ejemplo, para habilitar el doble escape, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /allowdoubleescaping:true

Configuración de la longitud de contenido máxima permitida

Para configurar un valor para la longitud máxima permitida de contenido, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:unidad

The variable requestlimits.maxallowedcontentlength:unit especifica la longitud máxima de contenido.

Por ejemplo, para especificar 30000000 como la longitud máxima de contenido, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:30000000

Configuración de la longitud máxima permitida de una dirección URL

Para configurar un valor para la longitud máxima permitida de una dirección URL entrante, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /requestlimits.maxurl:unidad

La variable requestlimits.maxurl:unit especifica la longitud máxima de una dirección URL entrante.

Por ejemplo, para especificar 4096 como la longitud máxima de una dirección URL entrante, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /requestlimits.maxurl:4096

Configuración de la longitud máxima permitida de una cadena de consulta

Para configurar un valor para la longitud máxima permitida de una cadena de consulta entrante, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /requestlimits.maxquerystring:unidad

La variable requestlimits.maxquertystring:unit especifica la longitud máxima de una cadena de consulta entrante.

Por ejemplo, para especificar 2048 como la longitud máxima de una cadena de consulta entrante, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /requestlimits.maxquerystring:2048

Configuración del tamaño máximo de un encabezado HTTP

Para configurar un límite de tamaño de un encabezado HTTP concreto, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='string',sizelimit='unit']

La variable header=string especifica el encabezado al que se aplica esta restricción. La variable sizelimit=unit especifica el tamaño máximo de este encabezado.

Por ejemplo, para especificar un tamaño máximo de 2048 para encabezados que incluyen un valor de contoso.com, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='contoso.com',sizelimit='2048']

Extensiones de nombre de archivo

Para cada extensión de nombre de archivo que agregue, puede indicar si se permiten o se rechazan las solicitudes para ese tipo de archivo.

Para configurar extensiones de nombre de archivo mediante la interfaz de usuario

  1. Abra el Administrador de IIS y seleccione el nivel para el que quiere configurar el filtro de solicitudes.
  2. En Vista Características, haga doble clic en Filtrado de solicitudes.
  3. Seleccione la pestaña Extensiones de nombre de archivo.
  4. En el panel Acciones, haga clic en Permitir extensión de nombre de archivo o Denegar extensión de nombre de archivo.
  5. Escriba la extensión de nombre de archivo en el cuadro y haga clic en Aceptar.

Para configurar extensiones de nombre de archivo mediante la línea de comandos

Configuración de extensiones de nombre de archivo que no figuran en la lista

Para configurar el modo en que IIS trata las extensiones de nombre de archivo no registradas, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:true|false

Por ejemplo, para denegar las extensiones de nombre de archivo no registradas, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:false

Configuración de solicitudes de WebDAV

Para indicar si las extensiones de nombre de archivo se aplican a las solicitudes de WebDAV, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:true|false

Por ejemplo, para configurar IIS de modo que las extensiones de nombre de archivo no se apliquen a las solicitudes de WebDAV, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:false

Adición o eliminación de una extensión de nombre de archivo

Para agregar una extensión de nombre de archivo, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='string',allowed='true | false']

La variable fileextension=string es la extensión de nombre de archivo que quiere permitir o denegar.

Por ejemplo, para agregar una regla que permita la extensión de nombre de archivo .xxx, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='.xxx',allowed='true']

Para quitar una regla para la extensión de nombre de archivo .xxx, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /-fileExtensions.[fileextension='.xxx']

Reglas de filtrado

IIS 8 permite definir reglas de filtrado personalizadas que se apliquen a las solicitudes entrantes. Mediante esta característica, puede definir filtros que hagan lo siguiente:

  1. Examinen la dirección URL de la solicitud.
  2. Examinen las cadenas de consulta incluidas en la dirección URL.
  3. Examinen campos de encabezado específicos.
  4. Definan las extensiones de nombre de archivo a las que se aplica el filtro.
  5. Definan las cadenas que se van a denegar.

Para configurar una regla de filtrado mediante la interfaz de usuario

  1. Abra el Administrador de IIS y seleccione el nivel para el que quiere configurar el filtro de solicitudes.
  2. En Vista Características, haga doble clic en Filtrado de solicitudes.
  3. Seleccione la pestaña Reglas.
  4. En el panel Acciones, haga doble clic en Agregar regla de filtrado.
  5. En el cuadro Nombre, escriba un nombre para la regla de filtrado.
  6. Si quiere que se examine la dirección URL, active la casilla Examinar dirección URL.
  7. Si quiere que se examine la cadena de consulta, active la casilla Examinar cadena de consulta.
  8. En Examinar encabezados, especifique los encabezados que quiere examinar.
  9. En Se aplica a, especifique las extensiones de nombre de archivo a las que se aplica la regla.
  10. En Cadenas de denegación, escriba las cadenas que quiere denegar.
  11. Haga clic en OK.

Segmentos ocultos

Esta característica permite rechazar las solicitudes que contengan un segmento URL (por ejemplo, un nombre de carpeta).

Para configurar segmentos ocultos mediante la interfaz de usuario

  1. Abra el Administrador de IIS y seleccione el nivel para el que quiere configurar el filtro de solicitudes.
  2. En Vista Características, haga doble clic en Filtrado de solicitudes.
  3. Seleccione la pestaña Segmentos ocultos.
  4. En el panel Acciones, haga clic en Agregar segmento oculto.
  5. Escriba el segmento URL en el cuadro y haga clic en Aceptar.

Para configurar segmentos ocultos mediante la línea de comandos

Configuración de solicitudes de WebDAV

Para indicar si los segmentos ocultos se aplican a las solicitudes de WebDAV, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:true|false

Por ejemplo, para configurar IIS de modo que los segmentos ocultos no se apliquen a las solicitudes de WebDAV, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:false

Adición de un segmento oculto

Para configurar un segmento oculto, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /+hiddensegments.[segment='string']

La variable segment=string especifica un segmento URL que está oculto.

Por ejemplo, para especificar que /bin es un segmento oculto, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /+hiddensegments.[segment='/bin']

Filtrado de direcciones URL

Puede configurar IIS para que acepte una dirección URL especificada. Además, puede configurarlo para que deniegue una secuencia de dirección URL especificada.

Para configurar el filtrado de direcciones URL mediante la interfaz de usuario

  1. Abra el Administrador de IIS y seleccione el nivel para el que quiere configurar el filtro de solicitudes.
  2. En Vista Características, haga doble clic en Filtrado de solicitudes.
  3. Seleccione la pestaña Dirección URL.
  4. En el panel Acciones, seleccione Permitir dirección URL o Secuencia de denegación.
  5. Escriba la dirección URL o la secuencia de dirección URL en el cuadro y haga clic en Aceptar.

Para configurar el filtrado de direcciones URL mediante la línea de comandos

Para denegar una secuencia de dirección URL, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='string']

La variable sequence=string especifica una secuencia de caracteres de una dirección URL que IIS no debe analizar en ningún caso.

Por ejemplo, para especificar que IIS no analice nunca direcciones URL que contengan dos puntos, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='..']

Verbos HTTP

Puede definir una lista de verbos que IIS 8 acepte como parte de una solicitud. Cuando IIS rechaza una solicitud de acuerdo con esta característica, el código de error registrado es 404.6.

Para configurar verbos HTTP no registrados mediante la interfaz de usuario

  1. Abra el Administrador de IIS y seleccione el nivel para el que quiere configurar el filtro de solicitudes.
  2. En Vista Características, haga doble clic en Filtrado de solicitudes.
  3. Seleccione la pestaña Verbos HTTP.
  4. En el panel Acciones, haga clic enPermitir verbo o Denegar verbo.
  5. Escriba el verbo en el cuadro y haga clic en Aceptar.

Para configurar verbos HTTP no registrados mediante la línea de comandos

Configuración de verbos HTTP que no figuran en la lista

Para configurar el modo en que IIS trata los verbos no registrados, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /verbs.allowunlisted:true|false

Por ejemplo, para denegar los verbos no registrados, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /verbs.allowunlisted:false

Configuración de solicitudes de WebDAV

Para indicar si el filtrado de verbos se aplica a las solicitudes de WebDAV, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /verbs.applyToWebDAV:true|false

Por ejemplo, para configurar IIS de modo que el filtrado de verbos no se aplique a las solicitudes de WebDAV, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /verbs.applyToWebDAV:false

Adición de un verbo HTTP

Para configurar los verbos que se van a filtrar, use la sintaxis siguiente:

appcmd set config /section:requestfiltering /+verbs.[verb='string',allowed='true|false']

La variable verb=string especifica el verbo al que se aplica esta restricción.

Por ejemplo, para especificar que se permite GET, escriba lo siguiente en el símbolo del sistema y presione ENTRAR:

appcmd set config /section:requestfiltering /+verbs.[verb='GET',allowed='true']

Límites de tamaño de encabezado

Puede limitar el tamaño de los encabezados de solicitudes HTTP para mejorar el rendimiento y la seguridad. Los encabezados son pares de nombre y valor que definen los parámetros operativos de una transacción HTTP.

Para configurar límites de tamaño de encabezado mediante la interfaz de usuario

  1. Abra el Administrador de IIS y seleccione el nivel para el que quiere configurar el filtro de solicitudes.
  2. En Vista Características, haga doble clic en Filtrado de solicitudes.
  3. Seleccione la pestaña Encabezados y haga clic en Agregar encabezado.
  4. En el cuadro Encabezado, escriba el nombre del campo de encabezado.
  5. En el cuadro Límite de tamaño, escriba un entero positivo que represente el límite de tamaño de encabezado en bytes.
  6. Haga clic en OK.

Cadenas de consulta

Puede configurar IIS 8 para que permita o deniegue cadenas de consulta específicas incluidas en la dirección URL solicitada. Por ejemplo, si se encuentra una cadena de consulta denegada en la dirección URL de una solicitud, se denegará la solicitud.

Para configurar cadenas de consulta mediante la interfaz de usuario

  1. Abra el Administrador de IIS y seleccione el nivel donde quiere configurar el filtro de solicitudes.
  2. En Vista Características, haga doble clic en Filtrado de solicitudes.
  3. Seleccione la pestaña Cadenas de consulta y haga clic en Permitir cadena de consulta o Denegar cadena de consulta.
  4. En el cuadro Cadena de consulta, especifique la cadena de consulta.
  5. Haga clic en OK.

Registro de filtrado de solicitudes

Puede usar el registro de IIS para evaluar y optimizar la configuración del filtro de solicitudes.

En la tabla siguiente se muestran los códigos de error del filtro de solicitudes que aparecen en el registro:

Descripción del error Código de estado
Filtrado de solicitudes: secuencia de direcciones URL denegada 404,5
Filtrado de solicitudes: verbo denegado 404,6
Filtrado de solicitudes: extensión de nombre de archivo denegada 404,7
Filtrado de solicitudes: denegado por segmento oculto 404,8
Filtrado de solicitudes: denegado porque la dirección URL duplicaba el escape 404,11
Filtrado de solicitudes: denegado porque hay caracteres de bit más significativo 404,12
Filtrado de solicitudes: denegado porque la dirección URL es demasiado larga 404,14
Filtrado de solicitudes: denegado porque la cadena de consulta es demasiado larga 404,15
Filtrado de solicitudes: denegado porque el contenido es demasiado grande 413.1
Filtrado de solicitudes: denegado porque el encabezado de solicitud es demasiado largo 431

Consulte también