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.
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.
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.
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.
docker exec web lab-checkSe 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.
docker exec web sed -i 's/server_tokens on/server_tokens off/' /etc/nginx/conf.d/default.confSe 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.
docker exec web nginx -s reloadSe 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.
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.
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.
docker exec web lab-checkSe 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.