Проверка ключа SSH для многих хостов за одним DNS-именем

1091
Mikey T.K.

(примечание: это похоже на существующий вопрос, но я полагаю, что здесь есть некоторые различия в деталях реализации)

Эта проблема

У меня есть несколько сотен хостов за одним DNS-адресом. У каждого хоста есть свой отдельный ключ хоста (и я не могу его изменить - он устанавливается поставщиком и не должен изменяться).

Когда я пытаюсь подключиться к любому из хостов через одно имя во второй раз, это, понятно, sshочень расстраивает:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The DSA host key for (hostname) has changed, and the key for the corresponding IP address 192.168.0.100 is unknown. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the DSA key sent by the remote host is SHA256:+38sJSsANknk6vVIHJ/l/xnPCl+ALCNrbi80vrr24cM. Please contact your system administrator. Add correct host key in /Users/me/.ssh/known_hosts to get rid of this message. Offending DSA key in /Users/me/.ssh/known_hosts:291 Password authentication is disabled to avoid man-in-the-middle attacks. Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks. X11 forwarding is disabled to avoid man-in-the-middle attacks. Permission denied (publickey,password,keyboard-interactive). 

Сложность

  • Я не могу установить все ключи хоста на одно и то же.
  • Подключение к одному IP-адресу не является хорошим обходным путем, поскольку это не «циклический перебор», а служба DNS, предоставляемая оборудованием, которое маршрутизирует соединение на наименее загруженный сервер.
  • Мои пользователи, а также некоторые автоматизированные процессы должны иметь возможность использовать одно DNS-имя.

Вопрос

Каковы наилучшие практики для этой среды для безопасного использования SSH (т. Е. Как можно большего количества проверок без изменений)?

Я не хочу отключать проверку ключей по соображениям безопасности, и очевидный обходной путь подключения к одному IP-адресу обходит балансировку нагрузки, обеспечиваемую реализацией DNS поставщика.

4
Рассматривали ли вы создание GlobalKnownHostsFile только с IP-адресами, например, с использованием ssh-keyscan и отключением UserKnownHostsFile для подключения к этому имени хоста? Я не пробовал, но он должен быть удовлетворен IP-адресом, и если он не сможет записать запись known_hosts с именем хоста, вы хороши, не так ли? Jakuje 8 лет назад 0
Ага! Я даже не знал, что `ssh-keyscan` существует. Беглый взгляд на man-страницу выглядит так, как будто это именно то, что мне нужно - я могу собрать ключи и передать полученный файл hosts пользователям и серверам, которые в этом нуждаются. Если вы ответите, я приму это. Mikey T.K. 8 лет назад 0

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

3
Jakuje

Вы можете предварительно сгенерировать known_hostsдля всех ваших IP, используя ssh-keyscan. Затем установите его в пользовательских системах как GlobalKnownHostsFile(только для чтения) и для этого конкретного hostnameотключения UserKnownHostsFile(установите в /dev/null).

Я не пробовал, но он должен быть доволен IP и если он не сможет написать known_hostsзапись с hostname.

Пример клиента /etc/ssh/ssh_config(также хорош для распространения):

[...] # other stuff Host dns_hostname GlobalKnownHostsFile /etc/ssh/known_hosts UserKnownHostsFile /dev/null 

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