Last Updated on 22 agosto, 2017 by Pablo Ariel Di Loreto
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 segunda parte vamos a realizar toda la configuración de los Sitios Web y pruebas sin Firewall. Para mayor información sobre la introducción y otras partes, remitirse al final del documento.
Tabla de Contenidos
Introducción
Esta es la parte 2/3 de la publicación de este tutorial. Para acceder a las otras partes, por favor revise las Publicaciones Relacionadas al final de la página.
Objetivo del Tutorial
Como recordatorio, 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.
Alcance
Los detalles del alcance están en la parte 1/3 de este tutorial. Para recordar detalles del Escenario de Trabajo, Fuera de Alcance y otros detalles, remitirse a dicha parte al final de la publicación, en «Publicaciones Relacionadas».
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.
Plan de Trabajo
El plan de trabajo para la segunda parte 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 segunda parte, se desarrollarán los primeros puntos desde «Configuración de Sitios Web» hasta «Prueba de Acceso a Sitios Web sin Firewall». El resto de las entregas se encuentran en «Publicaciones Relacionadas» al final de la página.
Desarrollo de la parte 2/3 del Tutorial
La primera parte del tutorial puede encontrarse al final de esta página, en el apartado «Publicaciones relacionadas».
Configuración de Sitios Web
Ya hemos configurado las carpetas de publicación, hemos creado los usuarios de servicio y hemos dado los permisos necesarios a nivel archivos de Windows. Llegó el momento de configurar nuestros sitios web. Al finalizar este paso, tendremos creados nuestros 5 sitios web con las configuraciones básicas realizadas.
Eliminación de Default Web Site
Para ello, vamos a abrir la consola «Internet Information Services (IIS) Manager»:
La consola lucirá de la siguiente manera:
Nótese que tenemos, por defecto, un sitio web llamado «Default Web Site». Como nuestro servidor no tiene otro software instalado ni se usa para otra cosa, lo primero que vamos (y debemos) a hacer es eliminar este sitio web. Sin dudarlo, le damos botón derecho y «Remove»:
Creación de Sitios Web
Llegó el momento de crear nuestros sitios web (5 en total). El proceso de creación es muy simple. Vamos a comenzar por sitio1.com.
Primero, nos paramos sobre el nodo «Sites» y elegimos la opción «Add Web Site…»:
Aparecerá un cuadro en el que debemos llenar los datos del sitio web:
Nótese que llenamos los siguientes datos:
- Site name: sitio1.com
- Application Pool: se ha llenado solo con el nombre de nuestro sitio.
- Physical path: ruta hacia la carpeta wwwroot de sitio1.com en el disco «E».
- Binding: dejamos el binding http con el puerto 80.
- Host name: www.sitio1.com (si tiene más, luego lo podemos agregar).
Una vez completados estos datos, le damos clic en «Ok» y nuestro sitio quedará creado:
Haremos lo mismo con el resto de los sitios, cuidando que:
- El nombre sea el correcto.
- El physical path sea el correcto.
- El host name sea el correcto, agregando el «www.».
El producto final es el siguiente:
Nótese que:
- Todos los sitios están escuchando por el puerto 80 HTTP.
- El campo «host name» determinará por qué URL van a escuchar, para que cuando uno pida por www.sitio1.com sea este sitio el que responda, y no otro, utilizando la única IP que configuramos al servidor.
- Cada sitio tiene como carpeta «physical path» su propia carpeta wwwroot.
Configuración de Application Pool
Existe un componente en cada sitio web que es el «Application Pool». Este componente es el que controla varios aspectos de la aplicación, el que le da vida. Estos aspectos son:
- Memoria.
- Errores.
- Versión del Framework .Net.
- Compatibilidad.
- Etc.
Como vimos en el proceso de creación de los sitios web, cada uno de ellos tenía un «Application Pool» que se iba creando con el tipeo del nombre. El conjunto de Application Pools los podemos ver desde la consola IIS, apartado «Application Pools»:
Para cada uno de los application pools, debemos configurar un usuario de servicio. Y ¿adivinen qué? El usuario de servicio será el que creamos unos pasos atrás!
Para configurar cada usuario de servicio en el Application Pool, vamos a ir a las opciones avanzadas del Application Pool que querramos configurar. Comencemos con el sitio1.com:
En las propiedades avanzadas del Application Pool veremos la opción «Identity»:
Si hacemos clic en los puntos suspensivos del nombre Identity (en este caso «ApplicationPoolIdentity») vamos a obtener otro cuadro:
Si seleccionamos «Custom account» vamos a poder hacer clic en el botón «Set…»:
Allí ingresaremos los datos del usuario de servicio correspondiente al sitio web que estamos configurando (en este caso, iis_sitio1.com). Ingresamos la contraseña y le damos Ok tres veces hasta cerrar el cuadro de las propiedades avanzadas del Application Pool.
Nótese como el campo «Identity» de la lista ha cambiado a la que le configuramos:
Lo mismo debemos hacer con el resto de los Application Pool de nuestros sitios web, y configurar para cada uno su usuario de servicio. Quedaría de la siguiente forma:
Además de configurar el usuario para el Application Pool, el sitio web / aplicación web debe tener configurado un usuario a través del cual el IIS intentará leer los directorios. Por supuesto, este usuario será el mismo que la cuenta de servicio asignada al Application Pool y a los permisos de los directorios de Windows configurados anteriormente.
Para realizar esta configuración, debemos ir sitio por sitio y realizar lo siguiente comenzando por el sitio1.com:
Vamos a la consola IIS y seleccionamos el sitio en cuestión y dentro de las propiedades IIS elegiremos «Authentication»:
Veremos las posibilidades de autenticación. En nuestro caso, no queremos que al usuario de internet le pregunte un usuario y password al visitarlo, por lo cual dejaremos el «Anonymous Access» habilitado. Ahora bien, este Acceso Anónimo debe ser a través del usuario de servicio correspondiente al sitio web que estamos configurando. Por ello iremos dentro de la consola, y manteniendo seleccionado la autenticación anónima, a «Edit»:
Una vez hecho esto, debemos ingresar las credenciales de servicio correspondientes. En la ventana que se abrió elegimos «Set…»:
Allí ingresaremos las credenciales del usuario «iis_sitio1.com»:
Lo mismo debemos hacer con los restantes sitios web, asegurándonos que el usuario de navegación en la solapa «Authentication», «Anonymous Authentication» sea el correspondiente al usuario de servicio configurado para la carpeta de Windows donde se publica el sitio web y el del application pool.
Configuración de Logs
Un aspecto importante que no debemos dejar de considerar es donde se guardarán los logs de cada uno de nuestros sitios web. Es por esto que, en el momento de crear el árbol de directorios, hemos creado dentro de cada sitio web una carpeta llamada «logs». Esta carpeta será la que utilizaremos ahora en nuestra configuración.
Dentro de las propiedades del sitio «sitio1.com» buscaremos una opción llamada «Logging»:
Allí veremos que se nos muestra donde se guardan los logs y con que frecuencia:
Dejaremos la frecuencia en forma diaria, pero cambiaremos el «Directory» para guardar los logs del sitio «sitio1.com» en la carpeta que creamos para tal fin, dentro del usuario «Juan» y dentro del «sitio1.com» como vemos en la siguiente figura:
Modificaremos el Directorio y nos quedará de la siguiente manera:
Lo mismo debemos hacer con el resto de los sitios web, procurando que cada uno de ellos guarde el log dentro de la carpeta correspondiente creada para tal fin.
Ingreso de contenido por defecto para cada sitio
Para poder realizar las pruebas correspondientes, debemos ingresar algún contenido a los sitios web y de esta forma poder identificar si se abren bien o no. Si no lo hacemos, aparecerá un error en los sitios web, dado que no tiene nada que mostrar de contenido.
En la vida real, el contenido es el propio del sitio web: es un trabajo en conjunto de desarrolladores y diseñadores. Sin embargo, para este tutorial, vamos a crear un contenido simple que sea el nombre del sitio web que estamos abriendo.
Para esto, crearemos un archivo de texto con el nombre «index.txt» y dentro del mismo el nombre del sitio. Por ejemplo, para el sitio1.com el archivo contendrá el siguiente contenido:
El archivo lo ubicaremos dentro del directorio wwwroot correspondiente al sitio1.com:
Y por último reemplazaremos la extensión «txt» por «html»:
De esta forma, tenemos un archivo en formato HTML que el servidor IIS podrá leer sin problemas. El nombre «index.html» corresponde a un archivo por defecto que el servidor IIS puede leer y que irá a buscar. Esto puede ser cambiado en la configuración de cada sitio IIS.
Lo mismo haremos para cada uno de los restantes sitios web: configuraremos un archivo index.html con el nombre del sitio, de modo tal que sea fácilmente indentificable.
Configuración de DNS Interno para Pruebas
Como hemos comentado antes, vamos a utilizar dominios públicos que, por supuesto, no tenemos publicados hacia internet y tampoco somos los dueños de los mismos. Estos dominios son los que hemos configurado anteriormente en los sitios web:
- Sitio1.com -> www.sitio1.com
- Sitio2.com -> www.sitio2.com
- Sitio3.com -> www.sitio3.com
- Sitio4.com -> www.sitio4.com
- Sitio5.com -> www.sitio5.com
Para poder realizar todas las futuras pruebas, vamos a crear las zonas para cada uno de estos dominios en un DNS interno, y para cada una de estas zonas crearemos un registro «A» hacia la dirección IP interna de nuestro servidor, es decir: 192.168.1.235.
Prueba de Acceso a los Sitios Web sin Firewall
Desde nuestro servidor IIS01, el cual tiene como servidores DNS a nuestro equipo con las zonas creadas de los dominios de prueba, abriremos la consola IIS y nos pararemos sobre el sitio «sitio1.com» y elegiremos la opción del panel derecho «Browse www.sitio1.com…»:
Como resultado, veremos que el navegador predeterminado se abrirá e ingresará a la dirección http://www.sitio1.com mostrando nuestro sitio web:
Lo mismo podremos hacer con los restantes sitios web, comprobando que están funcionando. Si en algún sitio hubiésemos olvidado ingresar el usuario para «Anonymous Authentication», o si no hubiésemos seteado los permisos NTFS correctamente, el error que aparecería sería:
Desde la máquina DESKTOP01, la cual tiene como servidores DNS a nuestro equipo que tiene las zonas DNS creadas para cada uno de nuestros dominios, abriremos un navegador web e ingresaremos la dirección http://www.sitio1.com, comprobando que abre:
De esta forma, hemos comprobado que nuestra configuración realizada permite:
- Que en un mismo servidor IIS, y con una única dirección IP, podamos abrir varios sitios web gracias a la configuración de los Bindings.
- Que el contenido y el acceso al mismo está segurizado por la asignación de usuarios y permisos únicos a cada sitio web.
Conclusiones
Ya hemos pasado la primera y segunda parte del tutorial. Hasta aquí hemos realizado la preparación del servidor, de los directorios de publicación y de las cuentas de servicio y, además, configuramos nuestros sitios web y hasta realizamos pruebas de acceso. En la entrega 3 de este tutorial seguiremos con la configuración de FTP para poder publicar contenido remotamente y sin necesidad de intervención de un administrador.
Acerca del Autor
- [Evento] Microsoft Azure | Tendencias Digitales 2019 – 26/03/2019 - 30 marzo, 2019
- [Evento] Microsoft Azure | Tendencias Digitales 2019 – 06/02/2019 - 12 febrero, 2019
- [Evento] Microsoft Azure | Modernización de Apps con la Nube de Azure – 20/12/2018 - 22 diciembre, 2018
Me podrias ayudar con la instalacion DNS, para los sitios, es que soy novato y no tengo ni idea, muy buen tutorial.
Me pasa lo mismo porque en Administrative Tools no tengo lo que todos suponen que debería tener 🙁
Interesante tutorial, pero no pude coronarlo con exito porque mi servidor IIS está en un dominio, y parece que el ambiente de este tutorial es en Grupo de trabajo. Al registrar el sitio web en el DNS, este automatcamente le agrega las etiquetas del dominio original, es decir que el FQDN es:
http://www.sitio1.com.dominio.dominio, y el Servidor DNS le hace una carpeta «com» y dentro una subcarpeta «sitio1» con un registro «www». Hay alguna forma de registrar estos sitios en un IIS de dominio ?
Estimado Muy buen material
Se agradece el trabajo realizado.
Quisiera hacerte la consulta: tengo una red de dominio abc.com.pe. Ahi voy a implementar un servidor web con IIS 7.5 el cual manejará sitios para el dominio def.com (sitio1.def.com, sitio2.def.com, etc), el cual tengo asignado a una IP pública y que apunta a la IP privada del mencionado servidor.
En este caso, cómo se puede hacer para publicar subdominios.
De antemano las gracias por tu soporte
Hola tengo una consulta, como podria proteger mi IP publica , ya que cuando se redirreciona,al domino aparace mi ip Publica, quedo atento gracias
Hola Pablo, disculpa he seguido tus pasos en el tutorial que publicaste, me manda el error de que no carga la página web, dice que es por que no se configuro bien los permisos de NFTS, pero así como mencionas he realizaso la configuración y me manda este error, que debería checar, para que no me pase esto.
Felicidades por el artículo,
¿Dónde debo crear el usuario iis_sitio1.com?
Gracias
¿¡Como estas Pablito!?. Buscando información acerca del IIS, me encontre con este POST, la verdad esta gráficamente bien explicado y fue de gran utilidad, te felicito por el Site. Espero que andes bien.
Ignacio Aguilera.
Saludos!