Cómo configurar la herramienta URLScan

Se recomienda encarecidamente a todos los usuarios que actualicen a la versión 7.0 de Microsoft Internet Information Services (IIS) que se ejecuta en Microsoft Windows Server 2008. IIS 7.0 aumenta considerablemente la seguridad de la infraestructura Web. Para obtener más información acerca de temas relacionados con la seguridad IIS, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de IIS 7.0, visite el siguiente sitio Web de Microsoft:

Resumen

En este artículo paso a paso se explica cómo configurar la herramienta URLScan para proteger el servidor Web frente a ataques y vulnerabilidades de seguridad.

Instalar URLScan

Para instalar URLScan, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
307608 utilizar URLScan en IIS

Modificar el archivo URLScan.ini

Toda la configuración de URLScan se realiza mediante el archivo URLScan.ini, que se encuentra en la carpeta %WINDIR%\System32\Inetsrv\URLscan. Para configurar URLScan, abra este archivo en un editor de texto como el Bloc de notas, realice los cambios apropiados y, a continuación, guarde el archivo.

Nota: Debe reiniciar Internet Information Services (IIS) para que los cambios surtan efecto. Una forma puede hacerlo rápidamente es ejecutar el comando IISRESET en un símbolo del sistema.

El archivo URLScan.ini contiene las secciones siguientes:
  • [Opciones]: esta sección describen las opciones generales de URLScan.
  • [AllowVerbs] y [DenyVerbs]: esta sección define los verbos (también denominados métodos HTTP) que URLScan admite.
  • [DenyHeaders]: esta sección muestran los encabezados HTTP que no se permiten en una solicitud HTTP. Si una solicitud HTTP incluye uno de los encabezados HTTP que se enumeran en esta sección, URLScan rechaza la solicitud.
  • [AllowExtensions] y [DenyExtensions]: esta sección define las extensiones de nombre de archivo que URLScan admite.
  • [DenyURLSequences]: esta sección enumera las cadenas que no están permitidas en una solicitud HTTP. URLScan rechaza las solicitudes HTTP que contienen una cadena que aparece en esta sección.
Cada sección se describirán con más detalle en este documento.

La sección [Options]

