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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Endurecer | cambiar ajustes para que un sistema revele y permita menos | |
| Cabecera | línea de datos que viaja con una respuesta web | |
| Código de estado | número que dice cómo fue una petición | 404 |
| Valor por defecto | el ajuste que se usa si nadie eligió otro | |
| Superficie de ataque | todo lo que un desconocido puede alcanzar | |
| Recarga | hacer 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
curl -s -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.
Pide una página que no existe
curl -s -o /dev/null -w "%{http_code}\n" http://web/nothing-hereSe 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
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
| Ajuste | Riesgo | Opción más segura |
|---|---|---|
| Versiones antiguas del protocolo | Se pueden usar fallos conocidos | Permitir solo las nuevas |
| Listado de carpetas activado | Cualquiera ve los archivos | Desactivarlo |
| La cabecera muestra la versión | Ayuda a elegir un ataque | Ocultar el número |
| Registro desactivado | Nadie 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
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
docker exec web nginx -tSe 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
docker exec web nginx -vSe 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.