DNM+ Online
dotnetmania 2.0
Seguridad de Internet Information Server (III)
En las dos anteriores entregas de esta serie hemos aprendido a fortalecer la seguridad de IIS aprovechando las características propias del sistema operativo. Además de esto Microsoft pone a nuestra disposición algunas herramientas gratuitas pensadas para proteger a IIS y que conviene conocer.

Como hemos visto, las características propias de IIS y Windows 2000/2003 Server son adecuadas para mantener un nivel de seguridad razonable si se emplean con criterio. También es necesario comprender las implicaciones que estos ajustes de seguridad (y de configuración) tienen sobre el código que escribimos. De nada vale tener un IIS fortificado si nuestro código está escrito de manera descuidada y existen agujeros que se pueden explotar a través de peticiones lícitas a la aplicación. Por otra parte, aunque la seguridad básica esté bien gestionada y el código bien escrito continuamente se descubren nuevas vulnerabilidades, agujeros de seguridad y métodos de ataque ante los que estamos casi indefensos mientras no se libera un parche o se descubre una contramedida. Huelga decir que es fundamental mantener los sistemas correctamente actualizados, con los últimos parches y Service Packs. Sin embargo siempre ha de pasar cierto tiempo entre que se descubre un problema de seguridad, éste se hace público y el momento en que Microsoft publica la solución. En el ínterin nuestros sistemas se encuentran inermes y debemos intentar de que su exposición sea mínima. Parece obvio que cuantos menos frentes tengamos que defender más sencilla será la tarea. Es lo que se denomina comúnmente "disminuir la superficie de ataque". En este artículo vamos a conocer qué herramientas tenemos a nuestra disposición para disminuir los factores de riesgo de ataque exitoso y cómo impedir, incluso, ataques que intentan aprovechar agujeros desconocidos o sin solucionar. Las plantillas de seguridad Cualquiera que haya seguido un poco las diferentes vulnerabilidades de IIS y otros productos en los últimos años habrá observado que, en muchos casos, éstas se han debido a problemas en características y servicios accesorios que raramente se utilizan. Desde el momento en que tenemos en marcha un servicio innecesario o una característica que no utilizamos, se aumentan artificialmente las probabilidades de sufrir un ataque exitoso a través de éste. Hay que encontrar el equilibro entre funcionalidades y seguridad para estar razonablemente protegidos. Cuando me toca hablar de estos temas siempre me acuerdo de una máxima que nos repetían en la escuela de ingeniería: "Lo difícil no es diseñar una edificación que no se caiga, lo verdaderamente complicado es calcular una que casi no se caiga". Y es que cuando nos referimos a la seguridad informática nos encontramos en la misma situación: los métodos drásticos de protección no nos sirven de mucho pues no obtendríamos la funcionalidad requerida o un coste razonable, y los demasiado despreocupados tampoco porque estaríamos en peligro. Lo ideal es encontrar el punto justo de equilibrio en cada situación particular que nos mantenga protegidos sin escatimar funcionalidad. He ahí la dificultad. Para aprovechar la experiencia propia y la de los demás, Microsoft nos facilita una herramienta en el Kit de recursos de Windows 2000/2003 que va a ser de gran utilidad para conseguir este proverbial equilibrio. Su uso se basa en plantillas de configuración con instrucciones detalladas de cómo ajustar muchos de los parámetros que se refieren a la seguridad (desde ajustes en el registro o en el sistema hasta políticas de grupo). De este modo una vez que hayamos encontrado el punto justo que necesitamos podremos guardar los ajustes para reutilizarlos en el mismo servidor o en otros. También tenemos la oportunidad de reutilizar la experiencia de otros administradores en nuestro provecho. Podemos ver y modificar estas plantillas utilizando la herramienta "Visor de plantillas de seguridad" (que está disponible sólo en inglés con el nombre "Security Configuration and Analisys Tool IIS Templates"), he incluida, tras la instalación del Resource Kit, dentro de la carpeta C:\Windows\ResourceKit \Internet Information Services o equivalente. También podemos invocarla escribiendo "sectemplates.msc" desde la línea de comandos. Como se aprecia en la figura 1 existen diversidad de plantillas en las que se contemplan muchos parámetros de configuración (en la captura vemos algunos referentes al registro, pero hay bastantes más). Podemos partir de dos plantillas especialmente pensadas para IIS que se encuentran dentro del directorio c:\Archivos de programa\Resource kit llamadas secureinternetwebserver.inf y secureintranetwebserver.inf. Hay que tener en cuenta que, para poder acceder a ellas con la herramienta de la figura antes hay que copiarlas al directorio C:\Windows\security\templates y volver a ejecutar el visor. Una vez que hayamos decidido cuál es la configuración que más nos conviene podemos forzar su cumplimiento y auditarla gracias la utilidad SCAT. El SCAT (Security Configuration and Analysis Tool) no está accesible directamente desde la consola de gestión sino que hay que añadirlo a mano. Abra para ello una nueva consola de administración (escriba MMC desde la línea de comandos) y desde el menú "Consola·Agregar" o "Quitar complemento…" busque y añada el complemento "Configuración y análisis de seguridad". De entrada aparecerá solamente un nodo vacío con el mismo nombre que el complemento. Para poder auditar una política de seguridad debemos crear previamente una base de datos en el complemento. Pulse con el botón secundario del ratón sobre el nodo y escoja la opción "Abrir base de datos…". En el diálogo que aparece otorgue un nombre cualquiera a la nueva base de datos y en el siguiente paso elija la plantilla de seguridad que tenga preparada del punto anterior. Una vez hecho esto, y en apariencia, no habrá pasado nada. Sin embargo en el menú contextual del nodo aparecen algunas opciones que no estaban disponibles antes. Si escogemos "Analizar el equipo ahora…" obtendremos un informe detallado que compara la configuración real de nuestro servidor con la deseada (la que hayamos escogido en el paso anterior). En la figura 2 observamos un ejemplo en el que algunas directivas aparecen con un aspa denotando su incumplimiento. Se puede obtener un informe en un archivo de texto con todos estos resultados. Si estamos seguros de que todo lo especificado en la plantilla de seguridad es lo que nos conviene solamente hay que escoger la opción "Configurar el equipo ahora…" para que SCAT fuerce automáticamente al cumplimiento de todas las directivas de seguridad. Tenga cuidado con lo que hace puesto que determinados ajustes de seguridad podrían influir en el funcionamiento normal de sus aplicaciones Web si no tiene cuidado. Como norma general no utilice plantillas en servidores de producción sin haberlas probado concienzudamente en equipos de prueba en los que los posibles fallos sean tolerables. Esta pareja de herramientas es extremadamente útil y no sólo para configurar la seguridad de IIS, sino la del sistema en general. Añádalas a su caja de herramientas si le toca hacer este tipo de trabajos de vez en cuando. IIS Lockdown Tool Hace ya cierto tiempo Microsoft presentó una herramienta destinada a aumentar de manera automatizada la seguridad de IIS mediante el uso de un asistente. IIS Lockdown Tool, que así se llama dicha utilidad, ayuda a conseguir que en nuestro servidor sólo estén activadas las características de IIS que realmente necesitamos para trabajar, cerrando el acceso a todas las demás y por lo tanto disminuyendo las posibilidades de ataque. Esta utilidad viene integrada en las propias características de IIS 6.0 con Windows 2003 Server, por lo que no será necesario instalarla en este servidor; por esto serán las aplicaciones que se ejecutan sobre Windows 2000 Server las que realmente se beneficien de su uso. La última versión disponible de la herramienta es la 2.1 (aunque ya tiene más de dos años), y se puede descargar gratuitamente desde http://www.microsoft.com/downloads/release.asp?ReleaseID=43955. Ocupa algo menos de 300 Kb y, eso sí, sólo existe en el idioma inglés. El programa no necesita instalación alguna, y al ejecutarlo muestra un asistente que se describe con detalle a continuación. En primer lugar (figura 3) se nos pregunta de manera genérica qué tipo de servidor queremos configurar, para así ofrecernos diferentes opciones de bloqueo en cada caso. Hay opciones para casi todos los gustos, cubriendo gran cantidad de productos de Microsoft que pueden trabajar conjuntamente con IIS. Para nuestro ejemplo hemos escogido un servidor Web con ASP habilitado, que es un caso muy común. Conviene marcar la casilla de la parte inferior "View template settings" si queremos obtener mayor detalle sobre el proceso que se va a realizar. En el siguiente paso del asistente (figura 4) se escogen los servicios que deseamos mantener activados. En nuestro caso vamos a dejar activado solamente el servicio Web, pues lo demás no lo necesitamos. A continuación (figura 5) se ha de decidir qué tipos de archivo queremos dejar activos en el servidor para que se interpreten. En el ejemplo hemos mantenido únicamente la extensión .ASP, y en general será la opción más adecuada pues todos los demás tipos son conocidos por su peligrosidad potencial y además se utilizan en muy raras ocasiones. Es curioso que no hayan actualizado esta herramienta para limitar la ejecución de archivos ASPX, aunque para el caso que nos ocupa (protección de aplicaciones ASP.NET) tampoco tendría mucha utilidad impedirlas ¿verdad?. En el siguiente punto (figura 6) se eliminan todos los directorios virtuales y aplicaciones que IIS instala por defecto (como los ejemplos, el manual, la administración…) que deberíamos eliminar siempre en máquinas accesibles como ya comentamos en la anterior entrega de esta serie. También se sugiere la desactivación de WebDAV, que no se suele usar en aplicaciones Web salvo que deseemos permitir la gestión remota con carpetas (poco recomendable en Internet, no tan peligroso en Intranets). Las otras dos opciones de esta ventana ajustan los permisos NTFS de forma similar a la que ya hemos visto los dos anteriores artículos, impidiendo el uso de ciertos ejecutables y anulando los permisos de escritura en los directorios de la aplicación. Del último paso se hablará en profundidad enseguida, pero le recomendamos que mantenga el ajuste por defecto. Cuando llegue al final, el asistente aplicará todos los ajustes seleccionados (tarda un poco) y dejará al servidor en un estado mucho más seguro. Asegúrese de probar a fondo sus aplicaciones tras haber utilizado IIS Lockdown Tool ya que puede haber hecho inadvertidamente algún ajuste que las afecte y a lo mejor no funcionan como es debido. No se preocupe si necesita dejarlo todo como estaba. La próxima vez que ejecute IIS Lockdown Tool detectará su anterior ejecución y le dará la oportunidad de dejarlo todo exactamente igual, para posteriormente volver a probar con una configuración diferente si así lo desea. Si fuese necesario existe la posibilidad de ejecutar IISlockd.exe en modo automático, en el que los ajustes deseados se aplican en segundo plano, sin mostrar la interfaz de usuario. Si desea información sobre cómo hacerlo deberá leer el archivo RunLockdUnattended.doc incluido en el ejecutable. Protección ante ataques desconocidos con URLScan Hasta ahora hemos visto dos útiles herramientas que ayudan a proteger el servidor Web mediante configuraciones restrictivas de seguridad. Éstas, combinadas con unos permisos bien establecidos a partir de los conocimientos que hemos adquirido en anteriores entregas, harán que nuestras máquinas con IIS estén razonablemente a salvo. Existen ataques que tienen éxito a pesar de todas estas precauciones ya que aprovechan debilidades y errores de programación que todavía no han sido descubiertos o que no se han solucionado con el correspondiente parche. Ante este tipo de ataques conviene ser proactivos y no reactivos, es decir, lo ideal sería adelantarse a su existencia de algún modo para evitar que tengan éxito aun siendo desconocidos. Microsoft publicó dos semanas después de la primera versión de IIS Lockdown Tool una nueva utilidad que sirve precisamente para esto: URLScan. En un principio se trataba de una herramienta independiente, pero ahora está incluida en la instalación de IIS Lockdown Tool, concretamente en el último paso del asistente que antes he mencionado (figura 7). La gran mayoría de los ataques sufridos por servidores Web implican la utilización de alguna URL "extraña" o construida de alguna forma fuera de lo normal. URLScan es un filtro ISAPI que analiza todas las peticiones entrantes en el servidor Web y las discrimina en función de una serie de reglas que controla un archivo de configuración. Dado que la mayoría de los ataques necesitan utilizar técnicas similares para construir las peticiones de ataque (usan caracteres extraños, codifican las URLs con juegos de caracteres fuera de lo común, usan peticiones de un tamaño muy grande para aprovechar desbordamientos de buffer…), URLScan es muy efectivo a la hora de detectarlos. Cuando descubre algo "extraño" anula la petición, la cual nunca llega a IIS y por lo tanto se evita el ataque. Los parámetros que se pueden controlar sobre el funcionamiento de URLScan son muchos y están englobados dentro de las siguientes categorías: €    Métodos de solicitud de páginas y recursos. €    Codificación sospechosa de URL. €    Presencia de determinados encabezados en las peticiones. €    Presencia de caracteres no ASCII en la URL. €    Presencia de caracteres concretos en la URL. €    La extensión de los archivos solicitados.

El asistente IIS Lockdown configura URLScan a través de las indicaciones que le vamos dando en los sucesivos pasos, y a partir de las plantillas elegidas en primera instancia. Sin embargo no se facilita interfaz de usuario alguna para controlar al detalle el modo de trabajo de este útil complemento, por lo que es necesario hacerlo de forma manual. Su comportamiento se indica a través de los parámetros contenidos en el archivo URLScan.ini, ubicado en C:\Windows\system32\ inetsrv\UrlScan o en la ruta equivalente. En la figura 8 se observa el aspecto éste. Existen en el archivo multitud de entradas para configurar y afortunadamente todas incluyen un comentario adjunto, con una breve explicación sobre su utilidad. Al igual que en el caso de la herramienta anterior la forma de acceder a la documentación detallada de URLScan es un tanto retorcida. Dentro de IISLockd.exe (ver nota en el epígrafe anterior) está el archivo URLScan.doc, en el que encontraremos explicaciones detalladas de cada posible parámetro. Le remitimos a esta documentación para ajustarlo a sus necesidades. Advertencias sobre URLScan En este punto es necesario hacer algunas advertencias, ya  que la activación de URLScan produce algunos efectos secundarios que podrían afectar al correcto funcionamiento de nuestras aplicaciones a menos que afinemos su modo de trabajo a través del mencionado archivo. Primeramente he de advertir de que, por defecto, todas las URL con caracteres no anglosajones como tildes, eñes, diéresis, etc… dejarán automáticamente de funcionar. Y esto es válido no sólo para páginas .HTML, .ASP o .ASPX, sino que se aplica de igual manera a gráficos y otros recursos sobre cuyo nombre, en muchas ocasiones, no tenemos control alguno (por ejemplo si permitimos "subir" gráficos al servidor). Podemos evitar esto cambiando el parámetro AllowHighBitCharacters para que tome el valor 1, pero esto deja abierta la puerta a posibles ataques basados en UNICODE o UTF-8. Tampoco se permiten los puntos o los caracteres codificados con % en las rutas solicitadas, lo cual es un problema en archivos con espacios en su nombre, por ejemplo. Por otra parte, tras su instalación, URLScan se coloca como el filtro de mayor prioridad en IIS, tal y como muestra la figura 9. Esto puede interferir con otros filtros o extensiones ISAPI que deban transformar de algún modo las peticiones antes de que lleguen al servidor. Éste es concretamente el caso de las extensiones de FrontPage 2000, que de hecho se deshabilitan al instalar la herramienta. Si no colocamos URLScan por debajo de este tipo de extensiones en la lista de prioridades de la figura 9 dejarán de funcionar bien, así que no queda más remedio que probar a moverlo dentro de esta lista si se experimentan problemas. Además en este caso es necesario modificar el parámetro AllowLateScanning en URLScan.ini. Otra cuestión a tener en cuenta es que cuando se rechaza una petición inadecuada, ésta jamás llega a ser recibida por IIS, por lo que no aparece reflejada en los archivos de registro (log) del servidor. URLScan permite almacenar la información de todas las peticiones rechazadas en un archivo de registro propio que es muy útil para analizar su funcionamiento y detectar intentos de ataque. También se puede especificar un mensaje a mostrar o una URL a la que redirigir al usuario cuando se anule una petición. Esto último debemos hacerlo con cuidado puesto que no es recomendable dar demasiadas pistas de que el servidor está especialmente protegido y mucho menos de cómo lo estamos protegiendo. URLScan 2.5 La versión de URLScan incluida en IISLockdown Tool es la 2.0. Sin embargo Microsoft lanzó más adelante una nueva versión, la 2.5, que añade algunas nuevas mejoras y es recomendable que hagamos la actualización. Hasta hace poco no era posible instalar esta versión de forma independiente por lo que no quedaba más remedio que instalar previamente IIS Lockdown Tool con URLScan 2.0 y luego actualizar. Sin embargo hace un año Microsoft cambio la manera de empaquetar la instalación de la herramienta de forma que se pudiera instalar sola. En la dirección http://www.microsoft.com/technet/security/tools/urlscan.mspx encontrará información sobre este herramienta y un enlace a su descarga. Esta versión permite especificar el directorio en el que se quiere colocar el registro de actividad, habilita la posibilidad de registrar los ataques mediante peticiones de gran longitud así como limitar el tamaño de dichas peticiones. Aunque la utilidad de URLScan se ve algo disminuida en IIS 6 debido a que éste trae de serie muchas de las características de aquel, sigue siendo conveniente instalarlo y configurarlo con cuidado en Windows 2003 Server. En la página mencionada se explican todos los detalles al respecto. Antes de que Microsoft sacara esta nueva versión del instalador de URLScan, existían dos descargas diferentes del producto. Una de ellas se denominaba Baseline URLScan y la otra URLScan-SRP. La diferencia entre ellas estribaba en que la variante SRP impedía las transferencias "troceadas" de información al servidor, mientras que la otra no. Esta distinción hace que SRP nos protegiese ante 10 vulnerabilidades de IIS descubiertas en 2002 que tienen que ver con ello aunque no dispongamos del parche correspondiente (y por lo tanto también lo hará con vulnerabilidades desconocidas que aparezcan usando dichas técnicas), pero como contrapartida impedirá el funcionamiento de aquellas aplicaciones que deban enviar información al servidor usando truncado. Por otra parte SRP limita el tamaño máximo de los archivos enviados a 30 Mb. Por lo demás eran idénticos. Bien, la única variante que se puede descargar ahora con el nuevo instalador es la SRP, por lo que debemos tenerlo en cuenta. En resumen Las herramientas que hemos analizado en este artículo permiten una protección para IIS eficiente y sin necesidad de muchos conocimientos. Incluso en algunos casos impedirán ataques desconocidos o sin parchear. Debemos aprender a usarlas con corrección pero es indispensable seguir actualizando los sistemas y estar atentos a las novedades de seguridad que aparecen continuamente. En la próxima y definitiva entrega de esta serie vamos a ver algunos consejos de seguridad sueltos a mayores, y aprenderemos a usar herramientas para atacar a nuestros propios sistemas y así evaluar las medidas que hemos adoptado.

blog comments powered by Disqus
autor
referencias