Principales Ventajas de IIS

Este apartado pretende dar un rápido vistazo a las principales innovaciones que ofrece IIS frente a sus antecesores, sirviendo de introducción al resto de secciones y proporcionando información variada sobre determinadas tareas de administración o características adicionales, por si el lector quisiese profundizar en ellas. No obstante, gran parte de los aspectos vistos en esta sección serán desarrollados en futuras secciones.

IIS 6 vs IIS 5 e inferior

Sobre fiabilidad y disponibilidad:

Podemos destacar las siguientes mejoras dentro de esta categorías:

  • Aparición de nuevas entidades para manejar aplicaciones web: los grupos de aplicaciones (application pools [1]). Las aplicaciones web pueden ser aisladas en estas entidades, lo que proporciona los siguientes beneficios:
    • Cada una de estas pools puede ser servida por 1 o más procesos de Windows (worker processes). Cada worker process está representado por el ejecutable w3wp.exe.
    • Cada pool está aislada de otras pools: Si una pool falla, no cae el resto. Cada aplicación que ejecuta el servidor web tiene por tanto su espacio independiente, mejorando su fiabilidad. Por tanto, si una aplicación falla, esto no arrastra a las demás aplicaciones.
    • Un fallo de una aplicación no afectará al núcleo de IIS: Aplicaciones y servidor se ejecutan en espacios distintos, de manera que si un usuario malicioso logra interrumpir la ejecución de una aplicación web dentro del servidor, esto no significa que el servidor completo deje de dar servicio.
    • La configuración de cada pool es independiente de la del resto de pools.

    Aislamiento de pools en IIS 6

    Esquema de aislamiento de pools de aplicaciones en IIS 6

    Aislamiento de pools en IIS 6 (2)

    Esquema de aislamiento de pools de aplicaciones ASP .NET en IIS 6

    • Monitorización de “salud”: Cada pool de aplicaciones se comprueba cada X tiempo y el sistema ejecutará una acción correctora automática si una pool deja de responder. Esto puede hacerse a nivel de cada worker process de la pool o bien con toda la pool. Si un worker process no responde a la monitorización de salud del servidor pasado X tiempo, IIS podría (por ejemplo) terminar dicho proceso e iniciar otro nuevo en su lugar. Si es la pool completa la que no está respondiendo adecuadamente, IIS detectará el problema y terminará la pool [2].
    • “Reciclaje” de procesos: Cada proceso puede ser “reciclado” (finalizado y vuelto a arrancar) de acuerdo a un criterio dado (consumo de memoria, de CPU,…). Si por este motivo (u otro cualquiera) no hay procesos disponibles, las peticiones entrantes se encolan hasta que los haya. Podemos encontrar más detalles acerca de cómo hace esta operación IIS en Microsoft Technet, en el artículo titulado “How Worker Process Recycling Works (IIS 6.0)” .
    • Rapid-fail Protection (RFP): Esto forma parte de la monitorización de salud de la que hablábamos anteriormente. Normalmente, cada worker process de una pool que falle o no pase un “chequeo de salud” se reiniciará automáticamente. No obstante, esto puede causar un problema si alguno de los procesos de la pool está constantemente fallando y reiniciándose, entendiendo por ello que presente múltiples fallos dentro de un periodo de tiempo preconfigurado (RFP time window). Si esto ocurre, para evitar que una pool esté usando inadecuadamente recursos del sistema y perjudicando a otras (reiniciar un proceso es una operación costosa, y más si se hace de forma muy frecuente), IIS puede desactivar la pool y ponerla fuera de servicio. Si esto último ocurre, todas las peticiones en curso o subsiguientes mostrarán en el navegador del cliente “HTTP 503 Service Unavailable” [3] .

NOTA: De esta forma IIS 6 puede proteger al servidor de aplicaciones maliciosas que están preparadas para fallar constantemente (o bien son aplicaciones legítimas siendo atacadas repetidamente), y que puedan colapsar el servidor o disminuir significativamente su capacidad de servicio (DoS)

Sobre manejo y configuración:


Una de las principales características que IIS 6 posee de cara a la administración es un nuevo interfaz de administración vía web, de instalación opcional. Esta herramienta de administración remota se denomina “Remote Administration (HTTP) tool” y se puede instalar a través del panel de control. Una vez instalada, puede accederse a través de https (Ej.: https://nombre_del_host:8098/). Por razones de seguridad, no se recomienda su instalación en caso de que no se prevea su uso. Una instalación por defecto no instala este componente y tendremos que hacer una instalación explicita del mismo [4] .

Un elemento muy importante en el aspecto de manejo y configuración es la metabase . La mayoría de opciones de IIS se guardan en esta metabase. En IIS 6 la metabase está formada por ficheros XML (en concreto dos: Metabase.xml y MBSchema.xml). Además, es importante saber que IIS crea un histórico de hasta 10 versiones de la metabase cada vez que se modifica (guardando los cambios hechos de una versión a la siguiente). Las copias de la metabase se guardan en \windows\system32\Inetsrv\history y de esta forma podremos importar en IIS la última versión “buena” conocida de la metabase [5] .

Por otro lado, pero también relacionado con la metabase , IIS permite hacer backups completos de la metabase, incluso con encriptación, para poder mover o restaurar la configuración del servidor cuando sea necesario. Esto puede hacerse a través de la herramienta gráfica de configuración de IIS que veremos más adelante (IIS Manager), haciendo clic derecho en el nombre del servidor y a través de la opción correspondiente del submenú “Todas las tareas”.

Por último, cabe destacar que los cambios en la metabase no tienen por qué suponer reiniciar IIS, ya que muchos cambios se detectan e incorporan rápidamente sin necesidad de ello.

Sobre escalabilidad y rendimiento:

IIS 6 incorpora los siguientes elementos en su infraestructura para lograr un mejor rendimiento y que las aplicaciones web que se ejecutan sobre el mismo logren una mejor escalabilidad:

  • HTTP.sys : Es un nuevo driver en modo kernel que pasa las peticiones a los pools de aplicaciones. Dicho driver está integrado en la pila TCP/IP del sistema operativo y, al funcionar en modo kernel en lugar de modo usuario, consigue un mejor rendimiento.
  • Web gardens: Se denominan así aquellas pools de aplicaciones que son servidas por múltiples worker processes. Si un proceso está ocupado, otro puede tomar su lugar para servir a la aplicación, por lo que se disminuyen los tiempos de espera de los usuarios de las aplicaciones contenidas en dicho pool.
  • Afinidad con CPU: Las pools pueden vincularse a cores o CPUs concretas en el caso de que existan varias. De esta forma se puede balancear la carga o priorizar determinadas aplicaciones frente a otras “a mano”.
  • Gestión avanzada de caché de páginas y ASP que mejora el rendimiento respecto a versiones anteriores
  • Optimización del uso de recursos: IIS finalizará las pools que han estado sin actividad durante un tiempo determinado. Una pool tampoco necesitará recursos hasta que sirva alguna petición, por lo que no se usarán recursos a menos que sea realmente necesario. De esta manera se intenta optimizar al máximo el uso de recursos por parte de IIS
  • Se proporcionan herramientas de control de ancho de banda y CPU consumido por IIS [6]
  • También se han experimentado mejoras en el sistema de log. Por ejemplo, el log tiene ahora un nuevo formato binario que mejora su rendimiento.

Sobre seguridad:

La seguridad de un servidor web es un aspecto de importancia capital y cada nueva versión de IIS ha ido introduciendo nuevas mejoras encaminadas en ese aspecto. Sobre la versión 6 podemos enumerar las siguientes mejoras:

  • IIS no se instala por defecto en Windows Server 2003 (excluyendo la Windows 2003 Web Edition). De hecho, sólo debería instalarse si realmente se va a usar. IIS puede ser un vector de ataques para un sistema operativo y, si no le vamos a dar ningún uso, no tiene sentido que lo instalemos y así abramos una posible vía de ataque. Una instalación no notificada o innecesaria de IIS puede quedar desatendida, no actualizada o mal configurada y de esta forma podemos estar abriendo inadvertidamente una vía de ataque a nuestro sistema. Por otra parte, la potencial instalación no autorizada de IIS puede desactivarse con políticas de grupo de Windows 2003 (Configuración del Equipo --> Plantillas Administrativas --> Componentes de Windows --> Internet Information Services --> Impedir la instalación de IIS) .
  • IIS se instala en modo “bloqueado”: Una instalación por defecto de IIS únicamente tiene activos los servicios de FTP, SMTP (mail), NNTP (news) y Web, aunque este último sólo para contenido estático. Si queremos servir alguna clase de contenido dinámico (que es inherentemente más propenso a presentar fallos de seguridad) o cualquier otro servicio, debemos activarlo expresamente.
  • Habilitación/Deshabilitación individualizada de extensiones de servidor web (web service extensions), como ASP .NET, WebDav, Perl, etc. Las extensiones del servidor web dotan al mismo de funcionalidades adicionales, permitiendo extender las posibilidades del servidor hasta donde deseemos y adaptarlo a cualquier uso que le queramos dar. Del mismo modo que no debemos instalar IIS si no lo vamos a usar, tampoco conviene habilitar extensiones para las que los usuarios de IIS no tengan uso. Por ejemplo, si sabemos que nuestro IIS sólo va a servir aplicaciones PHP, no tiene ningún sentido dejar habilitada la extensión que permite servir contenido ASP .NET. IIS nos permite controlar de forma minuciosa qué extensiones tenemos activas en cada momento y desactivar una por una cualquiera de ellas. Como medida de seguridad adicional, por defecto (tras la instalación inicial) casi ninguna está habilitada. Esto se hace así para facilitar una política de instalación de sólo aquellos componentes que sean estrictamente necesarios.
  • Sólo se sirven tipos MIME autorizados: Un usuario sólo podrá solicitar tipos de archivos autorizados previamente en el servidor, denegando peticiones de aquellos tipos MIME desconocidos. De esta forma podemos evitar, por ejemplo, la descargas de archivos de configuración (.conf, .ini) u otros archivos a los que no nos interesa que ningún cliente acceda.
  • Las cuentas de usuario que IIS usa por defecto para servir las páginas no tienen permisos para ejecutar comandos con el símbolo del sistema cmd.exe (como por ejemplo .bat, .exe,…). Esto es una medida preventiva para ataques por inyección de comandos del operativo, que podrían dañar gravemente el contenido del servidor.
  • Mejoras en autenticación: Soporte para autenticación Digest avanzada y otros métodos de seguridad más elevada (como Integrated Windows Authentication).
  • Integración con las tecnologías de seguridad del sistema operativo.
    •  
A modo de resumen, la siguiente imagen muestra los cambios principales entre versiones de IIS, desde la 4 a la 6.

IIS 7 vs IIS 6

IIS 7 es una evolución de IIS 6 que mejora a este último en múltiples aspectos y sobre todo cambia el interfaz de usuario que permite usar todas las funcionalidades que ofrece. Se han introducido cambios a nivel de extensibilidad, seguridad, control y fiabilidad que podemos encontrar enumerados en la siguiente web. En esta sección describiremos aquellos cambios más importantes de forma concisa. Para consultar más en profundidad en qué consisten los mismos se recomienda consultar, además de la web dada anteriormente, este enlace y este otro.

Arquitectura de IIS 7

La arquitectura de IIS 7 se ha rediseñado para ser más modular que la de IIS 6, mejorando la aproximación que ya se había tomado en la versión 6 en pos de una mayor modularidad y capacidad de configuración, activación y desactivación de funcionalidades según las necesidades del cliente. Para permitir una mayor capacidad de activación y desactivación de características, aspectos que antes estaban integrados en el proceso principal de IIS 6 se han sacado fuera del mismo, permitiendo así al usuario decidir si las desea o no y que de esta forma el servidor puede ser adaptado mucho más eficazmente a unas necesidades concretas. La siguiente imagen muestra un diagrama de la arquitectura de IIS 7.

Gracias a la capacidad de activar y desactivar módulos de manera más pormenorizada ahora es posible configurar un servidor web mucho más ligero y adaptado exactamente a unos requisitos concretos, reduciendo aún más la superficie de ataque potencial del mismo. Aspectos como la autenticación anónima o básica, que como veremos en IIS 6 están integradas dentro del propio servidor, ahora pueden ser no instaladas, reduciendo así los recursos ocupados por el servidor y cerrando posibles agujeros de seguridad.

Otro aspecto muy importante de esta nueva versión es que se ha mejorado su extensibilidad. Se han introducido dos nuevas APIs de IIS llamadas MWA (Microsoft.Web.Administration) y MWM (Microsoft.Web.Management), de manera que resulte sencillo para un programador crear módulos que puedan ser conectados al servidor con determinadas funcionalidades que el usuario necesite, y que serán tratados como los módulos integrados en el propio servidor "de serie". Microsoft ofrece a su vez módulos que siguen estas APIs en la siguiente dirección, con el objetivo de que sean usados por aquellos usuarios que necesiten esta clase de funcionalidades: www.iis.net/downloads.

Como hemos dicho, todos los módulos de IIS 7, tanto desarrollados por un usuario como los que proporciona el fabricante pueden ser desactivados o activados a voluntad. Se proporcionan una gran cantidad de módulos con el servidor y cada uno de ellos cumple con una funcionalidad concreta y diferente a las de los demás. Aunque no enumeraremos todos los módulos independientemente, si podemos citar una serie de categorías en las que se pueden dividir:
  • Módulos HTTP: Usados para tareas de gestionar peticiones HTTP, como responder a la información enviada por el cliente en las cabeceras HTTP, gestionar errores HTTP y redirecciones.
  • Módulos de seguridad: Usados para tareas de seguridad en peticiones HTTP, como habilitar esquemas de autenticación, autorizar a determinadas URLs o filtrado general de peticiones.
  • Módulos de contenidos: Usados para procesar peticiones de ficheros, retornar páginas por defecto en los casos en los que hagan falta o listar contenidos de directorios.
  • Módulos de compresión: Que permiten comprimir las respuestas con el algoritmo Gzip o bien comprimir contenido estático para optimizar el ancho de banda.
  • Módulos de caché: Usado para guardar las peticiones realizadas en memoria de forma que se puedan servir más rápidamente en futuras peticiones, mejorando el rendimiento del servidor.
  • Módulos de log y diagnóstico: Usados para procesar información de log, notificar eventos y llevar un seguimiento de las peticiones en ejecución.

Ejemplos concretos de dichos módulos son:

  • FTP Publishing Service: Permite publicar contenido por FTP estableciendo conexiones seguras con SSL.
  • Administration Pack: Proporciona un interfaz de usuario para la administración de las características de IIS 7.
  • Application Request Routing: Permite distribuir las peticiones HTTP que se hagan al servidor basado en el contenido de las cabeceras HTTP de las mismas o bien en variables del propio servidor. También permite hacer tareas de balanceo de carga.
  • Database Manager: Que permite gestionar bases de datos locales o remotas desde el IIS Manager.
  • Media Services: Permite servir contenidos multimedia ricos y otros contenidos similares desde IIS.
  • URL Rewrite: Es un mecanismo de reescritura de URLs basado en reglas que permite cambiar las URL de las peticiones antes de que sean procesadas por el servidor.
  • WebDAV: Permite a los autores de las web publicar contenidos de forma segura mediante este protocolo, asi como gestionarlo desde la propia herramienta de gestión de IIS 7.
  • Web Deployment Tool: Sincroniza servidores IIS 6 e IIS 7, permite migrar de la versión más antigua a la más moderna y desplegar las aplicaciones web en IIS 7.

Seguridad de IIS 7

Estos son los principales cambios hechos a aspectos de seguridad en IIS 7 respecto a la versión 6:


Última modificación: sábado, 31 de julio de 2010, 12:58