11 nov 2015

Servidor Web con IIS 7 y Apache 2


Los servidores que con más frecuencia encontramos en Internet son los servidores web, en los cuales se aloja una infinidad de páginas web.

1. Instalamos el IIS (Internet Information Services)

Antes de empezar, establecemos una @IP estática a nuestro servidor (aunque no es imprescindible):


Abrimos el Administrador del servidor, pulsamos Agregar roles y elegimos el Servidor web en la lista:



Nota: se puede instalar igualmente en Windows 7, 8 u 10 a traves de Panel de control -> Programas -> Activar y desactivar características Windows.

Marcamos las 3 primeras casillas de autenticación en el menu desplegable de seguridad:


Filazamos la instalación y esperamos al mensaje de Instalación correcta:



Ahora en los roles de nuestro servidor aparece Servidor web (Internet Information Services):


Comprobamos su funcionamiento mediante un navegador web (he utilizado el preinstalado en Windows Server 2008):


Modifico un poco la página principal que se va a localizar en C:\intepub\wwwroot con el nombre de index.html:



2. Tipos de autenticación en IIS. Autenticación Windows

Internet Informatin Services de Microsoft nos ofrece varios tipos de autenticación:
  • Autenticación anónima: permite acceder a la página web a cualquier usuario sin introducir ningún tipo de credencial.
  • Autenticación básica: requiere al usuario introducir un nombre y una contraseña válidos para acceder al contenido de la página. La desventaja es que transmite la información con un cifrado muy débil y fácilmete descifrable. Sólo se debe usar cuando la conexión entre cliente y servidor sea segura.
  • Autenticación implícita: utilizar un controlador de dominio Windows para autenticar a los usuarios. Requiere el soporte del protocolo HTTP 1.1 (cualquier navegador moderno).
  • Autenticación Windows: requiere también un nombre y una contraseña para autorizarse. Pero en este caso serán el nombre y contraseña de un usuario creado en el servidor. Nos vamos a centrar en este tipo.
2.1. Creamos un usuario nuevo

Podemos crear de varias formas diferentes un usuario en Windows. Lo voy a hacer desde la Administración del equipos:



2.2. Habilitamos la autenticación de Windows 

Desde el Administrador del servidor entramos en Administrador de Internet Information Services (IIS) y con el botón derecho habilitamos la Autenticación de Windows:


2.3. Prueba de acceso desde un cliente

Desde un cliente vamos a intentar acceder a nuestro servidor web desde el navegador y cuando nos requiera las credenciales, introduciremos las del usuario creado anteriormente en el servidor:



3. Alojamos varias páginas web en nuestro servidor

Hay varias formas de alojar páginas web diferentes en un servidor web. Yo voy a hacerlo con la misma @IP, pero asignando un puerto diferente a cada una de ellas (80, 81 y 82). De esta manera, si me conecto a http://192.168.190.138:80 me aparecerá una página y si me conecto a http://192.168.190.138:81 o http://192.168.190.138:82 serán otras páginas diferentes.

3.1. Creamos la estructura de directorios

El directorio que IIS emplea de manera predeterminada para alojar las páginas web es C:\intepub\wwwroot. Es aquí donde vamos a crear un directorio por cada página que queramos alojar en el servidor. Dentro de cada directorio voy a copiar el fichero index.html (creado anteriormente) y lo modificaré ligeramente para que no sean iguales:


3.2. Creamos los sitios nuevos

Eliminamos el sitio web predeterminado y creamos los sitios nuevos:

Ahora en el Administrador de IIS seleccionamos Sitios y agregamos un sitio nuevo, indicando el directorio del contenido de cada sitio, la @IP asociada, el puerto y, si queremos, el nombre del host (yo lo dejo en blanco ya que a continuación implementaremos un servidor DNS para ese fin):


Hacemos lo mismo con los otros 2, indicando un puerto diferente y la ruta de acceso que les corresponda a cada uno:



