Я нахожусь в процессе настройки облачного сервера для запуска следующего стека: Ruby, Passenger, Apache; под Ubuntu 10.04 (Lucid Lynx).
В процессе, чтобы упростить управление сервером, я установил ключи RSA root
и www-data
включил их ssh
на сервере. То , что я не сделал , как было то , что www-data
«s .ssh
каталог сидел в /var/www
котором настроен каталог по умолчанию для Apache. Меня беспокоит то, что если Apache не настроен должным образом, .ssh
каталог может быть открыт.
Я наткнулся на решение , чтобы переместить ~/.ssh/authorized_keys
файл в центре города, изменяя AuthorizedKeysFile
в /etc/ssh/sshd_config
. Это имеет 2 плюса: одно место для ключей, и вам не нужно беспокоиться о плохой конфигурации Apache. Единственный минус, о котором я могу подумать, заключается в том, что теперь каждый пользователь доступен для входа на сервер (очевидно, обоюдоострый меч файла центрального ключа).
Есть ли что-то, что я пропустил в этой конфигурации? Я переделал себя, или это лучшее решение, чем отдельные authorized_keys
файлы?
Я зеленый, когда дело доходит до управления сервером, но я полностью готов называться дурными именами за плохие поступки. : D
источник
id_rsa
файл,~/.ssh
и им удается это прочитать)Ответы:
Все файлы ключей могут быть централизованы в одном каталоге и не смешиваться в одном и том же файле.
Просто настройте
sshd_config
файл так:На вашем сервере:
/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, я предлагаю обратиться к системе развертывания, такой как Puppet или Radmind, чтобы управлять / распространять
authorized_keys
файлы в соответствующие~user/.ssh/
каталоги (или взломать собственное решение, которое использует их на месте).При расширении до нескольких серверов вам может потребоваться поискать патч открытого ключа LDAP для более старых версий OpenSSH (или
AuthorizedKeysCommand
директивы и соответствующего сценария в более новой версии OpenSSH), чтобы вы могли централизовать своих пользователей и не нуждаться в распространении их ключи по всей вашей сети, но это, вероятно, будет довольно далеко для вас.источник
root
ниwww-data
через ключ ssh, это правильно?~www-data/.ssh
каталога - не страшная вещь (с соответствующими разрешениями это не существенный риск), но если вы собираетесь использовать~www-data/.ssh
его, вероятно, лучше не иметь своего webroot~www-data
(либо переместите webroot, либо переместитеwww-data
домашний каталог). ИМХО - это большая разница между пользователями - я знаю, что, если я увижуjsmith
логин, я знаю, что это Джон Смит. Если я вижуwww-data
вход в систему, мне нужно больше копать, чтобы узнать, кто это был.AuthorizedKeysFile
в/etc/ssh/sshd_config
дефолтов в%h/.ssh/authorized_keys
. Вот%h
заполнитель для домашнего каталога. Что мешает вам установить его/some/folder/ssh_keys_by_user/%h/
или даже/root/ssh_keys/%u
. Вы могли бы даже предоставить соответствующему пользователю доступ для записи в его отдельный файл (и только в него), связать файл со стандартным местоположением (сln -s /root/ssh_keys_by_user/username /home/username/.ssh/authorized_keys
) и не нарушать вышеупомянутые предположения.