Я настраиваю облачный сервер для запуска следующего стека: 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
На вашем сервере:
/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), чтобы вы могли централизовать своих пользователей и не распространять их ключи по всей сети, но это, вероятно, будет довольно далеко для вас.