¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo proteger un servidor web con cabeceras

Después de esta lección: Puedo explicar qué protege cada cabecera de seguridad de un servidor web.

Lección de 45 min3 comandosLaboratorio de refuerzo de un servidor web: corrige una configuración débil de nginx y compruébala con curl

Una web que cuenta de más

Endurecer un servidor web es cambiar su configuración para que enseñe lo mínimo y se defienda mejor. Una panadería, un instituto o una tienda de camisetas lo necesitan igual.

Hoy aprenderás a leer lo que dice un servidor antes de que nadie lo pida, y qué cabeceras de seguridad lo protegen.

Al terminar esta lección

Nota

Puedo explicar qué protege cada cabecera de seguridad de un servidor web.

La regla de este laboratorio

Importante

Trabaja solo con tu copia del laboratorio y solo con permiso. Nunca apuntes una herramienta a una web que no sea tuya. Esta práctica no sale a internet: aprendes a defender lo tuyo.

Palabras clave

PalabraQué significaEjemplo
Servidor webun programa que responde cuando alguien pide una página
Cabecerauna línea de información que acompaña a una respuestaContent-Type
Endurecerconfigurar un sistema para que sea más difícil de atacar
Código de estadoun número que dice cómo fue la petición404
Listado de carpetauna página que enseña todos los archivos de una carpeta
Versiónel número que dice qué edición de un programa se usa

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Qué es una cabecera HTTP

Cuando tu navegador pide una página, el servidor contesta con dos partes. Primero van unas líneas de información, las cabeceras. Después va la página.

Algunas cabeceras son de seguridad: no cambian lo que ves, pero dan órdenes al navegador para que se proteja.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra superior y espera a que diga que está en marcha. Después abre el terminal que hay junto al laboratorio. Los botones Ejecutar escriben en él.

Pide la página de inicio de la panadería

Comando
curl -s http://web/

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pide una página que no existe

Comando
curl -s -o /dev/null -w '%{http_code}\n' http://web/no-existe

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pide solo las cabeceras de la respuesta

Comando
curl -I http://web

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cómo leer lo que escribió curl

El primer Run enseña las cuatro líneas de la página. Son la declaración, el título, un encabezado y un párrafo con un enlace a las listas de precios. El segundo escribe 404, que significa que esa página no existe.

El tercero escribe la línea de estado, HTTP/1.1 200 OK, y debajo las cabeceras. Cuenta cuántas ves y cuáles reconoces.

Las cuatro cabeceras de seguridad más comunes

CabeceraQué le dice al navegadorDe qué protege
X-Content-Type-OptionsUsa el tipo que declaro, no lo adivinesUn archivo que se hace pasar por otro tipo
X-Frame-OptionsNo muestres esta página dentro de otraUna web falsa que tapa la tuya con botones ocultos
Content-Security-PolicySolo carga scripts de estos sitiosCódigo malicioso metido en una página
Referrer-PolicyNo cuentes de qué página vengoQue otras webs vean direcciones privadas

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un servidor puede contar demasiado

Algunos servidores dicen su nombre y su versión en cada respuesta. Si esa versión tiene un fallo conocido, el atacante sabe qué probar.

También pueden enseñar el listado de una carpeta, o dejar a la vista archivos olvidados como una copia vieja de una configuración. Todo lo que no hace falta se quita.

Lo que un servidor enseña de más

FugaPor qué es un riesgoQué se hace
Número de versión en las cabecerasDice qué fallos conocidos puede tenerOcultar la versión
Listado de una carpetaEnseña archivos que nadie enlazóDesactivar el listado
Copias viejas de configuraciónPueden guardar clavesBorrarlas del servidor
Zona de administración abiertaCualquiera puede probarlaPedir usuario y clave

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que ocultar la versión basta para estar seguro. Ocultarla solo da menos pistas al atacante. El fallo sigue ahí hasta que actualizas el programa, así que haz las dos cosas.

Solo lo que hace falta

El principio de fondo es dar a cada parte el mínimo que necesita. La web pública enseña páginas. La zona de administración pide usuario y clave. Los archivos internos no se publican.

Un código 401 o 403 significa "no entras sin permiso". Un 200 en una zona privada es una alarma.

Para ir más lejos: la práctica del laboratorio

Después de esta lección, el laboratorio te da una web de panadería con una configuración débil y un script, lab-check, que dice qué arreglos faltan. Arreglarlos es tu trabajo allí.

Antes de empezar, escribe una lista de las cosas que, según la tabla de fugas, buscarás. Compárala con la del script al terminar.

Sobre este laboratorio y su código: Laboratorio de refuerzo de un servidor web: corrige una configuración débil de nginx y compruébala con curl

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.