En la sección [Options] , puede configurar un número de opciones de URLScan. Cada línea de esta sección tiene el siguiente formato:
OptionName=OptionValue
Las opciones disponibles y sus valores predeterminados son los siguientes:
  • UseAllowVerbs=1

    De forma predeterminada, esta opción se establece en 1. Si esta opción se establece en 1, URLScan sólo permite las solicitudes HTTP que utilizan los verbos que se enumeran en la sección [AllowVerbs] . URLScan bloquea las solicitudes que no utilizan estos verbos. Si esta opción está establecida en 0, URLScan omite la sección [AllowVerbs] y, en su lugar bloquea sólo las solicitudes que utilizan verbos que se muestran en la sección [DenyVerbs] .
  • UseAllowExtensions=0

    De forma predeterminada, esta opción se establece en 0. Si esta opción está establecida en 0, URLScan bloquea las solicitudes para las extensiones de nombre de archivo que se enumeran en la sección [DenyExtensions] , pero permite las solicitudes de cualquier otro archivo de extensiones de nombre de. Si esta opción se establece en 1, URLScan sólo permite las solicitudes de archivos con extensiones que se enumeran en la sección [AllowExtensions] y bloquea las solicitudes para todos los archivos.
  • NormalizeUrlBeforeScan=1

    IIS recibe las solicitudes de dirección URL codificada. Esto significa que determinados caracteres pueden reemplazarse con un signo de porcentaje (%) seguido de un número determinado. Por ejemplo, % 20 corresponde a un espacio, por lo que una solicitud de http://myserver/My%20Dir/My%20File.htm es igual a una solicitud de http://myserver/My Dir/My archivo.htm establece un. La normalización es el proceso de descodificación las solicitudes codificadas en URL. De forma predeterminada, esta opción se establece en 1. Si la opción NormalizeUrlBeforeScan se establece en 1, URLScan analiza la solicitud descodificada. Si se establece en 0, URLScan analiza la solicitud no descodificada en su lugar. Esta opción en 0, obstaculiza la habilidad de URLScan para bloquear ciertos tipos de ataques.
  • VerifyNormalization=1

    Dado que el signo de porcentaje (%), sí puede ser una dirección URL codificada, un atacante puede enviar una solicitud especialmente formulada en un servidor que es básicamente con doble codificación. Si esto ocurre, IIS puede aceptar una solicitud que de lo contrario rechazaría como no válido. De forma predeterminada, esta opción se establece en 1. Si la opción VerifyNormalization se establece en 1, URLScan normaliza la dirección URL dos veces. Si la dirección URL después de la normalización del primer es diferente de la dirección URL después de la normalización del segundo, URLScan rechaza la solicitud. Esto evita los ataques que se basan en las solicitudes codificadas en doble.
  • AllowHighBitCharacters=0

    De forma predeterminada, esta opción se establece en 0. Si esta opción está establecida en 0, URLScan rechaza las solicitudes que contienen caracteres no ASCII. Esto puede impedir que ciertos tipos de ataques, pero también pueden bloquear todas las solicitudes para ciertos archivos legítimos, como los archivos con nombres no ingleses.
  • AllowDotInPath=0

    De forma predeterminada, esta opción se establece en 0. Si esta opción está establecida en 0, URLScan rechaza las solicitudes que contiene varios puntos (.). Esto impide que intenta disfrazar las solicitudes para las extensiones de nombre de archivo peligrosos colocando una extensión de nombre de archivo seguro en la parte de cadena de información o consulta de ruta de acceso de la dirección URL. Por ejemplo, si se establece esta opción en 1, URLScan podría permitir una solicitud de http://servername/BadFile.exe/SafeFile.htm porque piensa que es una solicitud para una página HTML, cuando es en realidad una solicitud para un archivo ejecutable (.exe) con el nombre de una página HTML en la zona PATH_INFO. Cuando esta opción está establecida en 0, URLScan también puede denegar las solicitudes para los directorios que contienen puntos.
  • RemoveServerHeader=0

    De forma predeterminada, un servidor Web devuelve un encabezado que identifica qué software de servidor Web se ejecuta en todas las respuestas. Esto puede aumentar la vulnerabilidad del servidor porque un atacante puede determinar que está ejecutando un servidor IIS y, a continuación, ataque conocido problemas IIS, en lugar de intentar atacar un servidor IIS mediante ataques en los que se han diseñado para otros servidores Web. De forma predeterminada, esta opción se establece en 0. Si la opción RemoveServerHeader se establece en 1, evitar que el servidor envíe el encabezado que lo identifica como un servidor de IIS. Si RemoveServerHeader se establece en 0, todavía se enviará este encabezado.
  • AlternateServerName = (no se especifica de forma predeterminada)

    Si RemoveServerHeader está establecido en 0, puede especificar una cadena en la opción AlternateServerName para especificar lo que se pasará en el encabezado del servidor. Si RemoveServerHeader está establecido en 1, se omite esta opción.
  • EnableLogging=1

    De forma predeterminada, URLScan mantiene un registro completo de todas las peticiones bloqueadas en % WINDIR%\System32\Inetsrv\URLScan. Puede establecer EnableLogging en 0 si no desea guardar este registro.
  • PerProcessLogging=0

    De forma predeterminada, esta opción se establece en 0. Si esta opción se establece en 1, URLScan crea un registro separado para cada proceso que aloja URLScan.dll. Si se establece en 0, todos los procesos se inicie en el mismo archivo.
  • PerDayLogging=1

    De forma predeterminada, esta opción se establece en 1. Si este valor se establece en 1, URLScan crea un nuevo archivo de registro cada día. Cada archivo de registro denominado Urlscan. Mmddaa.log, donde
    MMDDYY es la fecha del archivo de registro. Si este valor se establece en 0, todo el registro se guarda en el mismo archivo, independientemente de la fecha.
  • AllowLateScanning=0

    De forma predeterminada, esta opción se establece en 0. Si esta opción está establecida en 0, URLScan se ejecuta como un filtro de alta prioridad, lo que significa que se ejecuta antes que otros filtros de interfaz de programación de aplicaciones de servidor Internet (ISAPI) que se instalan en el servidor. Si esta opción se establece en 1, URLScan se ejecuta como un filtro de baja prioridad, por lo que otros filtros pueden modificar la dirección URL antes de que URLScan realice cualquier análisis. Extensiones de servidor de FrontPage (FPSE) requiere esta opción se establece en 1.
  • RejectResponseUrl = (no se especifica de forma predeterminada)

    Esta opción especifica la ruta de acceso virtual a un archivo que se ejecuta cuando URLScan bloquea una solicitud. Esto le permite personalizar la respuesta que se envía al cliente para solicitudes bloqueadas. Debe especificar RejectResponseUrl como una ruta de acceso virtual al archivo adecuado, como /Path/To/RejectResponseHandler.asp. Puede especificar un archivo que URLScan normalmente bloquea, como una página de páginas Active Server (ASP). También puede utilizar las siguientes variables de servidor de la página:
    • HTTP_URLSCAN_STATUS_HEADER: especifica por qué se bloqueó la solicitud.
    • HTTP_URLSCAN_ORIGINAL_VERB: especifica el verbo original de la solicitud de bloqueo (por ejemplo, GET, POST, HEAD o depuración).
    • HTTP_URLSCAN_ORIGINAL_URL: especifica la dirección URL original de la solicitud de bloqueada.
    Si establece RejectResponseUrl en el valor especial de / ~ *, URLScan utiliza el modo de sólo registro. Esto permite que IIS para atender todas las solicitudes, pero agrega una entrada al registro de URLScan para las solicitudes que suelen estar bloqueados. Esto es útil si desea probar el archivo URLScan.ini.

    Si no especifica un valor para RejectResponseUrl, URLScan utiliza el valor predeterminado de / < Rejected By UrlScan >.

  • UseFastPathReject=0

    De forma predeterminada, esta opción se establece en 0. Si esta opción se establece en 1, URLScan omite la opción RejectResponseUrl y devuelve inmediatamente un mensaje de 404 error al explorador. Esto es más rápido que procesar RejectResponseUrlpero no permite tantas opciones de registro. Si esta opción está establecida en 0, URLScan utiliza la opción RejectResponseUrl para procesar la solicitud.

La sección [AllowVerbs] y [DenyVerbs] secciones

Las secciones [AllowVerbs] y [DenyVerbs] define los verbos HTTP (también conocido como métodos) que URLScan admite. Los verbos de HTTP comunes son GET, POST, HEAD y PUT. Otras aplicaciones, como FPSE y Web Distributed Authoring and Versioning (WebDAV), utilizan verbos adicionales.

El [AllowVerbs] y las secciones [DenyVerbs] tienen la misma sintaxis. Se componen de una lista de verbos HTTP y cada verbo aparece en su propia línea.

URLScan decide qué sección para utilizar basándose en el valor de la opción UseAllowVerbs en la sección [Options] . De forma predeterminada, esta opción se establece en 1. Si se establece UseAllowVerbs en 1, URLScan sólo permite las solicitudes que utilizan los verbos que se enumeran en la sección [AllowVerbs] . Se rechaza una solicitud que no utiliza uno de estos verbos. En este caso, se omite la sección [DenyVerbs] .

Si se establece UseAllowVerbs en 0, URLScan rechaza las solicitudes que utilizan verbos que explícitamente se muestran en la sección [DenyVerbs] . Se permiten las solicitudes que utilizan verbos que no aparecen en esta sección. En este caso, URLScan omite la sección [AllowVerbs] .

La sección [DenyHeaders]

Cuando un cliente solicita una página desde un servidor Web, normalmente se envía a través de algunos encabezados HTTP que contienen información adicional sobre la solicitud. Encabezados HTTP comunes incluyen los siguientes:
  • Host:

    Este encabezado contiene el nombre del servidor Web.
  • Aceptar:

    Este encabezado define los tipos de archivo que el cliente puede controlar.
  • Agente de usuario:

    Este encabezado contiene el nombre del explorador que solicita la página.
  • Autorización:

    Este encabezado define los métodos de autenticación que admite el cliente.
Los clientes pueden enviar otros encabezados al servidor para especificar información adicional.

En la sección [DenyHeaders] , definir encabezados HTTP que URLScan rechazará. Si URLScan recibe una solicitud que contiene un encabezado que se enumera en esta sección, rechaza la solicitud. En esta sección se compone de una lista de encabezados HTTP, con cada encabezado que aparece en su propia línea. Nombres de encabezado deben ir seguidos de dos puntos (:) (por ejemplo, nombre de encabezado:).

[AllowExtensions] y [DenyExtensions] secciones

