Как я могу поддерживать ноу-хау SSH в актуальном состоянии (полузащищенно)?
Просто, чтобы вынести это вперед, чтобы мне не сказали не делать этого:
- Все рассматриваемые машины находятся в локальной сети, практически не имея доступа к Интернету (они даже плохо подключены к корпоративной сети)
- Каждый, кто имеет возможность настроить атаку "человек посередине", уже имеет права root на компьютере.
- Машины переустанавливаются как часть процедур 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
.)