¿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

Publicar un sitio con ajustes seguros

Después de esta lección: Puedo reconocer los ajustes inseguros de un sitio antes de publicarlo.

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

Qué ve un visitante curioso de tu sitio

Publicar un sitio es ponerlo en un servidor donde cualquiera pueda visitarlo. Los ajustes del servidor deciden qué enseña de más y qué protege.

Una sola regla: trabaja solo en tu copia del laboratorio y solo con permiso. Aprendes esto para defender tus sitios, no para mirar los de otros.

Al final de esta lección

Nota

Puedo reconocer los ajustes inseguros de un sitio antes de publicarlo.

Palabras clave

PalabraQué significaEjemplo
Publicarponer un sitio en un servidor para que lo visite cualquiera
Configuraciónel archivo de ajustes de un servidor
Cabecerauna línea con datos sobre la respuestaServer: nginx
Listado de carpetauna página que enseña todos los archivos de una carpeta
Archivo olvidadouna copia o un resto que nadie quería publicarconfig.php.bak

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

Un servidor puede contar más de lo necesario

Un servidor mal ajustado regala pistas. Puede decir qué programa y qué versión usa. Una versión vieja tiene fallos conocidos y un atacante lo sabe.

También puede enseñar una carpeta entera. Y puede dejar a la vista archivos que nadie quería publicar.

Mira qué programa dice usar el sitio

Comando
curl -sI http://web/ | grep -i '^server'

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

Lee un archivo de la carpeta de precios

Comando
curl -s http://web/files/prices.csv

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

Un error frecuente

Advertencia

Mucha gente cree que un archivo está protegido si nadie conoce su nombre. No es así. Basta con probar nombres comunes, como una copia con .bak al final. Un archivo secreto no debe estar en la carpeta que se publica.

Algunas cabeceras protegen al visitante

El servidor puede añadir cabeceras que dan órdenes al navegador. Cada una cierra una puerta concreta.

Por ejemplo, una dice al navegador que no adivine el tipo de un archivo. Otra impide que otra web meta tu página dentro de un marco.

Ejemplo resuelto: cuatro cabeceras y su protección

CabeceraQué ordena al navegadorDe qué protege
X-Content-Type-OptionsNo adivines el tipo de archivoUn archivo disfrazado que se ejecuta
X-Frame-OptionsNo dejes que otra web me meta en un marcoQue engañen con un botón escondido
Content-Security-PolicySolo carga lo que yo permitoCódigo de otros sitios en tu página
Referrer-PolicyNo cuentes de dónde vienesQue se filtre la dirección anterior

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

Cada ajuste es una línea de la configuración

La configuración de nginx es un texto. Cada ajuste es una línea que acaba en punto y coma.

Para revisar un sitio antes de publicarlo, lees esas líneas con una lista de reglas. Un programa puede hacer la misma revisión por ti.

Una configuración con dos ajustes flojos

Código: bash
# Ejemplo de configuración, escrita a mano para esta lección
server {
  listen 80;
  server_tokens on;
  autoindex on;
  add_header X-Frame-Options DENY;
}

Las reglas que usarás en la tarea

AjusteValor inseguroAviso que debe dar tu programa
server_tokenson, o ausenteserver_tokens
autoindexonautoindex
add_header X-Content-Type-Optionsausentefalta X-Content-Type-Options
add_header X-Frame-Optionsausentefalta X-Frame-Options

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

Para ir más lejos: una quinta regla

Añade una regla para la cabecera Referrer-Policy. Escribe el aviso que devolverías cuando falte.

Después explica en una frase de qué protege esa cabecera a quien visita tu sitio.

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.