Практическое задание

Эта задача — шаг 16 курса «Расследование на сервере»

Кто подложил чужой SSH-ключ

средне~12 мин

Доступы к серверам раздаются через git-репозиторий /srv/access: файл keys/authorized_keys правили многие. Сегодня в нём нашёлся чужой ключ с комментарием intruder@kali.

  1. Найди коммит, в котором эта строка впервые появилась, и запиши его полный хеш (40 символов) в /root/culprit.txt.
  2. Обезвредь доступ: удали строку с этим ключом из keys/authorized_keys (удобно во вкладке «Редактор») и закоммить правку. Остальные ключи не трогай, историю не переписывай — улика должна остаться в прошлых коммитах.
Что потренируешь:
  • git blame
  • git log -S
  • история строки
  • git rev-parse
  • расследование
  • git commit

Разбор темы

При разборе инцидента в репозитории важно найти не последнее изменение файла, а момент, когда в нём появилась конкретная строка. git blame подписывает каждую строку коммитом, который её принёс, а ключ -L сужает вывод до строки, найденной по шаблону; формат --porcelain печатает полный хеш. Второй путь — pickaxe-поиск git log -S: он выдаёт коммиты, где число вхождений текста изменилось, самый старый из них — появление. Из коммита потом видно автора и время — с этого начинается разговор о том, как ключ попал в доступы. Найденный ключ убирают обычным новым коммитом: переписывать историю нельзя, ведь прошлые коммиты — это и есть улика.

Что проверяется

  1. записан полный хеш
  2. найден коммит, где ключ появился
  3. чужой ключ удалён и закоммичен
  4. остальные ключи и история на месте

Как это выглядит