You are on page 1of 10

Instalación y

Administración de IIS 6.0


Ampliación de Sistemas Operativos
Rayco J. Araña Rodríguez, Samuel Suárez Sánchez

06/07
Índice
Índice........................................................................................... ¡Error! Marcador no definido.
Introducción ............................................................................................................................. 3
Arquitectura de IIS 6.0 .............................................................................................................. 4
Instalación y Configuración ....................................................................................................... 5
Creación de un Sitio Web ......................................................... ¡Error! Marcador no definido.
Creación de una aplicación Web en directorio virtual ............... ¡Error! Marcador no definido.
Configurando el servidor para hacer seguro .............................................................................. 6
Mejores prácticas .................................................................................................................. 6
Aislamiento y reciclado de aplicaciones..................................................................................... 8
Worker Process Isolation Mode............................................................................................. 8
IIS 5.0 Isolation Mode............................................................................................................ 8
Aislamiento de Aplicaciones Web.......................................................................................... 9
Grupos de Aplicaciones Web ............................................................................................. 9
Recomendaciones ........................................................................................................... 10
Monitorizar IIS y ASP.NET .................................................................................................... 10
Introducción
En el siguiente documento vamos a introducirnos a la administración de Internet Information
Server 6.0. En un primer lugar, comentaremos la arquitectura y los elementos principales de
esta. Luego comenzaremos con la instalación y configuración del Servidor. Crearemos alguna
aplicación web de ejemplo y luego veremos cómo podemos aislar las aplicaciones unas de
otras y optimizar el rendimiento y la seguridad del servidor.
Arquitectura de IIS 6.0
La arquitectura de Internet Information Server 6.0 es completamente nueva respecto a
versiones anteriores. Se introduce un aislamiento de los procesos que sirven los sitios web y
una total independencia entre el servicio WWW y el resto de servicios de que dispone el
servidor.

Antes de entrar en detalle en la arquitectura del servidor, vamos a ver los cuatro protagonistas
principales dentro de la nueva arquitectura.

Inetinfo.exe. Es el antiguo proceso principal. Ahora se ha reducido su función a


soportar la Metabase, que es el conjunto de configuraciones del servidor, y los
servicios FTP, SMTP y NNTP.
http.sys. Es un controlador del subsistema de red del sistema operativo que se
encarga de enviar y recibir mensajes HTTP. Se ejecuta en modo Kernel, lo que
proporciona mayor rapidez de comunicación que en versiones anteriores, donde se
usaba Winsock, que se ejecutaba en modo Usuario. Esto producía una pérdida de
rendimiento al tener que pasar dos veces de modo usuario a modo Kernel para hacer
llegar los datos al proceso que trata la solicitud. Con el uso del controlador en modo
Kernel, la comunicación es directa y se aumenta la eficiencia.
W3SVC. Es el proceso encargado de administrar los “Worker Process” o procesos de
trabajo.
Worker Process. Son los procesos encargados de procesar y servir las solicitudes Web.
Trabajan en modo usuario y tienen una organización respecto a las Webs que sirven,
configurables por parte del administrador.

La arquitectura de IIS 6.0 es como se muestra en la figura. Por un lado vemos que lo único que
se ejecuta en modo kernel es el http.sys y como la comunicación entre esta y los diferentes
Worker Process es directa. También vemos como los Worker Process se organizan en Grupos
de Aplicaciones (Application Pools), que permiten aislar los Sitios Web unos de otros. Cada
Worker Process hace uso de los filtros ISAPI, que son los encargados de interpretar los
recursos que se han solicitado. Ejemplos de filtros ISAPI pueden ser ASP, ASP.NET o PHP.

Una de las mejoras de seguridad de IIS 6.0 es la posibilidad de habilitar o deshabilitar un


determinado filtro ISAPI de forma general. A partir de ese momento, todo recurso asociado a
ese filtro no se servirá, dando un mensaje de error al quien lo solicita.

Instalación y Configuración
IIS 6.0 viene incluido en Windows 2003 Server como un servicio instalable. No viene instalado
por defecto como en versiones anteriores. Para instalarlo tenemos dos métodos manuales y
uno automático. Los métodos manuales son, hacer uso del Asistente Administre su Servidor,
donde únicamente tendremos que seleccionar la opción de agregar un nuevo servicio a
nuestro servidor y seguir los pasos del asistente indicando que queremos instalar el servidor
web. Una de las pocas opciones que nos mostrará al instalarlo es si queremos soporte para
ASP.NET 1.0 y 2.0. Otra forma es haciendo uso del tradicional Agregar o Quitar Programas que
se encuentra en el Panel de Control.

La configuración inicial por defecto de IIS 6.0 está muy restringida, al contrario que versiones
anteriores, que ante administradores poco experimentados suponía un potencial problema de
seguridad. En esta configuración inicial, IIS 6.0 solo sirve HTML estático y solo da el servicio
WWW.

La creación de un Sitio Web o un directorio virtual es tan sencillo como hacer click con el botón
derecho en el árbol izquierdo de la consola de administración de IIS y seleccionar la opción de
crear correspondiente. Una vez creada, solo nos quedará darle a ver sus propiedades con el
botón derecho para configurarlo.
Configurando el servidor para hacer seguro
Para configurar de forma segura nuestro servidor, en principio debemos navegar por la
interfaz gráfica del Administrador de IIS para configurarlo. Aún así, existen algunas utilidades
que nos pueden ayudar a detectar configuraciones potencialmente peligrosas o de bloqueo
intentos de ataques.

URLScan. Es una utilidad que se acopla a IIS y su función es bloquear solicitudes


dañinas y evitar así que lleguen al servidor. Es muy útil para versiones 5.1 y anteriores
del servidor, si bien casi toda su funcionalidad está implementada en la versión 6. Sin
embargo, es interesante para establecer un bloqueo personalizado de solicitudes en
base a patrones. Las restricciones que es capaz de establecer son:
o Solicitudes de direcciones URL largas.
o Solicitudes con juegos de caracteres alternativos.
o Solicitudes que contienen métodos no permitidos.
o Solicitudes que coinciden con algún patrón.
IISLockDown. Es un asistente de configuración de IIS en base a plantillas. Incluye otros
servidores como Exchange. Es muy útil para versiones 5.1 y anteriores para establecer
una configuración inicial segura. No es necesario para IIS 6.0 ya que su configuración
inicial es “segura”.
MS Baseline Security Analyser. Es un programa que examina nuestra máquina en
busca de configuraciones potencialmente inseguras. No se limita a IIS, sino que incluye
el sistema operativo y otros servidores como SQL Server. También se ocupa de la
búsqueda de actualizaciones de seguridad no instaladas. Es recomendada su
utilización incluso para PCs de uso personal.

Mejores prácticas
A continuación vamos a ver algunas recomendaciones a la hora de configurar nuestro servidor
IIS. Muchas de estas configuraciones son aplicables no solo a IIS, sino a cualquier servidor.

No instalar IIS en un servidor donde no va a ser usado ya que con ello estamos
exponiendo nuestro servidor al tener una superficie atacable mayor.
No instalar servicios de IIS que no vamos a usar o deshabilitarlos si vamos a dejar de
usarlos por un tiempo.
No descargar o ejecutar programas desde fuentes no confiables. Es más, no navegar
por Internet o usar el servidor como un equipo más.
Mantenerse al día en actualizaciones de seguridad o definiciones de virus.
o Darse de alta en lista de correo o RSS de seguridad como los boletines de
seguridad de Microsoft.
Usar NTFS y restringir el acceso de las cuentas de red al sistema de ficheros. Muy
recomendable restringir los permisos de escritura de la cuenta que por defecto se usa
para los usuarios anónimos IUSR_ComputerName, donde ComputerName es el
nombre del servidor.
Almacenar ficheros ejecutables en directorios separados de nuestro servidor, así
evitamos ejecuciones de otras cuando una tiene un fallo de seguridad.
Crear un grupo para todas las cuentas de usuarios anónimas.
No permitir la ejecución de nada a los grupos de usuarios anónimos.
Restringir las direcciones IP desde las que se pueden conectarse al servidor si vamos a
administrar IIS de forma remota.
Asignar siempre los permisos más restrictivos a cualquier cuenta o aplicación.
No habilitar los siguientes permisos en la configuración del Sitio Web o Directorio
Virtual:
o Acceso al código fuente de secuencias de comandos
o Escritura
o Ejecución de Secuencias de comandos y ejecutables
Usar una partición diferente (en el mismo disco u otro) a la del sistema para almacenar
las diferentes Webs.
No instalar Kit de Recursos en el servidor de producción.
Deshabilitar la depuración de las aplicaciones ASP y ASP.NET en el servidor de
producción.
Aislamiento y reciclado de aplicaciones
Cuando tenemos un servidor web que es compartido por más de una aplicación web, puede
ocurrir que un mal funcionamiento de una afecte al servidor y por tanto al resto de
aplicaciones web. Este mal funcionamiento puede ser un bucle infinito que produce una
respuesta enorme con un uso de CPU y memoria muy alto o un fallo de seguridad. Visto esto,
sería muy interesante que por un lado, podamos agrupar las distintas aplicaciones para que un
fallo de seguridad no afecte a otras aplicaciones que se encuentran en otro grupo o poder
cerrar aplicaciones web que tienen un mal funcionamiento.

En este sentido, IIS 6.0 introduce un nuevo modo de aislamiento, como pudimos ver en la
arquitectura, llamado Worker process isolation mode. Además tenemos el IIS 5.0 isolation
mode o también conocido como el modo de compatibilidad, que aunque permite aislar
aplicaciones web, no lo permite a la escala de grupos como el nuevo modo introducido en IIS
6.0.

Cuando hacemos una instalación limpia del servidor, se instala en modo Worker process
isolation por defecto. Sin embargo cuando lo que hacemos es una actualización desde IIS 5.1 o
anterior, el modo por defecto es el de compatibilidad.

Como es de imaginar, no es posible la ejecución de ambos modos a la vez y la recomendación


es usar el modo Worker process isolation. Para probar antes si no existe ningún problema con
este modo cuando estamos ante una migración desde versiones anteriores, se recomienda
instalar las aplicaciones en una máquina que no sea el servidor de producción.

Worker Process Isolation Mode


Como hemos comentado hace uso de la nueva arquitectura de Internet Information 6. Es más
robusto y se obtiene una mayor disponibilidad del servidor. Proporciona mayor seguridad al
poder crear los grupos de aplicaciones de forma independiente unas de otras, pudiendo
asignarle identidades a cada grupo, como veremos en más adelante. Por defecto, la identidad
que se asigna es NetworkService, que tiene un acceso mucho más restringido al sistema de la
identidad LocalSystem.

IIS 5.0 Isolation Mode


Como hemos comentado es usada principalmente para proporcionar compatibilidad con
aplicaciones desarrolladas para funcionar con IIS 5.1 o anterior. No se recomienda su uso a
menos que el modo Worker Process Isolation no funciona. Es menos seguro, aunque es más
seguro este modo que versiones anteriores del servidor. Usa la cuenta LocalSystem como
identidad de los procesos, que tiene habilitado el acceso y modificación de casi todos los
recursos del sistema y no solo los referentes a IIS.
Aislamiento de Aplicaciones Web
El aislamiento de las aplicaciones Web es posible en ambos modos, si bien las posibilidades de
configuración son distintas. En este documento nos vamos a centrar en el nuevo modo, por ser
el más seguro y con mayor rendimiento.

Grupos de Aplicaciones Web


Son conjuntos de aplicaciones a las que da servicio un Worker Process. Es posible configurar el
grupo para que le de servicio más de uno y crear las llamadas WebGardens. Su ejecución es
totalmente independiente de otros grupos, con lo que un error en una aplicación de otro
grupo no afecta de forma alguna al resto de grupos. La configuración de los grupos es
independiente entre sí, aumentando las posibilidades de una configuración más ajustada al
perfil de funcionamiento de la aplicación.

Tanto los Sitios Web como los directorios virtuales se pueden asignar a un grupo de
aplicaciones determinado. Si no se especifica ninguno en la creación de estos, se asigna al
grupo por defecto.

Las configuraciones que podemos realizar dentro de un grupo de aplicaciones se recogen en


cuatro pestañas dentro de la ventana de configuración:

Reciclaje. Son opciones relacionadas con el reciclaje de las aplicaciones, es decir,


reiniciar los Worker Process para refrescar las aplicaciones, liberar memoria y mejorar
el rendimiento. Además permite mantener en funcionamiento aplicaciones
problemáticas que tienen algún problema conocido que produce su mal
funcionamiento mientras se está buscando una solución. El reciclaje se hace en base a
eventos configurables.
Rendimiento. Son opciones relacionadas con cómo se distribuye la carga de las
aplicaciones. Podemos asignar el grupo a una CPU especifica, cerrar los procesos del
grupo si hay inactividad para ahorrar recursos, limitar el tamaño de las colas o agregar
Worker Process al grupo.
Mantenimiento. Vela por la disponibilidad de los Worker Process, reiniciándolo si no
hay respuesta. También se permite el reinicio según consumo de CPU o la protección
rápida contra errores, que deja de dar servicio debido a los continuos errores
producidos por una aplicación, para ahorrar recursos.
Identidad. Permite cambiar la cuenta de usuario usada por los Worker Process.
Recomendaciones
Ahora vamos a ver una serie de recomendaciones a seguir a la hora de configurar los grupos de
aplicaciones. Es importante decir algunas recomendaciones parecen contradecirse, y es que en
según qué casos puede ser interesante uno o otra cosa.

Crear un grupo por cada Sitio Web.


Configurar una cuenta de usuario con los mínimos permisos (por ejemplo que
pertenezca al grupo IIS_WPG) para cada uno de los grupos de trabajo.
Aislar las aplicaciones en periodo de test de las que están en producción en diferentes
grupos.
Usar grupos únicos para aplicaciones que requieran características únicas.
Agrupar aplicaciones que sean críticas.
Agrupar aplicaciones no críticas para conservar recursos del servidor.
Agrupar aplicaciones de un mismo cliente, si estamos prestando un servicio de
hospedaje a varios clientes.

Monitorizar ASP.NET
Una vez tenemos nuestro servidor funcionando, es importante que podamos medir diferentes
parámetros del mismo, para comprobar su correcto funcionamiento, así como establecer
alarmas si determinados parámetros tienen valores determinados. Para ello tenemos el
llamada Performance Counter o Medidores de rendimiento, tanto a nivel de sistema como a
nivel de aplicación. Con ello podemos saber al instante si algo va mal. Para acceder a esta
característica podemos irnos al Monitor del Sistema, que podemos encontrar en Herramientas
Administrativas, que a su vez se encuentra en el panel de control.

En la interfaz que se nos presenta podemos establecer valores que medir, de entre los que se
encuentran los referentes a nuestro servidor. Además podemos establecer alarmas, indicando
umbrales para los parámetros medidos.

You might also like