В каждой компании, в которой я работал, всегда было больно в задницу управлять ключами SSH. У нас были разные способы управления ими. Но в основном это были некоторые системы CM, такие как puppet/chef/ansible или просто ручное копирование ключей или даже некрасивые скрипты bash:D

Также слышал, что некоторые люди используют LDAP или любую БД в качестве хранилища ключей ssh. Но все же вам нужна дополнительная автоматизация, например, инструмент CM для установки / удаления ключа на сервере.

Итак, вопрос в том, есть ли какой-то хороший и современный способ сделать это, чего я не знаю? Насколько крупные ИТ-компании (например, Google, Facebook и т.д.) Работают с ключами?

1 ответ1

0

(Мета: ИМО, этот вопрос не основывается на мнении.)

Если вы используете довольно современные версии Linux/Unix с довольно свежим OpenSSH, вы можете использовать сертификаты OpenSSH. Если вы хотите, чтобы у MFA было ощущение "билета", вы можете выдать временные сертификаты OpenSSH.

Суть сертификатов OpenSSH заключается в том, что единственной вещью, которую необходимо установить на стороне sshd, является открытый ключ SSH-CA, на который ссылается директива TrustedUserCAKeys в sshd_config.

С помощью директив AuthorizedPrincipals * вы также можете принять набор имен участников (в основном имен пользователей) в сертификатах OpenSSH для другой учетной записи локального пользователя.

Сертификаты OpenSSH не являются сертификатами X.509, они имеют другой формат, указанный в документе исходного дерева PROTOCOL.certkeys.

Вы найдете несколько веб-страниц о том, как использовать ssh-keygen для подписи открытых ключей с помощью SSH-CA (например, Использование сертификатов SSH).

Я реализовал такой небольшой SSH-CA для клиента, работающего в качестве веб-службы, для выдачи временных пользовательских сертификатов на основе многофакторной аутентификации (LDAP и OTP).

Вы найдете несколько реализаций с открытым исходным кодом в обычных местах. Я сознательно не даю здесь список, потому что после просмотра нескольких из них я реализовал свой собственный и, таким образом, не хочу одобрять конкретную реализацию. Это не означает, что эти реализации не работают. Они просто не соответствовали моим конкретным требованиям клиентов.

Предостережение:

В настоящее время он работает только с OpenSSH или libssh на стороне клиента. Шпатлевка пока не поддерживает это. Также нет поддержки сетевых устройств и других специальных устройств.

PS: Тем не менее, я бы рекомендовал использовать приличное управление пользователями на основе LDAP, которое даст вам больше, что вам нужно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .