Назад | Перейти на главную страницу

Централизованная система управления ключами SSH?

Мы планируем перейти на управление логинами SSH на основе ключей и задаемся вопросом, есть ли какие-либо системы управления ключами, которые позволили бы нам централизованно управлять ключами доступа по всему миру.

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

Кто-нибудь знает о такой системе, коммерческой или с открытым исходным кодом?

ПРИМЕЧАНИЕ. Чтобы уточнить, нам нужно управление ключами для довольно большого количества облачных серверов (типа EC2) и небольшого количества пользователей сервисов. Я думаю, что предложенный ниже патч LDAP + может быть подходящим вариантом.

Пары ключей должны быть созданы пользователем.

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

Публичная половина предоставляется вам (с помощью любого механизма, который вы хотите: веб-форма, электронная почта, дайте мне-на-компакт-диске) для централизации, как вы хотите. В некоторых местах открытые ключи хранятся в LDAP. Другие выталкивают authorized_keys файлы, используя их систему развертывания.


В моей среде пользователи, которым нужен доступ к оболочке, предоставляют мне свои открытые ключи. Эти ключи добавляются в нашу систему LDAP, и sshd обращается к открытым ключам, перечисленным для каждого пользователя, для их аутентификации посредством Патч открытого ключа LDAP.
Когда кому-то нужно добавить дополнительный ключ или отозвать существующий, они сообщают об этом администратору, и мы позаботимся об этом. В конце концов, по мере того, как мы масштабируемся, я буду реализовывать систему, которая позволит людям менять свои собственные открытые ключи.

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


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

Пары ключей не должны создаваться где-либо, кроме как на компьютере каждого пользователя. Закрытые ключи названы так не просто так.

Тем не менее, я мог видеть вариант использования какого-то централизованного репозитория открытых ключей пользователей. Один из вариантов - хранить открытые ключи в OpenLDAP - последние версии OpenSSH могут считывать ключи из LDAP.

Есть много способов сделать это. Хранилище ключей LDAP упоминалось несколько раз, и я сделал это, и оно работает, насколько это возможно. Тем не менее, у LDAP есть свои особенности управления, которые требуют некоторого изучения.

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

Существует множество отличных коммерческих решений и решений с открытым исходным кодом, таких как Userify [1] (где я работаю), Universal Key Manager [2], SSH Key Box [3] и т. Д. Это зависит от ваших потребностей и от того, являетесь ли вы ищите что-то, что централизует управление при децентрализации работы (чтобы ваши серверы не полагались на центральный орган для входа в систему ... в этом случае вы не сможете войти ни на один из своих серверов, если, скажем, ваш Сервер LDAP не работает!)

  1. https://userify.com

  2. https://www.ssh.com/products/universal-ssh-key-manager/

  3. https://www.sshkeybox.com

См. Также это обсуждение Slant:

https://www.slant.co/topics/8010/~managers-for-ssh-keys

Я знаю, что это немного более старый вопрос, но Google возвращает его довольно высоко при поиске таких вещей.

Для тех из нас, кто ищет решение помимо LDAP, я только что нашел проект "SKM": https://sites.google.com/site/jeromeboismartel/code-s-corner/ssh-key-management-with-skimp