4

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

Эта проблема

У меня есть несколько сотен хостов за одним 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 поставщика.

1 ответ1

3

Вы можете предварительно сгенерировать 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .