Cómo configurar WebDAV con un filtrado de solicitudes
Introducción
Microsoft lanzó un nuevo módulo de extensión de WebDAV que se reescribió completamente para Internet Information Services 7.0 (IIS 7.0) y versiones posteriores en Windows Server® 2008. Este nuevo módulo de extensión de WebDAV incorporó muchas características nuevas que permiten a los autores web publicar contenido mejor que antes, y ofrecía a los administradores web más opciones de seguridad y configuración. Microsoft ha publicado una actualización del módulo de extensión de WebDAV para Windows Server® 2008 que proporciona soporte para bloqueos compartidos y exclusivos para evitar actualizaciones perdidas debido a sobrescrituras.
IIS 7.0 proporciona varias características de seguridad nuevas, incluidas las nuevas características de filtrado de solicitudes de IIS 7.0. Para los usuarios de IIS que están familiarizados con UrlScan de versiones anteriores de IIS, la característica de Filtrado de solicitudes en IIS 7.0 es como tener URLScan integrado.
El nuevo módulo WebDAV y el filtrado de solicitudes se diseñaron para funcionar juntos, y este documento le guía a través de la configuración del filtrado de solicitudes relacionado con WebDAV junto con la configuración de WebDAV a fin de crear un entorno de publicación seguro. Tenga en cuenta que si usa la interfaz de usuario del Administrador de IIS para configurar WebDAV, la configuración de filtrado de solicitudes se actualiza automáticamente y no es necesario seguir los pasos descritos en este artículo.
Requisitos previos
Los siguientes elementos son necesarios para completar los procedimientos de esta sección:
IIS 7.0 debe instalarse en el servidor y debe configurarse lo siguiente:
- El sitio web predeterminado creado por la instalación de IIS 7.0 debe existir.
- La característica Filtrado de solicitudes debe estar instalada.
Se debe instalar el nuevo módulo de extensión de WebDAV. Para obtener información sobre la instalación del nuevo módulo de WebDAV, consulte el siguiente documento:
Los conocimientos sobre cómo usar AppCmd son útiles. Para obtener más información sobre el uso del filtrado de solicitudes, consulte el siguiente documento:
Nota:
Debe asegurarse de seguir los pasos descritos en este documento mediante permisos administrativos completos. Use uno de los dos métodos siguientes para llevar a cabo este proceso correctamente:
- Inicie sesión en el equipo con la cuenta de "administrador" local.
- Si ha iniciado sesión con una cuenta con permisos administrativos que no es la cuenta de "administrador" local, abra el Administrador de IIS y todas las sesiones del símbolo del sistema mediante la opción "Ejecutar como administrador".
La condición anterior es necesaria porque el componente de seguridad Control de cuentas de usuario (UAC) de Windows Server 2008 impedirá el acceso administrativo a las opciones de configuración de IIS 7.0. Para obtener más información acerca de UAC, consulte la siguiente documentación:
Conceptos básicos de Filtrado de solicitudes
El filtrado de solicitudes en IIS 7.0 consiste en filtrar solicitudes en función de los parámetros siguientes:
- Extensiones de archivo
- Segmentos ocultos
- Verbos HTTP
- Límites de la solicitud
- Secuencias de direcciones URL
Todas estas características de filtrado de solicitudes pueden afectar al contenido que se carga o descarga a través de WebDAV, pero algunas características se pueden configurar para que funcionen con WebDAV.
En la lista siguiente se describen las características que se pueden configurar para trabajar con WebDAV:
Las siguientes características siempre afectan a las solicitudes de WebDAV:
- Límites de la solicitud
- Secuencias de direcciones URL
Las siguientes características afectan a las solicitudes de WebDAV de forma predeterminada, pero se pueden configurar para omitir las solicitudes de WebDAV:
- Extensiones de archivo
- Segmentos ocultos
- Verbos HTTP
Por ejemplo, puede configurar el servidor para permitir solicitudes que no sean de WebDAV para archivos ".htm" y ".php" al tiempo que bloquea el acceso a archivos ".mdb" y ".config", a la vez que permite que las solicitudes de WebDAV accedan a ese contenido bloqueado.
Nota:
Las solicitudes de WebDAV requieren autenticación.
Puede editar la configuración de filtrado de solicitudes mediante uno de los métodos siguientes:
- Uso de la interfaz de usuario que se proporciona como parte del Administration Pack para IIS 7.0
- Uso de AppCmd desde una línea de comandos
- Edición del archivo applicationHost.config
- Uso de Microsoft.Web.Administration desde una aplicación .NET o Windows PowerShell
La información restante de este tutorial le mostrará cómo usar AppCmd desde una línea de comandos, mientras que también se muestran los valores de configuración resultantes en el archivo applicationHost.config.
Nota:
Este documento no cubre todas las características que se pueden configurar mediante el filtrado de solicitudes. Para obtener información sobre cómo configurar opciones de filtrado de solicitudes adicionales, consulte el tema siguiente:
Configuración del filtrado de solicitudes y WebDAV
Filtrado de extensiones de archivo
Algunas extensiones de archivo como ".config" y ".asax" están protegidas por la colección fileExtensions de filtrado de solicitudes predeterminada. Puede agregar entradas adicionales a la lista de extensiones de archivo para permitirlas o bloquearlas para las solicitudes HTTP, y puede controlar si esta lista se aplica a las solicitudes de WebDAV. En este ejemplo, usará AppCmd para bloquear el acceso a los archivos ".txt", aunque normalmente sean accesibles, y especificará que las solicitudes de WebDAV podrán acceder a todas las extensiones de archivo bloqueadas.
Abra un símbolo del sistema con privilegios administrativos completos y cambie el directorio a la carpeta InetSrv:
cd "%WinDir%\System32\InetSrv"
Use la sintaxis siguiente para ver las reglas de filtrado de solicitudes existentes:
AppCmd list config "Default Web Site/" /section:system.webServer/security/requestFiltering
Bloquee el acceso a archivos ".txt" agregando una extensión de archivo específica a la colección fileExtensions y especificando false para el atributo allowed utilizando la sintaxis siguiente:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+fileExtensions.[fileExtension='.txt',allowed='false'] /commit:apphost
Permita que WebDAV acceda a todos los tipos de archivo bloqueados estableciendo el atributo applyToWebDAV para la colección fileExtensions en false utilizando la sintaxis siguiente:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:false /commit:apphost
Después de completar los pasos anteriores, el código resultante en la sección fileExtensions del archivo applicationHost.config debe ser similar al ejemplo siguiente:
<requestFiltering>
<fileExtensions applyToWebDAV="false">
<add fileExtension=".txt" allowed="false" />
</fileExtensions>
</requestFiltering>
Notas:
Puede usar los pasos anteriores para bloquear el acceso a extensiones de archivo adicionales agregándolos a la colección fileExtensions o puede modificar la sintaxis para permitir archivos específicos especificando true para el atributo allowed.
Puede bloquear todas las extensiones de archivo desconocidas estableciendo el atributo allowUnlisted para la colección fileExtensions en false utilizando la sintaxis siguiente:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.allowUnlisted:false /commit:apphost
Nota:
Esta opción requiere que agregue específicamente cada extensión de archivo antes de que se pueda acceder a ella mediante solicitudes que no sean de WebDAV.
Puede usar los pasos anteriores para bloquear el acceso a las solicitudes de WebDAV especificando true para el atributo applyToWebDAV.
Filtrado de segmentos ocultos
Algunos segmentos de archivo como "web.config" y "App_code" están ocultos por la colección hiddenSegments de filtrado de solicitudes predeterminada. Puede agregar entradas adicionales a la lista de segmentos de archivo para ocultarlas de las solicitudes HTTP y puede controlar si esta lista se aplica a las solicitudes de WebDAV. En este ejemplo, usará AppCmd para ocultar el segmento "include" de las solicitudes HTTP, aunque normalmente estarían visibles, y especificará que las solicitudes de WebDAV podrán acceder a todos los segmentos de archivo ocultos.
Abra un símbolo del sistema con privilegios administrativos completos y cambie el directorio a la carpeta InetSrv:
cd "%WinDir%\System32\InetSrv"
Bloquee el acceso al segmento "include" agregando una entrada específica a la colección hiddenSegments utilizando la sintaxis siguiente:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='include'] /commit:apphost
Permita que WebDAV acceda a todos los tipos de archivo bloqueados estableciendo el atributo applyToWebDAV para la colección hiddenSegments en false utilizando la sintaxis siguiente:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:false /commit:apphost
Después de completar los pasos anteriores, el código resultante en la sección hiddenSegments del archivo applicationHost.config debe ser similar al ejemplo siguiente:
<requestFiltering>
<hiddenSegments applyToWebDAV="false">
<add segment="include" />
</hiddenSegments>
</requestFiltering>
Notas:
- Puede usar los pasos anteriores para ocultar segmentos de archivo adicionales agregándolos a la colección hiddenSegments.
- Puede usar los pasos anteriores para bloquear el acceso a las solicitudes de WebDAV especificando true para el atributo applyToWebDAV.
Filtrado de verbos HTTP
La colección de verbos de filtrado de solicitudes predeterminada permite todos los verbos HTTP no enumerados, aunque es posible que algunos verbos no se asignen a controladores HTTP específicos. Puede especificar qué verbos HTTP se deben permitir o bloquear agregando entradas a esta lista y puede controlar si esta lista se aplica a las solicitudes de WebDAV. En este ejemplo, usará AppCmd para bloquear el verbo "DELETE" y "PUT" de las solicitudes HTTP, y especificará que las solicitudes de WebDAV podrán usar estos verbos.
Abra un símbolo del sistema con privilegios administrativos completos y cambie el directorio a la carpeta InetSrv:
cd "%WinDir%\System32\InetSrv"
Bloquee el acceso al verbo "DELETE" agregando una entrada específica a la colección de verbos y especificando false para el atributo allowed utilizando la sintaxis siguiente:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='DELETE',allowed='false'] /commit:appHost
Bloquee el acceso al verbo "PUT" agregando otra entrada específica a la colección de verbos y especificando false para el atributo allowed utilizando la sintaxis siguiente:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='PUT',allowed='false'] /commit:appHost
Permita que WebDAV acceda a todos los verbos HTTP estableciendo el atributo applyToWebDAV para la colección de verbos en false utilizando la sintaxis siguiente:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.applyToWebDAV:false /commit:appHost
Después de completar los pasos anteriores, el código resultante en la sección verbos del archivo applicationHost.config debe ser similar al ejemplo siguiente:
<requestFiltering>
<verbs applyToWebDAV="false">
<add verb="DELETE" allowed="false" />
<add verb="PUT" allowed="false" />
</verbs>
</requestFiltering>
Notas:
Puede usar los pasos anteriores para bloquear verbos HTTP adicionales agregándolos a la colección de verbos, o bien puede modificar la sintaxis para permitir verbos concretos especificando true para el atributo allowed.
Puede bloquear todos los verbos HTTP desconocidos estableciendo el atributo allowUnlisted para la colección de verbos en false utilizando la sintaxis siguiente:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.allowUnlisted:false /commit:appHost
Nota:
Esta opción requiere que agregue específicamente cada verbo HTTP antes de que se pueda acceder a él mediante solicitudes que no son de WebDAV.
Puede usar los pasos anteriores para bloquear el acceso a las solicitudes de WebDAV especificando true para el atributo applyToWebDAV.
Resumen
En este documento se muestran los siguientes conceptos:
Más información
Para obtener más información sobre el uso de WebDAV, consulte los siguientes artículos: