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

Является ли центральное расположение для authorized_keys хорошей идеей?

Я настраиваю облачный сервер для запуска следующего стека: Ruby, Passenger, Apache; под Ubuntu 10.04 (Lucid Lynx).

Чтобы упростить управление сервером, я установил ключи RSA на root, и www-data так, чтобы я смог ssh в сервер. Что мне не понравилось, так это то, что www-dataс .ssh каталог сидел в /var/www который является установкой каталога по умолчанию для apache. Меня беспокоит, что если apache настроен неправильно, то .ssh каталог может быть выставлен.

Я нашел решение переместить ~/.ssh/authorized_keys файл в центральное расположение, изменив AuthorizedKeysFile в /etc/ssh/sshd_config. У этого есть 2 преимущества: одно место для ключей и отсутствие необходимости беспокоиться о плохой конфигурации apache. Единственный минус, который я могу придумать, заключается в том, что теперь каждый пользователь доступен для входа на сервер (очевидно, палка о двух концах центрального ключевого файла).

Что я упустил в этой конфигурации? Я слишком обнажился, или это лучшее решение, чем индивидуальное authorized_keys файлы?

я зеленый когда дело доходит до управления сервером, но я полностью готов называть плохим именем за плохие поступки. : D

Все файлы ключей могут быть централизованы в одном каталоге и не могут быть смешаны в одном файле.

Просто настройте sshd_config файл вроде этого:

AuthorizedKeysFile  /etc/ssh/authorized_keys/%u

На вашем сервере:

  • Ключи www-data будут в /etc/ssh/authorized_keys/www-data
  • корневые ключи будут в /etc/ssh/authorized_keys/root

Что касается прав доступа, эти настройки принимаются sshd:

/etc/ssh/authorized_keys принадлежит root:root и имеет режим 755. Ключевые файлы принадлежат root:root и иметь режим 644.

Могут работать и другие режимы, но я их не тестировал.

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

С точки зрения безопасности я также считаю, что это УЖАСНО Идея, чтобы все делили учетную запись службы: прямо сейчас только вы, и вы знаете, что вносите изменения. Через 5 лет, когда у вас будет 5 администраторов, вам захочется узнать, кто что изменил, и покопаться в журналах аудита, чтобы увидеть, кто какой ключ использовал, когда это королевская боль.
Лучше, если люди будут входить в систему как они сами и использовать sudo или что-то подобное, чтобы повысить свои привилегии и делать все, что им нужно.


Если вы все еще хотите централизовать ключи SSH, я предлагаю изучить систему развертывания, например Кукольный или радость управлять / распространять authorized_keys файлы в соответствующие ~user/.ssh/ каталоги (или взломайте самодельное решение, которое помещает их в SCP).
Когда вы расширяетесь на несколько серверов, вы можете посмотреть на патч открытого ключа LDAP для более старых версий OpenSSH (или AuthorizedKeysCommand директива и соответствующий сценарий в более новой версии OpenSSH), чтобы вы могли централизовать своих пользователей и не распространять их ключи по всей сети, но это, вероятно, будет довольно далеко для вас.