La mayoría de archivos tiene una extensión de nombre de archivo que identifica el tipo de archivo son. Por ejemplo, nombres de archivo de Word, los documentos suelen terminan con la extensión .doc, nombres de archivo HTML normalmente terminan en .htm o .html y nombres de archivo de texto sin formato suelen terminan en .txt. Las secciones [AllowExtensions] y [DenyExtensions] permiten definir extensiones que URLScan bloqueará. Por ejemplo, puede configurar URLScan para rechazar las solicitudes de archivos .exe impedir que los usuarios de Web ejecutando aplicaciones en el sistema.

El [AllowExtensions] y las secciones [DenyExtensions] tienen la misma sintaxis. Se componen de una lista de extensiones de nombre de archivo, y cada extensión aparece en su propia línea. La extensión comienza con un punto (.) (por ejemplo, .ext).

URLScan decide qué sección para utilizar basándose en el valor de UseAllowExtensions en la sección [Options] . De forma predeterminada, esta opción se establece en 0. Si UseAllowExtensions está establecido en 0, URLScan rechaza sólo las peticiones de archivo extensiones que se enumeran en la sección [DenyExtensions] . Se permiten las extensiones de nombre de archivo que no se muestran en esta sección. Se omite la sección [AllowExtensions] .

Si UseAllowExtensions está establecido en 1, URLScan rechaza las peticiones de cualquier archivo de extensiones de nombre que no se enumeran explícitamente en la sección [AllowExtensions] . Se permiten las solicitudes sólo para una extensión de nombre de archivo que se enumeran en la sección. Se omite la sección [DenyExtensions] .

Para obtener información adicional acerca de cómo configurar URLScan para permitir solicitudes de archivos que no tienen una extensión, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
312376 cómo configurar URLScan para permitir solicitudes con una extensión null en IIS

La sección [DenyUrlSequences]

Puede configurar URLScan para bloquear las solicitudes que contengan ciertas secuencias de caracteres en la URL. Por ejemplo, puede bloquear las solicitudes que contengan dos puntos consecutivos (.), que se utilizan frecuentemente con ataques que aprovechan vulnerabilidades de recorrido de directorio. Para especificar una secuencia de caracteres para bloquear, colocar la secuencia en una línea por sí mismo en la sección [DenyUrlSequences] .

Tenga en cuenta que la adición de secuencias de caracteres puede afectar Outlook Web Access (OWA) para Microsoft Exchange. Cuando abre un mensaje desde OWA, la línea de asunto del mensaje está contenida en la dirección URL que se solicita desde el servidor. Dado que el archivo URLScan.ini bloquea las solicitudes que contengan el signo de porcentaje (%) y el signo de y comercial (&), los usuarios reciben un mensaje de 404 error al intentar abrir un mensaje con una línea de asunto como "Ventas aumentan 100%" o "Juan y Ana se vienen a la ciudad". Para resolver este problema, puede quitar estas secuencias de la sección [DenyUrlSequences] . Tenga en cuenta que esto reduce la seguridad porque permite potencialmente dañinas solicitudes para llegar al servidor.

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
325965 la herramienta URLScan puede causar problemas en Outlook Web Access

Configurar URLScan para su uso con aplicaciones que dependen de IIS

Aplicaciones como Exchange, FPSE y Microsoft Visual Studio .NET dependen de IIS para la funcionalidad correcta. Si no configura correctamente URLScan, estas aplicaciones pueden dejar de funcionar correctamente.


Para obtener información adicional acerca de cómo configurar URLScan para trabajar con estas aplicaciones, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
309508 configuraciones de IIS Lockdown y URLscan en un entorno de Exchange

309394 cómo utilizar URLScan con FrontPage 2000

318290 cómo utilizar URLScan con FrontPage 2002

310588 security toolkit interrumpe la depuración en Visual Studio .NET ASP.NET

Más información

Si no existe el archivo Urlscan.ini en la carpeta %WINDIR%\System32\Inetsrv\URLscan, el cliente recibe una respuesta de 404 error. Para resolver este problema, restaure el archivo Urlscan.ini desde una copia de seguridad o copiar el archivo Urlscan.ini desde un servidor idéntico.

Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
325864 cómo instalar y utilizar IIS Lockdown Wizard

Propiedades

Id. de artículo: 326444 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios