¿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

Entrega un servidor web con valores seguros

Después de esta lección: Puedo revisar la configuración de un servidor web con una lista de comprobación.

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

La asesoría que contaba demasiado

Una asesoría pone su web en internet. Nadie la ataca. Pero cualquiera puede ver qué programa usa, leer un archivo de copia y listar una carpeta con los nombres de sus clientes.

Los ajustes eran los que el programa traía de fábrica. Poner valores seguros es el primer trabajo de quien entrega un servidor.

Al terminar esta lección

Nota

Puedo revisar la configuración de un servidor web con una lista de comprobación.

Palabras clave

PalabraQué significaEjemplo
Endurecercambiar ajustes para que un sistema revele y permita menos
Cabeceralínea de datos que viaja con una respuesta web
Código de estadonúmero que dice cómo fue una petición404
Valor por defectoel ajuste que se usa si nadie eligió otro
Superficie de ataquetodo lo que un desconocido puede alcanzar
Recargahacer que un servidor lea de nuevo sus ajustes, sin pararlo

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

Un servidor responde con más que una página

Toda respuesta de un servidor web lleva un código de estado y unas cabeceras. El código dice cómo fue: 200 funcionó, 404 no se encontró, 405 método no permitido.

Las cabeceras pueden decir demasiado. Cada dato que un desconocido aprende agranda tu superficie de ataque.

Tu laboratorio tiene el servidor web de una panadería, llamado web. Estos tres Run solo miran lo que dice.

Lee las cabeceras de una respuesta

Comando
curl -s -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.

Pide una página que no existe

Comando
curl -s -o /dev/null -w "%{http_code}\n" http://web/nothing-here

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

Prueba un método que un sitio estático rechaza

Comando
curl -s -o /dev/null -w "%{http_code}\n" -X DELETE 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.

Una revisión compara los ajustes con una lista

Para endurecer un servidor, lee sus ajustes línea a línea y haz siempre las mismas preguntas. ¿Dice demasiado? ¿Permite demasiado? ¿Guarda un registro?

Un valor por defecto se escribe para que el servidor arranque fácil, no para que sea seguro. La tabla recoge algunos riesgos habituales.

Ejemplo resuelto: una lista de comprobación

AjusteRiesgoOpción más segura
Versiones antiguas del protocoloSe pueden usar fallos conocidosPermitir solo las nuevas
Listado de carpetas activadoCualquiera ve los archivosDesactivarlo
La cabecera muestra la versiónAyuda a elegir un ataqueOcultar el número
Registro desactivadoNadie ve qué ocurrióMantener los registros

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

Ajustes de una asesoría para revisar

Código: bash
server {
    listen 443 ssl;
    server_name asesoria.example.com;
    ssl_protocols SSLv3 TLSv1.2;
    server_tokens on;
    autoindex on;
    location /facturas {
        proxy_pass http://127.0.0.1:5000;
    }
}

Un error frecuente

Advertencia

Mucha gente cree que ocultar el número de versión hace seguro un servidor. Solo esconde una pista. Un desconocido aún puede probar todos los fallos conocidos. Oculta la pista, pero mantén también el programa al día y quita lo que no debe estar.

Prueba un cambio y después recarga

Un error en los ajustes puede impedir que el servidor arranque tras un reinicio. Por eso pruebas el archivo antes. nginx tiene una prueba que lee los ajustes y dice si son válidos.

Solo entonces haces la recarga, que hace que el servidor en marcha lea los ajustes nuevos sin cortar a ningún visitante.

Un script de comprobación convierte cada regla de la lista en un acierto o un fallo, y así una máquina repite la revisión. El laboratorio tiene uno, y es tuyo para usarlo después de la lección.

Prueba los ajustes sin cambiar nada

Comando
docker exec web nginx -t

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

Pregunta qué versión se ejecuta

Comando
docker exec web nginx -v

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

Para ir más lejos

Cuando termines el trabajo, añade una séptima regla a lint_config: client_max_body_size con un tamaño mayor que 100m es big-upload-limit. Los tamaños terminan en k o en m.

Escribe dos pruebas propias, una con client_max_body_size 500m; y otra con client_max_body_size 2m;, y comprueba que solo la primera da un hallazgo.

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.