Как я могу стать своим собственным центром сертификации (CA) и генерировать ключи SSH для моих клиентских компьютеров?

Как я могу стать своим собственным центром сертификации (CA) и генерировать ключи SSH для моих клиентских компьютеров?

Я видел много руководств о том, как вы можете быть своим собственным центром сертификации (CA). Руководства, которые я видел, посвящены тому, как генерировать ключи ssl, а не ssh, поэтому мне было интересно, как мне генерировать ключи ssh в Ubuntu Server 14.04 LTS? Причина, по которой я хочу сделать это таким образом, заключается в том, что я могу лучше управлять ключами ssh и иметь возможность отзывать их, если они покидают компанию, чтобы они больше не могли получить доступ к этому серверу.

решение1

Вы не можете. SSH не смотрит на CRL или что-то подобное, чтобы проверить, действителен ли ключ. Если вы хотите иметь возможность легко удалить доступ к серверам для людей, которые покидают ваш магазин, я могу придумать два варианта:

  1. Не управляйте ключами напрямую, а управляйте ими через что-то вроде puppet (у него есть прямая поддержка добавления и удаления отдельных ключей в/из файла authorized_keys). Таким образом, у вас будет только одно место, где вам нужно добавить или удалить ключи ssh, а puppet гарантирует, что изменения будут активированы на всех ваших хостах.
  2. Полностью отключите PubKeyAuthentication, переключитесь на что-то другое для аутентификации, имеющее центральную систему аутентификации (например, Kerberos допускает аутентификацию без пароля и имеет центральную базу данных аутентификации, но его довольно сложно настроить для непосвященных).

решение2

OpenSSH с версии 5.4 имеет свои собственные сертификаты. Они более просты по структуре, чем сертификаты X509, но имеют гораздо более схожую функциональность.

Вы создаете обычную пару ключей ssh ​​и используете ее как CA. Предпочтительно один хостовый CA и один пользовательский CA. Затем вы можете подписывать открытые ключи с помощью этого CA с помощью ssh-keygen. Например

ssh-keygen -s /path/to/ca_key -I key_id -z serial \
-n principal1,principal2 -V +53w /path/to/user_key.pub

Эта команда создаст файл с именем user_key-cert.pub, который теперь является вашим сертификатом. Сертификат действителен в течение 53 недель и может использоваться для входа в качестве principal1 и principal2 на любом хосте, который доверяет CA, подписавшему ключ.

Чтобы указать sshd доверять этому CA, просто обратитесь к ca_key.pub в sshd_config следующим образом:

TrustedUserCAKeys /etc/ssh/ca_key.pub

Также есть несколько способов отозвать сертификаты ssh (ваш фактический вопрос), и они упоминаются в руководствах openssh. Но основная опция в sshd_config — RevokedKeys. Для этого можно использовать как текстовые файлы, так и бинарные KRL.

Для получения дополнительной информации я написал несколько руководств по центрам сертификации SSH. https://framkant.org/2016/10/setting-up-a-ssh-certificate-authority-ca/

Для более детального и масштабируемого контроля доступа ознакомьтесь с: https://framkant.org/2017/07/scalable-access-control-using-openssh-certificates/

Связанный контент