Найти и устранить утечку резервной копии

LinuxBeginner
Практиковаться сейчас

Введение

На сайте поддержки Northstar размещены справочные страницы и разрешённые загрузки. Необычное скачивание архива указывает на то, что внутреннюю резервную копию могли случайно сохранить среди общедоступных файлов. Вы — дежурный инженер с доступом для обслуживания сайта.

Вы отследите запрос, сопоставите его URL с файлом на веб-сервере, переместите резервную копию в закрытое хранилище и проверите, что сайт поддержки продолжает работать. Достаточно базового знакомства с терминалом; коды состояния HTTP и сопоставление с корневым каталогом сайта объясняются здесь. Все записи и весь трафик синтетические.

Расследуйте подозрительное скачивание

На этом этапе вы отследите подозрительное скачивание, получите архив и проверите, содержит ли он внутренние данные.

Среда готова к работе. Workstation — ваш клиентский терминал, уже открытый в /home/labex/project. Web Server — терминал обслуживания, уже подключённый к серверу сайта. Переключайтесь между вкладками по инструкции. Topology показывает их связь и текущую доступность сайта.

Откройте Topology, найдите клиент и сервер, затем вернитесь в Workstation. Статус показывает, отвечает ли главная страница, но не говорит о защищённости закрытых файлов.

Топология Workstation и Web Server

Проверьте обычный доступ

Используйте Workstation. curl отправляет HTTP-запрос и выводит ответ. -sS скрывает индикатор выполнения, но сохраняет сообщения об ошибках подключения. 127.0.0.1:8081 — адрес сайта, доступный из Workstation. 127.0.0.1 означает локальную машину: в Web Server этот же адрес указывает на сам сервер, а не на Workstation.

curl -sS http://127.0.0.1:8081/

Ответ содержит Northstar Support и ссылки на справку и руководство по продукту. Общедоступный каталог, или корневой каталог сайта, — каталог файловой системы, содержимое которого сервер предоставляет через URL.

Руководство по продукту опубликовано намеренно. Получите его, прежде чем что-либо менять:

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

Первая строка — Northstar Product Guide. Разрешённый пример по адресу /downloads/public-examples.tar также общедоступен и должен оставаться доступным, хотя его имя указывает на архив.

Отследите скачивание

Переключитесь в Web Server. cat выводит текстовый файл:

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

Nginx — веб-сервер, обрабатывающий эти запросы. Каждая строка журнала доступа содержит адрес клиента, время, запрос, код состояния, размер ответа в байтах и User-Agent. GET запрашивает ресурс, а User-Agent обозначает программу, отправившую запрос. 200 означает успешный ответ сервера; 404 — что запрошенный ресурс не найден. Сетевая переадресация может влиять на записанный адрес клиента, поэтому не считайте, что он идентифицирует конкретного человека. Записи TopologyHealth/1.0 — собственные проверки работоспособности представления среды.

Найдите неудачные запросы, например к /admin, за которыми следует успешный запрос к /backups/support-backup.tar. Чтобы сузить выборку, используйте grep: он выводит строки, соответствующие указанному тексту.

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

Подходящая строка должна содержать GET /backups/support-backup.tar и статус 200. Это указывает на возможное скачивание, но перед выводом об утечке внутренних данных нужно изучить ответ. Например, стабильные поля нужной строки выглядят так:

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

Адрес и временная метка будут отличаться. Полезные зацепки — путь, успешный ответ и содержимое архива.

Подтвердите открытый доступ к резервной копии

Вернитесь в Workstation. -o записывает ответ в указанный файл вместо вывода в терминал:

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

tar читает архивы. -t перечисляет их элементы, а -f выбирает архив:

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

Вы должны увидеть internal-customers.txt. -x извлекает элемент, а -O направляет его содержимое в терминал, не создавая извлечённые файлы:

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

Содержимое начинается с INTERNAL ONLY и описывает синтетические записи клиентов. Это подтверждает, что успешный ответ содержал внутренние данные, а не разрешённый общедоступный архив.

Переместите резервную копию в закрытое хранилище

На этом этапе вы уберёте внутреннюю резервную копию с общедоступного сайта, сохранив её содержимое для обслуживания. В Web Server найдите открытый файл и устраните проблему.

Найдите общедоступный файл

Переключитесь в Web Server и прочитайте конфигурацию сайта:

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

root /srv/site; сопоставляет /backups/support-backup.tar с /srv/site/backups/support-backup.tar. autoindex off; отключает просмотр списка файлов каталога, но не блокирует прямой доступ по известному имени файла. Отсутствие ссылки не делает файл закрытым.

Параметр -l выводит подробный список с размером, владельцем и правами доступа. Проверьте с его помощью общедоступный файл:

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

Показанный путь подтверждает, что архив находится внутри настроенного корневого каталога сайта.

Сохраните резервную копию за пределами сайта

Закрытый каталог /srv/private-backups уже существует за пределами /srv/site. В этом целевом контейнере у вас есть права для обслуживания. mv перемещает файл, сохраняя его содержимое:

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

Сайт больше не сможет отдавать этот файл через обычное сопоставление с общедоступным каталогом. При этом резервная копия сохраняется для разрешённого обслуживания, а не удаляется. Перезагрузка конфигурации Nginx не нужна: изменилось расположение файла, а не конфигурация сервера.

Убедитесь в Web Server, что закрытая копия всё ещё читается:

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

Вы должны увидеть те же внутренние тестовые записи.

Проверьте конфиденциальность и доступность сайта

На этом этапе вы проверите итоговую границу доступа и убедитесь, что разрешённые общедоступные ресурсы продолжают работать.

Вернитесь в Workstation. -o /dev/null отбрасывает тело ответа, а -w выводит указанные сведения об ответе. %{http_code} выбирает код HTTP, а \n добавляет перевод строки:

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

Ожидается 404. При этом сама команда curl завершается успешно: ответ с ошибкой HTTP отличается от сбоя подключения. Остановка сервера приведёт к провалу проверок доступности в курсе.

Тем же способом проверьте обычные страницы и разрешённые загрузки:

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

Страницы возвращают 200. Руководство начинается с Northstar Product Guide, а элемент архива с примерами содержит Public support examples. В Topology надпись Website reachable подтверждает ответ главной страницы, а не устранение утечки. Итоговые проверки отдельно оценивают конфиденциальность и доступность.

Резюме

Вы отследили общедоступное скачивание до файла на сервере, переместили внутренние данные за пределы корневого каталога сайта и проверили, что скачивание закрытых файлов больше не работает, а общедоступные сервисы продолжают работать.