Ahora en este apartado veremos los sitios que acabamos de crear y enlace correspondiente a cada. El asterisco (*) hace referencia a la dirección IP del propio servidor:


3.3. Accedemos a páginas diferentes desde un cliente

En la barra del navegador de un cliente tecleamos la @IP del servidor. Si no especificamos el puerto se conectará por el 80 (que es el predeterminado para HTTP):


Si nos conectamos a la misma dirección pero por el puerto 81, visualizaremos otra página diferente:


Lo mismo con la tercera:



4. Implementando HTTPS con un certificado autofirmado

HTTPS es la versión segura del protocolo HTTP que implementa el cifrado de la información que viaja entre un cliente y servidor web. Para implementarlo en nuestra página web necesitamos un certificado (aunque sea firmado por nosotros mismos).

4.1. Creamos el directorio correspondiente

Antes de crear nuestro sitio seguro, tendremos que crear un directorio donde se va a guardar. Lo he llamado web segura:



4.2. Emitimos un certificado autofirmado

Seleccionamos el menú de certificados de nuestro servidor y pulsamos en Crear un certificado autofirmado:


Solamente tenemos que especificar su nombre:


4.3. Agregamos el sitio

Ahora agregaremos un sitio nuevo desde el Administrador de IIS:


Tras poner el título y seleccionar la ruta de acceso física, elegimos el protocolo https. En este caso no haría falta cambiar el puerto, ya que de manera predeterminada usa el 443. Lo que significa que no conflictaría con las otras páginas que tenemos alojadas. Por último elegimos el certificado SSL:


Habilitamos la autenticación anónima de nuestro sitio web seguro:


4.4. Prueba

Desde un cliente (o desde el propio servidor) probamos conectarnos a https://@IP_servidor. El navegador nos avisará de que la conexión no es privada, debido a que nuestro certificado es autofirmado.


De todas maneras, podemos acceder al sitio. Para ello abrimos las opciones avanzadas y pulsamos en el enlace de acceder al sitio no seguro:



¡Enhorabuena! Acabamos de implementar exitosamente el protocolo HTTPS en una de nuestras páginas web.

5. Implementamos el servidor DNS

Nota. Una explición detallada de configuración del servidor DNS en Windows Server viene en este artículo. Aquí voy a verlo de forma muy superficial, centrándome en el servidor Web.

5.1. Configuramos la @IP y el modo de red en la máquina virutal

Esetablecemos una @IP estática a nuestro servidor si no lo habéis hecho anteriormente (como es mi caso):


Ponemos la red del servidor y el cliente en modo Host-only (para VMware) o "Red interna" para los que utilicéis VirtualBox:


5.2. Instalamos el servidor DNS (rol)

Para ello desde el Administrador del servidor agregamos un nuevo rol y marcamos la casilla correspondiente:


5.3. Modificamos los enlaces a los sitios

Además de modificar los enlaces a nuestros sitios, en todos menos la página segura, vamos a cambiar el puerto al 80.



Lo hacemos de siguiente forma en los 3 sitios que funcionan por http:




Existe una pequeña dificultad para poner el hostname a una página que funciona por HTTPS (SSL). Y es que desde el modo gráfico no permite cambiar el hostname. Sin embargo tenemos 2 soluciones para este problema: una desde la línea de comandos y otra modificando el fichero applicationHost.config (elegir una de las dos).

Línea de comandos (cmd)

Nos situamos en el directorio %windir%\system32\inetsrv y ejecutamos el comando que viene a continuación, especificando el nombre de host en bindingInformation (seguro.andrii.com en mi caso):



Modificando el fichero de configuración

Tenemos que modificar el fichero C:\Windows\System32\inetsrv\config\applicationHost.config en este caso.



Al abrir el fichero, buscamos la directiva <bindings> poniendo el nombre de nuestro sitio securizado en la búsqueda (Ctrl+B). Especificamos el nombre del host de siguiente manera:


Guardamos el fichero.

5.4. Establecemos las zonas de búsqueda

Tras crear una zona de búsqueda directa y otra inversa, en la zona directa añadimos los host correspondientes a nuestras páginas web.


5.5. Probamos desde un cliente Windows 7

Desde el navegador probamos acceder a nuestras páginas, pero esta vez por los nombres del dominio:







6. SERVIDOR WEB EN UBUNTU SERVER CON APACHE 2

Como de costumbre, actualizamos los repositorios con apt-get update e instalamos Apache 2 con apt-get install apache2.

6.1. Configuración básica del servidor

Asignamos una @IP estática a nuestro servidor mediante el fichero /etc/network/interfaces:


Comprobamos el estado del servicio apache2:


Desde una cliente (que estará en la misma red que el servidor), probamos acceder a él mediante el navegador:


Prueba de funcionamiento básico completada.

6.2. Alojamos varias páginas en nuestro servidor

Para poder hacerlo, tendremos que hacer uso de los host virtuales. Pero primero vamos a crear la estructura de directorios físicos donde se vayan a alojar nuestras páginas. Esta estructura se va a alojar en /var/www/html. Vamos a crear una carpeta por cada sitio y dentro de cada una alojaremos un index.html (que va a diferir del index.html de las otras páginas).

Creamos un fichero index.html básico en /var/www/html para nuestra página principal:


Comprobamos los cambios desde el cliente:


Creamos una carpeta nueva en /var/www/html para alojar otra página, que pedirá un usuario y contraseña para acceder a ella:


Utilizamos el index.html de la página principal y lo modificamos ligeramente:


6.2.1. Creamos los host virtuales

En el directorio /etc/apache2/sites-available se alojan las configuraciones de los host virtuales de nuestro servidor. Vamos a crear 2 ficheros nuevos a partir de 000-default.conf:


En cada fichero vamos a especificar ServerAdmin, ServerName y DocumentRoot del sitio correspondiente:


Igualmente en el host virtual de la área restringida:


Además tendríamos que crear enlaces simbólicos de estos ficheros de host virtual al directorio /etc/apache2/sites-enabled con el fin de habilitarlos:



6.3. Restringimos el acceso a uno de los host virtuales

Para ello aplicamos una directiva de autenicación en el fichero /etc/apache2/apache2.conf:


Vamos a instalar las utilidades de Apache2, que incluyen un programa que nos permite emitir un archivo que contendrá las credenciales de acceso a la zona privada:


Creamos un usuario nuevo, indicando su nombre y la ruta de alojamiento del fichero mencionado:



6.4. Integración de Apache2 con el servidor DNS

Para leer el post completo sobre la configuración del servidor DNS en Ubuntu Server pincha aquí. Aquí no voy a dar explicaciones detalladas de su configuración.

Una vez instalado el bind9, añadimos las zonas de búsqueda directa e inversa en el fichero /etc/bind/named.conf.local:


Creamos las bases de datos de las zonas directa e inversa utilizando la plantilla correspondiente:


Añadimos los host en el fichero de zona directa (principal, xxx y secundaria, la cual no muestro cómo crear en los pasos anteriores, pero se hace de la misma manera que con los otros 2):


También agregamos los host en el fichero de búsqueda inversa:


6.4.1. Prueba final

Para resumir, en el punto 6 hemos conseguido alojar varias páginas web en nuestro servidor web Apache2, una de los cuales requiere usuario y contraseña para entrar. Además hemos implementado un servidor DNS que resuelve el nombre de cada página a la @IP de nuestro servidor.

Estas son las puebas finales de Apache2 con cliente Windows 7:





Hasta aquí este mega-post sobre el servidor web. Espero que me haya expresado de una manera clara y precisa.

No hay comentarios:

Publicar un comentario