¿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

Fundamentos de bastionado de servidores web

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de contenedores8 min de lectura7 comandos

Qué vas a hacer

Un servidor web suele decir más de lo necesario: su versión exacta, los archivos de una carpeta, archivos que nadie quería publicar. Bastionar (en inglés, hardening) es cambiar su configuración para que diga y muestre menos. Mirarás una web pequeña, ejecutarás una comprobación que lista lo que está mal, arreglarás una cosa dentro del servidor en marcha y volverás a ejecutar la comprobación. Tu copia no tiene salida a internet, así que la única web que tocas es la tuya.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra superior de esta lección y espera a que diga que está en marcha. La web es el servicio llamado web, y el terminal llega a ella con ese nombre. Cada botón Ejecutar escribe su comando en el terminal de tu laboratorio, uno detrás de otro y en la misma sesión. Para verlos o para escribir los tuyos, pulsa Abrir el terminal (pestaña nueva) en la barra.

1. Mira qué dice el servidor

curl -I pide solo las cabeceras. Fíjate en la línea que empieza por Server:. Le cuenta a todos los visitantes, y a todos los atacantes, la versión exacta de nginx: nginx/1.27.5.

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.

2. Mira qué muestra

Esta carpeta no tiene página de inicio propia, así que el servidor lista lo que contiene. La respuesta es una página titulada Index of /files/ con dos archivos, prices.csv y suppliers.txt. Nadie pidió que se mostrara una lista.

Comando
curl http://web/files/

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

3. Ejecuta la comprobación

docker en este terminal puede mirar, entrar y reiniciar el servicio del laboratorio, y este comando ejecuta otro dentro de él. lab-check le hace nueve preguntas al servidor en marcha e imprime PASS o FAIL por cada una. Al principio todas dicen FAIL y la última línea es Some checks fail.

Comando
docker exec web lab-check

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

4. Arregla una cosa

La configuración es el archivo /etc/nginx/conf.d/default.conf dentro del contenedor. Dice server_tokens on;, que es lo que pone la versión en la cabecera. Este comando cambia on por off. sed es un editor que hace un cambio desde la línea de comandos. Para cambios más grandes, abre el archivo con docker exec -it web sh y edítalo con vi.

Comando
docker exec web sed -i 's/server_tokens on/server_tokens off/' /etc/nginx/conf.d/default.conf

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

5. Recarga la configuración

nginx lee su configuración una sola vez, así que le dices que la lea de nuevo. reload lo hace sin parar la web. Imprime un aviso, signal process started, que no es un error.

Comando
docker exec web nginx -s reload

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

6. Mira de nuevo

La línea Server: ahora dice solo nginx, sin número.

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.

7. Ejecuta la comprobación otra vez

La primera línea es ahora PASS the Server header shows no version number, y las otras ocho siguen diciendo FAIL: cada arreglo cambia solo su propia línea. El listado de la carpeta, las cabeceras de seguridad que faltan, la carpeta .git, el archivo de copia y la zona de administración abierta te toca arreglarlos igual, hasta que la última línea diga All checks pass.

Comando
docker exec web lab-check

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

8. Mira qué se conserva

Pulsa Detener el laboratorio en la barra y después Iniciar el laboratorio de nuevo, y ejecuta la comprobación otra vez: tu arreglo sigue ahí. La carpeta de configuración es un volumen con nombre, y la plataforma guarda los volúmenes. Un cambio hecho en cualquier otro sitio del contenedor desaparecería.

Para el profesorado

Consejo

Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia de cada alumno. Nada se corrige solo: el alumno entrega la salida de curl -I antes y después, y el último lab-check, y usted califica las pruebas. Cópiela en su propio módulo y modifíquela, o cree una desde cero con el menú Laboratorio del creador de lecciones.

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 estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.