Доброго времени суток! Я пишу скрипт регенерации ключей ssh для нашей команды. На случай компрометации, утери, забыли пароль, регулярная смена итд.
Т.е. где-то на сервере будет лежать скрипт, который запускается по различным событиям для различных пользователей. Скрипт будет создавать ключ и подкладывать в puppet публичный ключ (puppet распространит его, заодно затрет старые ключи). Далее возникает вопрос, как безопасно передать ключ пользователю? Как передать passphrase?
Никак, система порочна изначально, ключ и пасфразу должен сгенерить сам юзер и передать вам публичный ключ, смысл вообще в ключах от которых есть доступ у когото кроме юзера. То есть ключ по умолчанию скомпроментирован и в случае входа злоумышленника нельзя точно сказать что ключ слил юзер.
Речь идет об автоматизации. "ключ и пасфразу должен сгенерить сам юзер и передать вам публичный ключ" - это решает проблему с защитой секретного ключа, но как тогда удостовериться, что это не злоумышленник подсовывает скрипту свой публичный ключ? Это без труда можно проверить вручную, но тогда речь уже не идет об автоматизации.
P.S. речь идет о ключах ssh. Если они генерируются на сервере скриптом от рута, то предполагать их компрометацию можно только при условии, что скомпрометирован сам сервер (у злоумышленника есть рут). Т.е. чтобы воспользоваться порочностью системы и получить доступ на сервер, нужно сначала получить рут.
P.P.S. Принципиально, я с Вами согласен. Это с точки зрения безопасности это решение добавляет возможную точку уязвимости. Но возможность её эксплуатации - под вопросом.
udereg: Для того, чтобы удостовериться, что с просьбой подписать ключ обращается не злоумышленник, нужна идентификация и аутентификация. Желательно лично либо используйте методы строгой аутентификации.