[TUTORIAL] Internet Information Services | Configuración de IIS 7.5 para alojar múltiples Sitios Web – Parte 1/3

IIS es el rol de servidor de Microsoft que permite alojar Aplicaciones y Sitios Web. Normalmente instalamos este rol cuando utilizamos Sharepoint, servicios de Certificados de Active Directory u otros componentes que requieren de él. Sin embargo, también podemos instalar dicho rol para alojar la web institucional de nuestra empresa.

En algunos escenarios, requerimos configurar varios sitios web, y contamos con solo pocoas direcciones IPs. ¿Cómo configurar en forma segura varios sitios web a la vez en el mismo servidor y con una sola IP disponible pública? Este tutorial intenta explicar, paso a paso, como lograr una configuración standard de un servidor IIS 7.5 con capacidades multi-site, permitiendo subir contenido a cada sitio mediante protocolo FTP.

Este tutorial forma parte de tres entregas. En esta primera parte vamos a realizar toda la preparación del Servidor, Carpetas de Publicación y Cuentas de Servicio.

 

[toc]

 

Introducción

Objetivo

El objetivo de esta publicación es demostrar cómo Internet Information Services (IIS) puede brindar un soporte robusto para alojar múltipiles sitios web en modo “Shared Hosting”, brindando protección aislada para cada tenant y acceso para publicación por FTP.

 

Audiencia

Este documento está dirigido a Consultores, Profesionales IT y personas que desarrollan tareas de Consultoría, Administración y Soporte de Windows Server o que simplemente están interesados en aprender nuevas cosas.

 

Comentarios y Corrección de Errores

Hemos realizado nuestro mejor esfuerzo para no cometer errores, pero al fin y al cabo somos seres humanos. Si deseás reportar algún error o darnos feedback de qué te pareció esta publicación, por favor no dejes de comunicarte con nosotros a través de correo electrónico a la siguiente dirección: info@tectimes.net.

 

Alcance

Entender cuál es el alcance de la publicación nos ayuda a tener una expectativa real de lo que encontraremos en la misma, de modo tal que quién lo lee no espere ni más ni menos de lo que encontrará. Vamos a describir el escenario de trabajo, tecnologías alcanzadas y plan de trabajo en alto nivel.

 

Objetivo Técnico

El objetivo técnico de esta publicación es poder realizar la instalación del rol IIS 7.5 y la configuración de varios sitios web utilizando las posibilidades “multi-site” de este rol en Windows Server 2008 R2, de modo tal que:

  • Se puedan alojar varios sitios web por el protocolo HTTP simultáneamente.
  • Se pueda usar una sola dirección IP pública (privada para fines de laboratorio).

 

Como resultado, tendremos una implementación básica de IIS 7.5 y la posibilidad de alojar diferentes sitios web (que pueden ser clientes) bajo el mismo puerto y dirección IP.

 

Tecnologías Alcanzadas

Esta publicación puede aplicarse a:

  • Internet Information Services 7.
  • Internet Information Services 7.5.
  • Windows Server 2008 Standard.
  • Windows Server 2008 Enterprise.
  • Windows Server 2008 Datacenter.
  • Windows Server 2008 R2 Standard.
  • Windows Server 2008 R2 Enterprise.
  • Windows Server 2008 R2 Datacenter.

 

Escenario de Trabajo

El diagrama de trabajo propuesto es el siguiente:

 

Diagrama de Trabajo
Diagrama de Trabajo

 

IIS01

Será nuestro servidor IIS. Contamos con un equipo virtualizado con el siguiente hardware:

 

  • 2 Procesadores.
  • 1 GB de Memoria RAM.
  • 1 Disco de 80 GB para el sistema operativo: Unidad C.
  • 1 Disco de 80 GB para los Sitios Web: Unidad E.
  • 1 Placa de Red.

Dicho equipo cuenta con el siguiente software:

  • Windows Server 2008 R2 con todos los updates.

Los datos del equipo son los siguientes:

 

  • Nombre: IIS01
  • Dirección IP: 192.168.1.235 (observese que tiene una sola)
  • Gateway: 192.168.1.1
  • Grupo de Trabajo: WORKGROUP

 

Gateway / Firewall

Nuestro Gateway nos brinda seguridad desde el exterior y la dirección IP pública a través de NAT. Para nuestro laboratorio no tiene mucha importancia, pero es importante para ambientes pre-productivos o de producción. Los datos de nuestro Firewall con los siguientes:

 

  • Dirección IP: 192.168.1.1
  • Dirección IP Pública: [RESERVADA]
  • Publicaciones de servicio: ninguna.

 

DESKTOP01

Además, contamos con un equipo de escritorio para hacer la prueba de apertura de páginas web con los siguientes datos:

 

  • Dirección IP: 192.168.1.241

 

DNS

Por razones de simplicidad de este tutorial, no vamos a configurar publicaciones para el servidor Web. La forma de probar que nuestra solución es capaz de alojar varios sitios web será utilizando un servidor DNS de Microsoft y creando las zonas DNS de los dominios que utilizaremos como prueba, y creando su correspondiente registro “WWW”. De esta forma, cuando el equipo DESKTOP01 intente abrir una de ellas, el resultado apuntará a nuestro servidor IIS01 de la LAN.

Esto no cambia en nada el objetivo del tutorial, dado que seguimos respectando las premisas del mismo. Esta simplicidad se hace solo para que el artículo no abarque ítems que no son el foco de la misma.

Por esta razón, nuestro equipo DESKTOP01 tendrá como servidor DNS a este DNS interno, y dentro del DNS interno crearemos las zonas públicas necesarias para que los siguientes sitios, al ser buscados, tengan apuntamientos internos:

 

 

Fuera de Alcance

Se deja fuera de alcance de este tutorial:

 

  • La configuración de Firewall de frontera (TMG, ISA u otros).
  • La publicación de los sitios web a través del Firewall de frontera.
  • La utilización de AppPoolIdentity de IIS 7 o superior. Para este tutorial se han elegido utilizar cuentas locales del sistema operativo.
  • La infraestructura de Dominio: para este tutorial se utiliza un servidor stand-alone.

 

Plan de Trabajo

El plan de trabajo completo es el siguiente:

  • Preparación del Servidor.
  • Instalación de Feature IIS 7.5 Server de Windows Server 2008 R2.
  • Configuración de Carpetas de Publicación.
  • Configuración de Cuentas de Servicio.
  • Configuración de Sitios Web.
  • Configuración de DNS Interno para Pruebas.
  • Prueba de Acceso a Sitios Web sin Firewall.
  • Configuración de publicación FTP.
  • Prueba de Acceso a FTP sin Firewall.
  • Configuración de Firewall de Windows.
  • Prueba de Acceso a Sitios Web y FTP con Firewall.

 

En esta primera parte, se desarrollarán los primeros puntos hasta “Configuración de Cuentas de Servicio”. El resto de las entregas se encuentran en “Publicaciones Relacionadas” al final de la página.

 

Desarrollo de la parte 1/3 del Tutorial

Preparación del Servidor

La preparación del servidor es la instancia donde vamos a dejar lista la estructura y configuración de:

  • Discos.
  • Red.
  • Firewall.

 

Discos

Nuestra estructura de discos es la siguiente:

 

Estructura de Discos
Estructura de Discos

 

Contamos con una Unidad C para el sistema operativo, y una Unidad E para los datos de nuestros sitios web. Es importante contar con una unidad separada para estos últimos datos, dado que nos brinda mayor aislamiento.

El tamaño de las unidades dependerá de la información que vayamos a alojar dentro. En nuestro caso, elegimos para este laboratorio dos discos de 80 GB.

 

Red

Contamos con, al menos, una placa de red con dirección IP privada (de nuestra LAN). Los protocolos habilitados para dicha placa son los siguientes:

 

Protocolos de Red habilitados
Protocolos de Red habilitados


 

Como vemos, hemos deshabilitado cualquier protocolo que no sea afin a nuestro objetivo: un servidor Web. Hemos dejado solamente dos protocolos habilitados:

  • QoS Packet Scheduler: relacionado con calidad y control de tráfico de red.
  • Internet Protocol Version 4 (TCP/IPv4): por supuesto, el protocolo IPv4.

 

El objetivo de deshabilitar otros protocolos es reducir la superficie de ataque de nuestro servidor.

 

Firewall de Windows

Para simplificar la configuración inicial, vamos a deshabilitar nuestro Firewall:

 

Firewall Deshabilitado
Firewall Deshabilitado

 

Instalación de Feature IIS 7.5 Server de Windows Server 2008 R2

Llegó el momento de realizar la instalación del rol IIS 7.5 sobre nuestro Windows Server 2008 R2. Tenemos varias formas de hacerlo:

  • Mediante “Add or Remove Roles” de Windows Server.
  • Mediante Microsoft Web Plataform.

 

Para este caso, vamos a elegir la primera opción. Para ello vamos a ir a “Server Manager” y elegiremos el grupo “Roles” y la opción “Add Roles”:

 

Add Roles de Windows Server 2008 R2
Add Roles de Windows Server 2008 R2

 

Se abrirá el asistente para agregar roles. Vamos a darle siguiente:

 

Asistente para agregar roles de Windows Server 2008 R2
Asistente para agregar roles de Windows Server 2008 R2

 

Vamos a elegir el rol “Web Server (IIS)”:

 

Elección del rol Web Server (IIS) del asistente para agregar roles de Windows Server 2008 R2
Elección del rol Web Server (IIS) del asistente para agregar roles de Windows Server 2008 R2

 

El asistente nos mostrará una introducción al rol seleccionado. Le damos siguiente:

 

Asistente para agregar el rol IIS en Windows Server 2008 R2.
Asistente para agregar el rol IIS en Windows Server 2008 R2.

 

Llegó el momento de elegir los servicios del rol a instalar. Si bien no es el objetivo del tutorial explicar cuáles son los servicios del rol IIS, vamos a seleccionar algunos que comúnmente son utilizados en entornos de desarrollo / producción de sitios y aplicaciones web Microsoft. Vamos a elegir los siguientes servicios:

 

Lista de Servicios a elegir (primera parte).
Lista de Servicios a elegir (primera parte).

 

Lista de Servicios a elegir (segunda parte).
Lista de Servicios a elegir (segunda parte).
Lista de Servicios a elegir (tercera y última parte).
Lista de Servicios a elegir (tercera y última parte).

 

Como vemos, los servicios son varios:

  • Static Content.
  • Default Document.
  • Directory Browsin.
  • HTTP Errors.
  • HTTP Redirection.
  • ASP.NET.
  • .NET Extensibility.
  • ISAPI Extensions.
  • ISAPI Filters.
  • HTTP Logging.
  • Request Monitor.
  • Basic Authentication.
  • Request Filtering.
  • Static Content Compression.
  • Dynamic Content Compression.
  • IIS Management Console.
  • FTP Service.
  • FTP Extensibility.

 

En la próxima pantalla se nos mostrará un resumen de la elección, y le damos en Install:

 

Asistente para agregar el rol IIS en Windows Server 2008 R2.
Asistente para agregar el rol IIS en Windows Server 2008 R2.

 

Una vez finalizada la instalación, le damos Close al asistente.

 

Finalización de la instalación del rol IIS 7.5 en Windows Server 2008 R2.
Finalización de la instalación del rol IIS 7.5 en Windows Server 2008 R2.

 

Ya tenemos el rol instalado y podemos comprobarlo si abrimos un navegador local en el servidor e ingresamos como URL “Localhost” (sin comillas):

 

Apertura de "Default Web Site" para corroborar el éxito de la instalación de IIS 7.5.
Apertura de “Default Web Site” para corroborar el éxito de la instalación de IIS 7.5.

 

Configuración de Carpetas de Publicación

En este momento vamos a configurar las carpetas donde publicaremos nuestra información de sitios web visible para todos. Al finalizar este ítem, tendremos realizada una estructura de carpetas ordenada y criteriosa que nos permite identificar rápidamente el sitio web en cuestión y, además, nos permite aplicar permisos solo a los recursos que debemos aplicar, evitando posibles problemas de seguridad.

 

Criterio de Ordenamiento

Ya tenemos instalado el rol de IIS. El “Default Web Site” que viene configurado por defecto aloja sus archivos en la carpeta “C:\inetpub\wwwroot\”. Ahora bien, nosotros vamos a alojar varios sitios web, y todos no pueden apuntar al mismo lugar de nuestro disco.

Antes de comenzar a trabajar con otros sitios web, debemos definir nuestra estructura ordenada de carpetas para la publicación de contenido de cada uno de estos sitios web. Para esto tenemos reservado el espacio del disco “E”. Para explicar el criterio de ordenamiento, vamos a suponer el siguiente escenario:

  • Podemos tener varios clientes distintos en el mismo servidor web que estamos configurando.
  • Cada cliente puede tener más de un sitio web.
  • Debemos velar porque la estructura sea ordenada y con nombres descriptivos y claros.
  • El contenido del sitio web no solo son los archivos de publicación del sitio, sino también los logs que éste genera.

 

En base a estas condiciones, vamos a realizar la siguiente estructura de carpetas:

  • Nivel 1 -> “Nombre de Cliente”
    • Nivel 2 -> “Nombre de Sitio Web”
      • Nivel 3 -> Carpeta de Publicación y Logs.

 

Vamos a poner manos a la obra. Primero, en el disco “E”, creamos una carpeta que se llame “Websites”:

 

Creación de carpeta "Websites".
Creación de carpeta “Websites”.

 

Esta carpeta alojará toda la información de los clientes y sus sitios web. Ahora bien, por temas de seguridad, vamos a eliminar toda “herencia” que tenga esta carpeta del disco origen “E” y, luego, eliminaremos los usuarios “genéricos”.

 

Modificación de Permisos en Carpeta Raíz

Para esto, vamos a las propiedades de la carpeta solapa seguridad:

 

Seguridad de la carpeta "Websites".
Seguridad de la carpeta “Websites”.

 

Allí haremos clic en “Advanced”:

 

Advanced de permisos.
Advanced de permisos.

 

Luego, haremos clic en “Change Permissions” y deshabilitaremos la opción “Include inheritable permissions…”:

 

Deshabilitación de Heredación de Permisos.
Deshabilitación de Heredación de Permisos.

 

Cuando destildemos la opción, nos aparecerá un caretel con varias opciones, y le daremos en “Add” (para mantener los permisos actuales, si bien ya no los heredamos):

 

Permisos de Websites: mantenemos los permisos actuales haciendo clic en "Add".
Permisos de Websites: mantenemos los permisos actuales haciendo clic en “Add”.

 

Aceptamos dos veces (OK) y volvemos a la primer pantalla del cuadro de permisos.

Muy bien, hemos deshabilitado la heredación de permisos para que la carpeta “Websites” tenga independencia y esto nos permita tener bien ajustada la seguridad de nuestras carpetas de publicación. El paso siguiente es eliminar los usuarios existentes que no deben estar en esta carpeta: solo debemos dejar a los Administradores, quienes tendrán acceso completo al contenido.

Ahora en el cuadro abierto le vamos a dar al botón “Edit”:

 

Edición de Permisos.
Edición de Permisos.

 

En el cuadro “Permissions for Websites” vamos a dejar SOLO a los Administradores (con FULL ACCESS) y a los otros dos grupos, llamado “System” y “Creator Owner” sin hacerle modificaciones a sus permisos:

 

Dejamos solo los permisos de Administrators, Creator Owner y System.
Dejamos solo los permisos de Administrators, Creator Owner y System.

 

Luego de esta acción, aceptamos dos veces para salir de las opciones de seguridad.

 

Creación de Arbol de Directorios

Ya hemos creado nuestra carpeta origen, hemos eliminado la herencia de permisos y hemos eliminado los usuarios que no debían estar. Ahora vamos a crear nuestra estructura de carpetas.

A modo didáctico, supongamos que tenemos los siguientes clientes y los siguientes sitios web para cada uno de nuestros clientes:

 

 

La tarea que nos queda, en base a estos datos, es crear las carpetas para los clientes y para los sitios web.

 

Creación de Carpeta para Clientes

Para cada uno de estos clientes, vamos a crear una carpeta dentro de “Websites”:

 

Creación de Carpetas para Clientes.
Creación de Carpetas para Clientes.

 

Creación de Carpetas para Sitios Web

Ahora bien, dentro de cada uno de nuestros clientes debemos crear las carpetas de publicación para los sitios web. Sin embargo, la publicación de archivos del sitio web no es lo único que un sitio web aloja, dado que también tenemos los archivos de Logs que genera este sitio y también, en un futuro, quizás querremos alojar más cosas.

Por este motivo, para cada sitio web, vamos a ponerle un nombre (que será el nombre de dominio DNS) y dentro vamos a crear una carpeta de Logs y una carpeta de Publicación, utilizando los siguientes nombres:

  • Para Logs: logs
  • Para Publicación: wwwroot

 

En nuestro esquema, nos quedaría de la siguiente manera:

  • Juan:
    • sitio1.com
      • logs
      • wwwroot
    • sitio2.com
      • logs
      • wwwroot
  • Pablo:
    • sitio3.com
      • logs
      • wwwroot
  • Vanesa:
    • sitio4.com
      • logs
      • wwwroot
    • sitio5.com
      • logs
      • wwwroot

 

En Windows Explorer quedaría de la siguiente manera:

 

Esquema de carpetas para los sitios web y su contenido, para cada cliente.
Esquema de carpetas para los sitios web y su contenido, para cada cliente.

 

Configuración de Cuentas de Servicio

Muy bien. Ya hemos instalado el rol IIS, y hemos creado la estructura de carpetas con la seguridad necesaria y limitada a administradores. Si bien luego haremos más cambios, por ahora esto es suficiente. Llegó el momento de crear las cuentas de servicio para cada uno de nuestros Sitios Web.

Al finalizar este paso, tendremos cuentas de usuario locales (que usaremos para servicios) para cada uno de nuestros sitios web. Aunque un “cliente” tenga varios sitios web, la identidad de cada uno de ellos será diferenciada a través de estas cuentas de servicio.

Dichas cuentas serán utilizadas en diferentes puntos de configuración de este tutorial, razón por la cual este paso es muy importante.

 

Introducción a Cuentas de Servicio

Las cuentas de servicio serán las que en realidad corran la Aplicación ó Sitio Web de cada uno de nuestros clientes y serán, internamente, los usuarios que naveguen en nuestra aplicación. Cuando un usuario externo entra a nuestro sitio, en realidad estará visitándolo en nombre de este usuario de servicio. Además, muchas acciones que realiza sobre otros componentes se “impersonalizan” en nombre de dicho usuario. Esto significa que para cada sitio web vamos a crear una cuenta de servicio diferenciada y única.

Estas cuentas de servicio las utilizaremos en el siguiente paso: aquí solo las crearemos y las configuraremos dentro de los permisos a asignar. Cuando habalmos de “configurar”, estamos hablando de ingresarlas a las carpetas donde deberían tener derechos de lectura.

El concepto de cuentas de servicio creadas manualmente muchas veces es reemplazada por la utilización de cuentas propias del IIS, las cuales brindan una seguridad muy interesante. Así también, las cuentas de servicio pueden ser optimizadas con la funcionalidad de “Managed Accounts” de Windows Server 2008 R2. Sin embargo, y para este tutorial, hemos elegido el modelo de cuentas de servicio creadas manualmente y asignadas a mano para cada sitio web que creemos.

 

Creación de Cuentas de Servicio

Como dijimos, vamos a crear una cuenta de servicio para cada sitio web. Nuestros sitios web son los siguientes:

  • sitio1.com
  • sitio2.com
  • sitio3.com
  • sitio4.com
  • sitio5.com

 

Ante todo, debemos ponernos de acuerdo en la nomenclatura que elegiremos para evitar confusiones y mantener un orden en las cuentas de servicio. Vamos a elegir agregarle el prefijo “iis_” a cada usuario, y luego le pondremos el nombre de dominio. Quedaría de la siguiente manera:

  • sitio1.com -> iis_sitio1.com
  • sitio2.com -> iis_sitio2.com
  • sitio3.com -> iis_sitio3.com
  • sitio4.com -> iis_sitio4.com
  • sitio5.com -> iis_sitio5.com

 

Para crearlos, vamos a ir a la consola “Local Users and Groups” en nuestro Windows Server. Nuestro primer usuario creado luce así:

 

Usuario de servicio IIS creado.
Usuario de servicio IIS creado.

 

Por cada uno de los sitios, vamos a crear el usuario correspondiente y le asignaremos una contraseña, la cual debemos documentar:

 

Creación de Usuarios para IIS.
Creación de Usuarios para IIS.

 

Configuración en Permisos para las Cuentas de Servicio

Una vez creados los usuarios, debemos configurar sus permisos. Los primeros permisos que configuraremos serán a nivel archivos de Windows Server.

Cada uno de estos usuarios tendrá derechos de lectura (y nada más que de lectura) en las carpetas wwwroot de su sitio web. Esto es así, dado que luego configuraremos a dicho usuario, para cada sitio, como usuarios de servicio para el sitio web en la consola IIS. Si no le damos permisos para leer (al menos) el contenido de publicación, el sitio web no mostrará contenido y dará error.

Manos a la obra: por cada carpeta wwwroot de cada sitio web, vamos a configurar con derechos de lectura al usuario recientemente creado que corresponda con dicho sitio web. Por ejemplo, para el sitio web “sitio1.com”, carpeta “wwwroot”, tenemos el usuario “iis_sitio1.com”:

 

Configuración de permisos a nivel carpeta para cada Sitio Web.
Configuración de permisos a nivel carpeta para cada Sitio Web.

 

Haremos lo mismo con el resto de los sitios, hasta que tengamos en cada carpeta wwwroot de publicación de cada sitio web, su usuario configurado con derechos de lectura.

 

Posible pregunta

Quizás una posible pregunta sea: ¿por qué un usuario distinto para cada sitio? La respuesta, si bien la hemos adelantado en puntos anteriores, es fácil: la idea es no permitir el salto de privilegios y que un sitio web “vea” cosas del otro. Con esta configuración, nos garantizamos que el usuario que corre como “servicio” para cada sitio web no tiene derechos ni siquiera de lectura sobre otra carpeta del sistema operativo o de otro sitio web.

 

Conclusiones

Hasta aquí hemos realizado la preparación del servidor, de los directorios de publicación y de las cuentas de servicio. En la entrega 2 de este tutorial seguiremos con la configuración de los sitios web.

 

Acerca del Autor

0 0 votes
Article Rating

Professor. Techie. Ice cream fan (dulce de leche). My favorite phrase: "Todos los días pueden no ser buenos ... pero hay algo bueno en todos los días". Currently I´m Engineering Manager at MODO (https://modo.com.ar), the payment solution that allows you to connect your money and your world to simplify everyday life. Modo is a payment solution in which you can send, order and pay from your mobile device in the safest, most practical and convenient way. I enjoy a lot of educational, technological talks and a good beer. If you want to talk, write me to pablodiloreto@hotmail.com.

Subscribe
Notify of
guest

6 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
marcelo costa
marcelo costa
January 8, 2013 10:12 PM

Excelente tutorial! En la empresa donde trabajo estabamos en busca de buenas prácticas y ordenadas para alojar muchos sitios web en algunos servidores, pero no teníamos una referencia de orden de carpetas y permisos tan clara como la que expusiste. Excelente tutorial! Una pregunta: ¿me conviene tener mis servidores IIS en dominio o fuera de dominio? Gracias.

Luis Solar
Luis Solar
January 21, 2013 11:53 PM

Hola, excelente post!!!!!!! Hace mucho tiempo buscaba esclarecer como puedo realizar una configuración segura de sitios web. La misma pregunta que Marcelo: conviene usar AD o sin AD? Salu2!

trackback
February 22, 2013 12:15 AM

[…] [TUTORIAL] Configuración de IIS 7.5 para alojar múltiples Sitios Web – Parte 1/3 […]

Lestat
Lestat
March 6, 2015 10:27 PM

vaya pero que atención a esta pagina que ni responde a las preguntas de los usuarios que mala onda, yo les responderé, si su sitio albergara usuarios dentro del dominio es decir aplicaciones que funcionen así pues deben de hacerlo con AD, si no no!