Пересылка агента SSH или копирование ключа: что на самом деле утекает
Вход по открытому ключу отправляет подпись, а не закрытый ключ. Пересылка агента всё же даёт другому хосту возможность подписывать, и это отдельная экспозиция.
Два разных события называют утечкой ключа SSH, и они требуют разных реакций. Аутентификация по открытому ключу отправляет открытый ключ и подпись, сделанную закрытым ключом, поэтому закрытый ключ никогда не является полем запроса. Пересылка агента раскрывает другое, потому что удалённый хост, который дотягивается до пересланного агента, может попросить его подписать, ни разу не держа ключ. Если считать это одним событием, получится либо бессмысленная замена ключа, либо делегирование, которое продолжает работать.
Вход по открытому ключу передаёт подпись, а не ключ
Обмен аутентификации несёт открытый ключ пользователя и подпись над данными сеанса. Сервер проверяет эту подпись ключом, которому уже доверяет, поэтому закрытая половина может оставаться на клиенте через недоверенную сеть. Оператор VPN, наблюдающий за туннелем, в любом случае видит зашифрованный сеанс SSH.
Это описывает протокол, а не надёжность каждой конечной точки на пути. Сохраняйте проверку подлинности хоста нетронутой, потому что клиент, принимающий любой ключ хоста, отказался от другой меры, не той, что обсуждается здесь. Перехваченный сеанс и перехваченный ключ — отдельные находки, и только одна из них является потерей учётных данных. Держите обе в отдельных предложениях отчёта.
ssh-keygen -lf ~/.ssh/id_ed25519.pub ssh -o StrictHostKeyChecking=yes [email protected]
Первая команда печатает открытый отпечаток, чтобы вы сравнили его с тем, что перечисляет сервер. Вторая делает проверку ключа хоста явной вместо опоры на значение по умолчанию, которое никто не читал. Выполните обе до любых изменений с ключами, чтобы исходное состояние было задокументировано.
Пересылка агента делегирует возможность подписывать
Когда пересылка включена, на удалённом хосте появляется сокет, и локальный агент отвечает на запросы, приходящие через него. Любой, кто может использовать этот сокет во время сеанса, может аутентифицироваться как вы на хостах, принимающих загруженные идентичности. Ни один закрытый ключ не пересекает сеть, чтобы это работало.
Экспозиция — это возможность, а не файл. Поэтому пересылка относится к названной задаче и названному хосту, а не к каждому соединению ноутбука. Промежуточный хост, который передаёт соединение без пересланного агента, обычно полностью снимает потребность.
ssh-add -l ssh -o ForwardAgent=no [email protected] ssh -J [email protected] [email protected]
Первая перечисляет, какие идентичности держит агент сейчас, что стоит знать до передачи его сокета другой машине. Вторая подключается без делегирования. Третья показывает схему промежуточного хоста, которая часто полностью заменяет пересылку.
Выбирайте реакцию по имеющимся доказательствам
Подписывающая идентичность, которая считается раскрытой, требует процесса замены и отзыва, а также удаления её принятия из сервисов, которые ей доверяли. Удаление копии на ноутбуке оставляет все остальные копии нетронутыми. Начните с сервисов, затем приведите в порядок клиентов.
Временная проблема делегирования уже. Прекратите пересылку, которая не была нужна, и вместе с владельцем инцидента просмотрите, какие сеансы и идентичности она охватывала. Замена ключа может последовать, но решают это доказательства, а не беспокойство.
Отсутствие наблюдавшегося экспорта доказывает лишь то, что механизм, которого вы опасались, не появился. Оно ничего не говорит о том, что ещё мог сделать хост на другом конце этого сокета.
Держите меры контроля раздельно в отчёте
Защищайте закрытый материал, ограничивайте, кто может попросить его подписать, поддерживайте проверенную идентичность другой стороны. Это три меры, которые усиливают друг друга, и ни одна из них не заменяет другую, когда вы объясняете, что произошло.
Скомпрометированный ноутбук или привилегированное приложение на нём — третий случай с гораздо более широким радиусом поражения. Смена маршрута VPN его не решает и не восстанавливает доверие к ключу, который мог быть прочитан с диска.
Запишите, какому компоненту доверяли, была ли включена пересылка и что действительно наблюдалось. Именно эта запись делает следующее решение защитимым, а не догадку о том, что значит утечка.