Rastrea y corrige una filtración de copias de seguridad

LinuxBeginner
Practicar Ahora

Introducción

El sitio de soporte de Northstar ofrece páginas de ayuda y descargas autorizadas. Una descarga inusual de un archivo empaquetado sugiere que se guardó por error una copia de seguridad interna junto a los archivos públicos. Eres el ingeniero de guardia con acceso de mantenimiento al sitio.

Rastrearás la solicitud, relacionarás su URL con un archivo del servidor web, moverás la copia a un almacenamiento privado y comprobarás que el sitio de soporte sigue funcionando. Basta con conocer lo básico de la terminal; aquí se introducen los códigos de estado HTTP y la correspondencia con la raíz web. Todos los datos y el tráfico son sintéticos.

Investiga la descarga sospechosa

En este paso, rastrearás una descarga sospechosa, recuperarás el archivo empaquetado e inspeccionarás si contiene datos internos.

El entorno está listo. Workstation es tu terminal cliente, situada en /home/labex/project. Web Server es una terminal de mantenimiento ya conectada al servidor del sitio. Cambia entre estas pestañas según las indicaciones. Topology muestra su relación y la accesibilidad actual del sitio.

Abre Topology para localizar el cliente y el servidor y vuelve a Workstation. El estado indica si la página de inicio responde; no indica si los archivos privados están protegidos.

Topología de Workstation y Web Server

Comprueba el acceso normal

Usa Workstation. curl envía una solicitud HTTP e imprime la respuesta. -sS oculta el progreso, pero sigue mostrando los errores de conexión. La dirección 127.0.0.1:8081 es el punto de acceso al sitio desde Workstation. 127.0.0.1 significa la máquina local: en Web Server, la misma dirección se refiere al propio servidor, no a Workstation.

curl -sS http://127.0.0.1:8081/

La respuesta contiene Northstar Support y enlaces a la ayuda y a la guía del producto. Un directorio público, o raíz web, es el directorio del sistema de archivos cuyo contenido el servidor publica mediante URL.

La guía del producto es pública de forma intencionada. Consúltala antes de cambiar nada:

curl -sS http://127.0.0.1:8081/downloads/product-guide.txt

La primera línea es Northstar Product Guide. La descarga de ejemplo autorizada en /downloads/public-examples.tar también es pública y debe seguir disponible, aunque su nombre indique que es un archivo empaquetado.

Rastrea la descarga

Cambia a Web Server. cat imprime un archivo de texto:

cat /var/log/nginx/site-access.log

Nginx es el servidor web que atiende estas solicitudes. Cada línea del registro de acceso incluye una dirección de cliente, hora, solicitud, código de estado, tamaño de respuesta en bytes y agente de usuario. GET solicita un recurso; el agente de usuario identifica el software que envía la solicitud. 200 significa que el servidor devolvió una respuesta correcta; 404 significa que no se encontró el recurso solicitado. El reenvío de red puede afectar a la dirección de cliente registrada, así que no supongas que identifica a una persona. Las entradas TopologyHealth/1.0 corresponden a las comprobaciones de estado de la propia vista del entorno.

Busca solicitudes fallidas como /admin, seguidas de una solicitud correcta a /backups/support-backup.tar. Para filtrar el registro, usa grep, que imprime las líneas que coinciden con el texto indicado:

grep 'support-backup.tar' /var/log/nginx/site-access.log

La línea coincidente debe incluir GET /backups/support-backup.tar y el estado 200. Esto sugiere una descarga, pero hay que examinar la respuesta antes de concluir que se expusieron datos internos. Por ejemplo, los campos estables de la línea relevante tienen este aspecto:

... "GET /backups/support-backup.tar HTTP/1.1" 200 10240 ... "ExternalClient/1.0"

La dirección y la marca de tiempo variarán. La ruta, la respuesta correcta y el contenido del archivo son las pistas útiles.

Confirma la exposición de la copia

Vuelve a Workstation. -o escribe la respuesta en el archivo indicado en lugar de imprimirla:

curl -sS -o /home/labex/project/support-backup.tar http://127.0.0.1:8081/backups/support-backup.tar

tar lee archivos empaquetados. -t lista sus miembros y -f selecciona el archivo:

tar -tf /home/labex/project/support-backup.tar

Debes ver internal-customers.txt. -x extrae un miembro; -O envía su contenido a la terminal sin escribir archivos extraídos:

tar -xOf /home/labex/project/support-backup.tar internal-customers.txt

El contenido empieza por INTERNAL ONLY y describe registros de clientes sintéticos. Esto confirma que la respuesta correcta contenía datos internos, no un archivo público autorizado.

Mueve la copia a un almacenamiento privado

En este paso, retirarás la copia de seguridad interna del sitio público y conservarás su contenido para mantenimiento. Usa Web Server para localizar el archivo público y aplicar la corrección.

Localiza el archivo público

Cambia a Web Server y lee la configuración del sitio:

cat /etc/nginx/conf.d/default.conf

root /srv/site; relaciona /backups/support-backup.tar con /srv/site/backups/support-backup.tar. autoindex off; desactiva los listados de directorios, pero no bloquea el acceso directo a un nombre de archivo conocido. Que un archivo no tenga enlaces no lo hace privado.

La opción -l muestra un listado detallado con tamaño, propietario y permisos de acceso. Úsala para inspeccionar el archivo público:

ls -l /srv/site/backups/support-backup.tar

La ruta mostrada confirma que el archivo está dentro de la raíz web configurada.

Conserva la copia fuera del sitio

El directorio privado /srv/private-backups ya existe fuera de /srv/site. Tienes privilegios de mantenimiento dentro de este contenedor de destino. mv mueve un archivo conservando su contenido:

mv /srv/site/backups/support-backup.tar /srv/private-backups/support-backup.tar

El sitio no puede servir este archivo mediante su correspondencia habitual con el directorio público. Así conservas la copia para mantenimiento autorizado en lugar de eliminarla. No hace falta recargar Nginx porque cambió la ubicación del archivo, no la configuración del servidor.

Comprueba desde Web Server que la copia privada sigue siendo legible:

tar -xOf /srv/private-backups/support-backup.tar internal-customers.txt

Debes ver los mismos registros internos de prueba.

Verifica la confidencialidad y la disponibilidad del sitio

En este paso, probarás el límite de acceso final y confirmarás que los recursos públicos autorizados siguen funcionando.

Vuelve a Workstation. -o /dev/null descarta el cuerpo de la respuesta y -w imprime la información de respuesta solicitada. %{http_code} selecciona el estado HTTP; \n añade un salto de línea:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/backups/support-backup.tar

El resultado esperado es 404. Este comando curl sigue terminando correctamente: una respuesta de error HTTP es distinta de un fallo de conexión. Detener el servidor haría fallar las comprobaciones de disponibilidad del curso.

Comprueba las páginas normales y las descargas autorizadas con el mismo método:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/help.html
curl -sS http://127.0.0.1:8081/downloads/product-guide.txt
curl -sS -o /home/labex/project/public-examples.tar http://127.0.0.1:8081/downloads/public-examples.tar
tar -xOf /home/labex/project/public-examples.tar example.txt

Las páginas devuelven 200. La guía empieza por Northstar Product Guide y el miembro del archivo de ejemplo contiene Public support examples. En Topology, Website reachable confirma que la página de inicio responde, no que se haya corregido la filtración. Las comprobaciones finales prueban la confidencialidad y la disponibilidad por separado.

Resumen

Rastreaste una descarga pública hasta su archivo en el servidor, moviste los datos internos fuera de la raíz web y comprobaste que las descargas privadas fallan mientras los servicios públicos siguen funcionando.