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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Servidor web | un programa que responde cuando alguien pide una página | |
| Cabecera | una línea de información que acompaña a una respuesta | Content-Type |
| Endurecer | configurar un sistema para que sea más difícil de atacar | |
| Código de estado | un número que dice cómo fue la petición | 404 |
| Listado de carpeta | una página que enseña todos los archivos de una carpeta | |
| Versión | el 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
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
curl -s -o /dev/null -w '%{http_code}\n' http://web/no-existeSe 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
curl -I http://webSe 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
| Cabecera | Qué le dice al navegador | De qué protege |
|---|---|---|
| X-Content-Type-Options | Usa el tipo que declaro, no lo adivines | Un archivo que se hace pasar por otro tipo |
| X-Frame-Options | No muestres esta página dentro de otra | Una web falsa que tapa la tuya con botones ocultos |
| Content-Security-Policy | Solo carga scripts de estos sitios | Código malicioso metido en una página |
| Referrer-Policy | No cuentes de qué página vengo | Que 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
| Fuga | Por qué es un riesgo | Qué se hace |
|---|---|---|
| Número de versión en las cabeceras | Dice qué fallos conocidos puede tener | Ocultar la versión |
| Listado de una carpeta | Enseña archivos que nadie enlazó | Desactivar el listado |
| Copias viejas de configuración | Pueden guardar claves | Borrarlas del servidor |
| Zona de administración abierta | Cualquiera puede probarla | Pedir 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.