Как я могу поддерживать ноу-хау SSH в актуальном состоянии (полузащищенно)?

Просто, чтобы вынести это вперед, чтобы мне не сказали не делать этого:

  1. Все рассматриваемые машины находятся в локальной сети, практически не имея доступа к Интернету (они даже плохо подключены к корпоративной сети)
  2. Каждый, кто имеет возможность настроить атаку "человек посередине", уже имеет права root на компьютере.
  3. Машины переустанавливаются как часть процедур QA, поэтому важно иметь новые ключи хоста (нам нужно посмотреть, как реагируют другие машины); Я только пытаюсь сделать мою машину более приятной в использовании.

Я делаю много переустановок на машинах, которые меняют их ключи хоста. Это требует входа в ~/.ssh/known_hosts на моей машине и сдуть старый ключ и добавить новый ключ. Это огромная боль в таках, поэтому я начал искать способы автоматизировать это.

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

Как бы вы автоматизировали этот процесс?

4 ответа

Решение

В зависимости от того, какие резоны для переустановки /IP остаются неизменными, я бы посмотрел на настройку "StrictHostKeyChecking" в ~/.ssh/config для конкретных Host/IPs/Patterns.

Если это невозможно, посмотрите на автоматизацию загрузки ключей на хостах, возможно, в процессе переустановки.

Если вы используете систему управления конфигурацией, такую ​​как Puppet, вы можете использовать ее для сохранения /etc/ssh/ssh_known_hosts файл обновляется хостами, когда клиентские машины регистрируются на центральном сервере. Тогда вы могли бы включить StrictHostKeyChecking опция в конфигурационном файле.

Это именно то, что мы делаем с нашими экземплярами Amazon EC2, которые регистрируются на нашем главном сервере Puppet. У нас есть марионеточный сервер, служащий бастионной перемычкой в ​​наших инстансах EC2 и единственный компьютер, которому разрешено использовать SSH. Затем мы сохраняем /etc/ssh/ssh_known_hosts файл обновлен ключами хоста и /etc/hosts файл для обновления общедоступного IP-адреса DNS EC2.

Ты хочешь ssh-keyscan, который распространяется с openssh. Со страницы руководства:

 ssh-keyscan is a utility for gathering the public ssh host keys of a num‐
 ber of hosts.  It was designed to aid in building and verifying
 ssh_known_hosts files. 

Запустите эту программу, чтобы выполнить переустановку компьютера с обновленным списком ключей, а затем распространите обновленный файл known_hosts на остальные компьютеры.

Или, как уже упоминалось, вы можете отключить StrictHostKeyChecking. Это открывает вас для атак "человек посередине", хотя в вашей среде это может не беспокоить.

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

Кроме того, вы можете использовать какой-либо инструмент управления конфигурацией, такой как CFengine или Puppet, чтобы распространять /etc/ssh/ssh_known_hosts всем клиентам на вашем сайте. (OpenSSH консультирует /etc/ssh/ssh_known_hosts если нет соответствующей записи в ~/.ssh/known_hosts.)

Другие вопросы по тегам