Tabla de Contenidos

07 - Servidores web

Un servidor web es un software que se ejecuta en un servidor físico o virtual y su función principal es servir contenido web (como páginas HTML, imágenes, archivos, etc.) a los clientes que lo solicitan a través de un navegador. Este contenido se entrega mediante el protocolo http o su versión segura, https.

Los servidores web reciben las solicitudes de los clientes, interpretan estas peticiones y devuelven la respuesta adecuada, que generalmente es una página web completa. Además, permiten la ejecución de aplicaciones del lado del servidor, como scripts PHP, y gestionan la seguridad y la autenticación de los usuarios.

Un servidor web:

Arquitectura cliente-servidor

La arquitectura cliente-servidor es un modelo de red en el que los ordenadroes cliente solicitan servicios o recursos de un servidor centralizado. Este modelo es la base del funcionamiento de un servidor web.

En esta arquitectura, el servidor web desempeña el rol de proveedor de servicios, mientras que el cliente actúa como solicitante de esos servicios. Esta relación es fundamental para las operaciones de Internet, donde los navegadores web se conectan a servidores web para acceder a contenido.

HTTP y HTTPS

El Protocolo HTTP (Hypertext Transfer Protocol) es la base de la comunicación en la web. Es un protocolo de la capa de aplicación que define cómo los mensajes son formateados y transmitidos, y cómo los servidores y navegadores deben responder a las distintas peticiones.

Métodos HTTP

Los métodos HTTP son las acciones que el cliente solicita al servidor. Los más comunes son:

Códigos de estado HTTP

Los códigos de estado HTTP son devueltos por el servidor para indicar el resultado de la solicitud realizada por el cliente. Se dividen en varias categorías:

HTTPS

HTTPS (Hypertext Transfer Protocol Secure) es la versión segura de HTTP. La diferencia principal es que HTTPS utiliza el protocolo SSL/TLS (Secure Sockets Layer/Transport Layer Security) para cifrar los datos transmitidos entre el cliente y el servidor, garantizando la confidencialidad e integridad de la información.

Implementar HTTPS en lugar de HTTP tiene múltiples beneficios:

Servidores web

Existen varios servidores web que son ampliamente utilizados en la industria, cada uno con características y enfoques específicos que los hacen adecuados para diferentes necesidades. A continuación, se describen algunos de los servidores web más populares.

Apache

Apache HTTP Server, comúnmente conocido como Apache, es uno de los servidores web más utilizados en el mundo. Es un software de código abierto, mantenido por la Apache Software Foundation, y ha sido un pilar en la infraestructura de la web desde mediados de la década de 1990. Entre sus características destacan:

Nginx

Nginx (pronunciado como “Engine-X”) es un servidor web de alto rendimiento que también actúa como proxy inverso, balanceador de carga y servidor de correo. Es conocido por su eficiencia al manejar conexiones simultáneas y su baja huella de recursos. Entre sus características destacan:

Microsoft IIS

Internet Information Services (IIS) es el servidor web desarrollado por Microsoft y está integrado en el sistema operativo Windows. Es una opción popular en entornos empresariales que utilizan tecnologías Microsoft. Entre sus características destacan:

Tomcat

Apache Tomcat es un servidor de aplicaciones de código abierto que ejecuta aplicaciones Java, desarrollado por la Apache Software Foundation. Es ampliamente utilizado para aplicaciones empresariales basadas en Java. Entre sus características destacan:

LiteSpeed

LiteSpeed Web Server es un servidor web comercial que se destaca por su rendimiento y optimización para alojamientos compartidos y de alto tráfico. Es compatible con Apache, lo que facilita la migración. Entre sus características destacan:

Sitios virtuales

Un sitio virtual es una configuración en un servidor web que permite alojar múltiples sitios web en un solo servidor físico o virtual. Cada sitio virtual actúa como si fuera un servidor independiente, pero en realidad, comparte los mismos recursos del servidor host. Esta es una práctica común en la administración de servidores web para optimizar el uso de recursos y reducir costos.

Servidor dedicado vs sitios virtuales

Servidor dedicado

Sitios Virtuales:

Tipos de sitios virtuales

Subdominios

Los subdominios son una extensión de un dominio principal y pueden ser utilizados para organizar y acceder a secciones específicas de un sitio web. Por ejemplo, blog.ejemplo.com y tienda.ejemplo.com son subdominios del dominio ejemplo.com.

Seguridad

Principios Básicos de Seguridad en Servidores Web

La seguridad en un servidor web se basa en varios principios fundamentales que deben implementarse para proteger tanto el servidor como los datos que maneja:

Configuración de HTTPS

HTTPS (Hypertext Transfer Protocol Secure) es esencial para proteger la comunicación entre el servidor web y los clientes. HTTPS utiliza TLS (Transport Layer Security) para cifrar los datos, garantizando la confidencialidad e integridad de la información.

Protección Contra Ataques Comunes

Los servidores web son un objetivo frecuente de diversos tipos de ataques. Implementar las siguientes medidas puede ayudar a protegerlos:

Configuración de Cabeceras HTTP de Seguridad

Las cabeceras HTTP pueden reforzar la seguridad del servidor web al controlar cómo los navegadores manejan el contenido y la comunicación con el servidor:

Gestión de Actualizaciones y Parches

Mantener el servidor web actualizado es crucial para la seguridad:

Configuración de Permisos y Accesos

Monitorización y Logs

Ejercicios

Ejercicio 1

Realiza una tabla comparativa entre Apache, Nginx, IIS, Tomcat y LiteSpeed, destacando sus características principales como modularidad, rendimiento, seguridad, y casos de uso típicos.

Ejercicio 2

Investiga y describe los pasos necesarios para implementar HTTPS en un servidor web de tu elección. Incluye la obtención e instalación de un certificado SSL/TLS, la configuración del servidor para forzar el uso de HTTPS, y la gestión de certificados expirados.

Ejercicio 3

Supón que tienes que alojar tres sitios web diferentes en un único servidor. Describe cómo configurarías sitios virtuales para estos tres dominios, considerando las mejores prácticas de seguridad (por ejemplo, uso de HTTPS, permisos de archivos, y aislamiento entre sitios).

Ejercicio 4

Configura las cabeceras HTTP de seguridad en un servidor web de tu elección. Explica cómo cada cabecera (CSP, X-Frame-Options, X-Content-Type-Options, HSTS) contribuye a la seguridad del servidor y proporciona ejemplos de configuración.

Ejercicio 5

Realiza una simulación donde identificas un ataque DDoS en un servidor web. Explica cómo podrías mitigar este ataque utilizando un firewall de aplicaciones web (WAF) y otros métodos, como servicios de mitigación DDoS.

Ejercicio 6

Describe un escenario en el que un servidor web podría ser vulnerable a un ataque XSS o de inyección SQL. Explica cómo podrías proteger el servidor de estos ataques mediante la validación de entradas y otras configuraciones de seguridad.

Ejercicio 7

Investiga y describe cómo se gestionan las actualizaciones y parches en un servidor web. Explica la importancia de mantener el software actualizado y describe un plan de mantenimiento regular para asegurar la seguridad del servidor.

Ejercicio 8

Investiga el principio de menor privilegio en la gestión de servidores web. Describe cómo aplicarías este principio al configurar los permisos de archivos y directorios en un servidor web para maximizar la seguridad.

Ejercicio 9

Supón que un servidor web está configurado para manejar múltiples subdominios. Describe cómo configurarías los subdominios como sitios virtuales separados, asegurando que cada uno tenga su propia configuración de seguridad y aislamiento.