Использование авторизованных ключей SSH для развертывания обновления привилегированных файлов по локальной сети?

338
Stilez

У меня есть сервер, который время от времени автоматически обновляет набор привилегированных файлов (например, ключи сертификатов, конфигурации и т. Д.). Необходимо сохранить эти файлы в других системах локальной сети. Я примерно знаю, как это сделать, но я не знаю деталей реализации.

Удаленные команды для получения и сохранения файлов (выполняемые на этих других серверах локальной сети) могут восприниматься как статические или очень редко изменяемые и могут быть жестко запрограммированы, что означает, что они идеально подходят для использования с авторизованными ключами SSH, но многие необходимо соблюдать осторожность, так как файлы, которые они получают и хранят, по-прежнему имеют привилегии и сохраняются в пути, иначе только для чтения с правами root. Все задействованные системы - FreeBSD (+ одна OpenBSD).

Я визуализирую такой процесс:

  1. Сгенерируйте пару ключей ssh-keygen, подходящую для локального SSH (не нужно работать с какой-либо общедоступной сетью или другими системами или функциями).
  2. Создайте привилегированную учетную запись PRIV_USERна всех системах, к которым вообще нет доступа, кроме как через sshd (обычно требуются либо привилегии su, которые должны быть безопасными для фиксированного сценария, либо минимальный доступ для записи в определенные жестко запрограммированные местоположения, обычно читаемые / записываемые только root, так как для этого нужно сохранить полученные файлы).
  3. Настройте раздел авторизованных ключей в sshd на всех других системах, который при подключении как PRIV_USERавтоматически получает архив файлов tar и распаковывает их в локальную файловую систему, а затем отключается.
  4. В отправляющей системе, когда файлы должны быть обновлены удаленно, запустите короткий скрипт, который создает tar-архив файлов для отправки, а затем подключается к удаленной системе (системам) по очереди PRIV_USER, отправляя файлы через SSH, отмечает успех / неудачу в консоли и выходит.

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

Какие правильные команды я должен использовать для минимальной базовой «не испорченной» реализации этой функции? :)

0
SSH не использует SSL. Ключи SSH не имеют срока действия. У них нет CA. Daniel B 6 лет назад 1
Спасибо - я немного отредактировал. Если вам нужно исправить больше, дайте мне знать, и я отредактирую Q, чтобы исправить это. Stilez 6 лет назад 0
Ну, как я уже сказал: SSL не задействован. Таким образом, нет OpenSSL / LibreSSL, нет цепочки доверия или чего-либо еще. Там вообще нет никаких ЦС. Просто `ssh-keygen`. Daniel B 6 лет назад 0
Спасибо - я отредактировал и удалил ссылки на OpenSSL / LibreSSL. Stilez 6 лет назад 0

1 ответ на вопрос

0
danblack
  1. ssh-keygen для создания локального ключа
  2. создать новый сервер (ы)
  3. ssh-copy-id для root @ newserver
  4. создать ANSI репозиторий PlayBook нужной конфигурации (включая только пароль sshd)
  5. бежать ansible-playbook

Похожие вопросы