Saltar a contenido

UT2. Administración de servidores web

En esta unidad de trabajo, exploraremos los conceptos fundamentales y las prácticas esenciales para la administración de servidores web. Aprenderás a instalar, configurar y mantener servidores web, así como a gestionar sitios web y aplicaciones alojadas en ellos.

Host virtual

Un host virtual es una técnica que permite alojar múltiples sitios web (dominios) en un solo servidor físico o una sola instancia de servidor web. Cada sitio web puede tener su propio nombre de dominio, configuración y contenido, pero todos comparten los recursos del mismo servidor. Esto es especialmente útil para proveedores de alojamiento web y administradores de sistemas que desean maximizar el uso de sus recursos.

Tipos de host virtual

Existen dos tipos principales de host virtual:

Host virtual basado en nombre

En este método, el servidor web utiliza el nombre del dominio solicitado por el cliente (navegador) para determinar qué sitio web servir. Esto se logra mediante la cabecera Host en la solicitud HTTP.

Ejemplo

Si un servidor tiene dos sitios web, www.ejemplo1.com y www.ejemplo2.com, ambos pueden estar alojados en la misma dirección IP. El servidor web distinguirá entre ellos basándose en el nombre del dominio solicitado.

  • Ventajas:
    • Permite alojar múltiples sitios web con una sola dirección IP.
    • Más eficiente en términos de uso de recursos.
  • Desventajas:
    • Requiere que los navegadores y clientes HTTP soporten la cabecera Host (la mayoría lo hacen).
    • No es adecuado para sitios que requieren certificados SSL/TLS diferentes (aunque SNI puede ayudar con esto).

Host virtual basado en IP

En este método, cada sitio web tiene su propia dirección IP. El servidor web utiliza la dirección IP a la que se dirige la solicitud para determinar qué sitio web servir.

Ejemplo

Si un servidor tiene dos sitios web, www.ejemplo1.com y www.ejemplo2.com, cada uno tendría una dirección IP diferente (por ejemplo, 192.168.1.1 y 192.168.1.2).

  • Ventajas:
    • Permite el uso de certificados SSL/TLS diferentes para cada sitio web sin problemas.
    • Puede ser más sencillo de configurar en algunos casos.
    • Adecuado para aplicaciones que no soportan la cabecera Host.
    • Puede ser necesario para ciertos servicios que requieren una IP dedicada.
  • Desventajas:
    • Requiere múltiples direcciones IP, lo que puede ser costoso o limitado.
    • Menos eficiente en términos de uso de recursos.
    • Puede ser más complicado de administrar.
    • No es tan comúnmente utilizado como el host virtual basado en nombre.
    • Puede ser problemático si las direcciones IP son limitadas.

Puertos de escucha

Los puertos de escucha son puntos de entrada en un servidor web donde este espera recibir solicitudes de los clientes. Cada puerto está asociado a un número específico que identifica el tipo de servicio que se está ofreciendo. Los puertos más comunes para servidores web son:

  • Puerto 80: Utilizado para tráfico HTTP no cifrado.
  • Puerto 443: Utilizado para tráfico HTTPS cifrado.
  • Puerto 21: Utilizado para el servicio FTP (File Transfer Protocol), que permite la transferencia de archivos entre un cliente y un servidor.
  • Puerto 22: Utilizado para el servicio SSH (Secure Shell), que permite la administración remota segura del servidor.

Analogía

Imagina que un servidor web es como un edificio con múltiples puertas (puertos). Cada puerta está etiquetada con un número que indica qué tipo de servicio se ofrece detrás de esa puerta. Por ejemplo, la puerta 80 es para visitantes que quieren ver páginas web sin cifrado, mientras que la puerta 443 es para aquellos que desean una conexión segura y cifrada.

Recordamos que la forma en la que se debe especificar el puerto en una URL es la siguiente:

http://www.ejemplo.com:80/ruta/del/recurso

No se puede omitir el puerto si se utiliza otro que no sea el 80 (HTTP) o el 443 (HTTPS). Es decir, si queremos acceder a un recurso en el puerto 8080, la URL debe ser:

http://www.ejemplo.com:8080/ruta/del/recurso

Pero si el recurso está en el puerto 80 o 443, podemos omitir el puerto en la URL:

http://www.ejemplo.com/ruta/del/recurso (para HTTP en el puerto 80)

https://www.ejemplo.com/ruta/del/recurso (para HTTPS en el puerto 443)

LAMP

LAMP es un acrónimo que representa un conjunto de software de código abierto utilizado para alojar sitios web y aplicaciones web. Cada letra del acrónimo corresponde a un componente específico del stack:

  • Linux: El sistema operativo subyacente.
  • Apache: El servidor web que maneja las solicitudes HTTP.
  • MySQL: El sistema de gestión de bases de datos.
  • PHP: El lenguaje de programación utilizado para desarrollar aplicaciones web.

El stack LAMP es popular debido a su flexibilidad, escalabilidad y el hecho de que todos sus componentes son de código abierto y gratuitos. Es ampliamente utilizado para desarrollar y alojar sitios web dinámicos y aplicaciones web.

Aunque LAMP es una combinación común, existen variaciones del stack que utilizan diferentes componentes, como: - XAMPP: Una distribución que incluye Apache, MySQL, PHP y Perl, diseñada para facilitar la instalación y configuración en sistemas Windows, Linux y macOS. - WAMP: Similar a LAMP, pero diseñado para sistemas Windows. - MAMP: Similar a LAMP, pero diseñado para sistemas macOS.

Actividades

Partiendo de una máquina virtual Ubuntu con Apache instalado, realiza las siguientes actividades:

A2.1 Hosts virtuales

Configurar dos hosts virtuales en Apache en una máquina virtual Ubuntu. Cada host virtual debe tener su propio nombre de dominio simulado (por ejemplo, miweb1.local y miweb2.local) y su propio contenido web.

Los directorios raíz para los sitios web deben ser /var/www/miweb1 y /var/www/miweb2, respectivamente. Crea un archivo index.html en cada directorio con contenido distintivo para cada sitio web.

Visualiza el contenido de cada sitio web en un navegador web desde la máquina anfitrión.

A2.2 El archivo hosts

Modifica el archivo /etc/hosts para incluir las entradas necesarias para que instagram.com y facebook.com, apunten ambas a la dirección IP 127.0.0.1. ¿Qué ocurre cuando intentas acceder a estos sitios web desde un navegador web? ¿Puedes explicar por qué sucede esto? ¿Qué utilidad maliciosa puede tener esta técnica?

A2.3 Hosts virtuales remotos

Intenta acceder a los hosts virtuales configurados en la actividad A2.1 de otro compañero de clase. ¿Qué configuración de red es necesaria para que esto funcione? ¿Qué problemas puedes encontrar y cómo los resolverías?

A2.4 Puertos de escucha

Configura Apache para que escuche en el puerto 8888. Modifica la configuración hosts virtuales miweb2.local creados en la actividad A2.1 para que también escuche en este nuevo puerto. Accede al sitio web utilizando el nuevo puerto desde un navegador web.

A2.5 Alias

Configura un alias en Apache para que la URL http://miweb1.local/imagenes y http://miweb2.local/imagenes apunten al directorio /var/www/html/imagenes, que contiene algunas imágenes de prueba. Verifica que puedes acceder a las imágenes a través del alias configurado.

A2.6 Directory y Options Indexes

Configura el host virtual miweb1.local para que su directorio raíz sea /www/miweb1 y desactiva la opción Indexes utilizando la directiva Directory.

  1. Crea varios archivos en el directorio /www/miweb1 y verifica que al intentar acceder al directorio desde un navegador web, no se muestre el listado de archivos disponibles.

  2. Luego, crea el directorio /www/miweb1/ficheros y añade varios archivos en él. Establece las opciones necesarias para que al acceder a http://miweb1.local/ficheros, se muestre el listado de archivos disponibles en ese directorio.

A2.7 Páginas de error personalizadas

Configura para el sitio miweb1.local una página de error personalizada para el error 404 (página no encontrada). La página de error debe estar en el directorio /www/error y debe llamarse 404.html. Verifica que al intentar acceder a una URL inexistente en miweb1.local, se muestre la página de error personalizada. Utiliza la directiva Alias para mapear el directorio /www/error a la URL /errores.

A2.8 Control de acceso

Configura el host virtual miweb2.local para que solo permita el acceso desde tu dirección IP local. Crea un directorio protegido en /www/miweb2/secretos y configura la autenticación básica por grupos para que solo los usuarios del grupo super puedan acceder a este directorio. Crea al menos tres usuarios con contraseñas diferentes en el grupo super, y otros dos usuarios para el grupo llamado invitados que no tendrán acceso al directorio protegido.

A2.9 Archivos .htaccess

Configura el host virtual miweb1.local para permitir el uso de archivos .htaccess en el directorio raíz /www/miweb1. Crea un archivo .htaccess en el directorio /www/miweb1/uploads que deniegue el acceso a todos los archivos con extensiones .log y .env. Verifica que al intentar acceder a estos archivos desde un navegador web, se reciba un error de acceso denegado (403 Forbidden).

A2.10 Instalación WordPress

Crea un host virtual llamado wordpress.local en Apache e instala WordPress en este host virtual. Configura la base de datos MySQL necesaria para que WordPress funcione correctamente. Accede a la instalación de WordPress desde un navegador web y completa el proceso de configuración inicial.