Отражает ли сообщение «подлинность хоста не может быть установлено» в SSH угрозу безопасности?

5157
Charles Duffy

Всякий раз, когда я подключаюсь к новому серверу SSH со своего компьютера, я получаю следующее сообщение:

The authenticity of host '[censored]:censored ([0.0.0.0]:censored)' can't be established. RSA key fingerprint is SHA256:censored. Are you sure you want to continue connecting (yes/no)? 

Почему SSH спрашивает меня об этом?

Есть ли у меня риск подключения к произвольному SSH-серверу?

Или это просто для того, чтобы убедиться, что сервер, к которому вы подключаетесь, не был взломан?

19
Вы используете пароль или ключ для входа? kasperd 6 лет назад 0
Существует несколько * лучших * способов распространения ключей хоста, чем доверие при первом использовании; это относительно небезопасный рабочий процесс. Ключи хоста могут распространяться через LDAP; через подписанные записи DNS; может быть подписан с центрами сертификации SSH; и т. д. То есть, то, что вы видите здесь, указывает на то, что ваш сайт настроен «ленивым образом» (а это почти все!), что * менее * безопасно, чем идти дальше, чтобы сделать все правильно. Charles Duffy 6 лет назад 1

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

29
Attie

Он спрашивает вас, потому что он никогда не был связан с этим хостом раньше.

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

Как только вы сказали « Да, я доверяю этому ключу хоста и хочу, чтобы он был связан с этим именем хоста / IP », SSH-клиент запомнит это для вас ... Если по какой-либо причине (переустановите / новые ключи хоста / new машина / человек посередине) ключ не совпадает при следующем соединении, вы увидите предупреждение, как показано ниже:

$ ssh baloo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 ECDSA key sent by the remote host is SHA256:Su0uy/4BcRcpmyLfxO9ndlcda52F8uct6yWNp7Sa92M. Please contact your system administrator. Add correct host key in /home/attie/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/attie/.ssh/known_hosts:65 remove with: ssh-keygen -f "/home/attie/.ssh/known_hosts" -R baloo ECDSA host key for baloo has changed and you have requested strict checking. Host key verification failed. 

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

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

Это принцип TOFU: доверие при первом использовании Patrick Mevzek 6 лет назад 4
Согласен, TOFU не очень хорошая идея, особенно если вам нужно быть уверенным ... Ваше мнение и подход будут (должны) зависеть от вашей модели потока. Attie 6 лет назад 2
Однако, для эффективности этого, смотрите https://www.cs.auckland.ac.nz/~pgut001/pubs/defending.pdf, стр. 45-48. Joker_vD 6 лет назад 1
Интересные слайды, спасибо, что поделились @Joker_vD Attie 6 лет назад 0
@ Atttie Вы также можете использовать сертификаты вместо ключей для SSH, а затем вы вернетесь к модели доверия PKI в мире HTTP. Patrick Mevzek 6 лет назад 0
@PatrickMevzek Проблема в том, что вся наша модель «доверия» к компьютерам основана на гранулярности логического типа, в то время как в реальном мире практическая модель доверия (например, то, что мы интуитивно используем в отношениях между людьми) больше похожа на условная вероятность: учитывая требование от организации, мы имеем некоторую уверенность в том, что организация будет следовать ей, и мы ограничиваем нашу подверженность риску пропорционально этому. mtraceur 6 лет назад 1
@mtraceur вы описываете модель доверия сети PGP ... https://en.wikipedia.org/wiki/Web_of_trust Patrick Mevzek 6 лет назад 0
@PatrickMevzek Я думаю, что это ближе к моей идее, но разве это не фундаментально логично в том, как это используется? В конечном итоге вы либо говорите «да, я доверяю ключу», либо «нет, я не доверяю» - нет инструментов, которые по-разному ведут себя по-разному, основываясь на более детальном представлении о доверии, о котором я знаю. То, о чем я думаю, будет включать в себя сеть доверия, основанную на машинах, корректирующих оценки доверия других машин с использованием алгоритмов машинного обучения, и сообщающих друг другу их оценки доверия (которые сами будут взвешиваться каждой машиной пропорционально к некоторому рейтингу доверия). mtraceur 6 лет назад 0
@PatrickMevzek Я также думаю, что такая система должна быть гораздо более целостной, чем * просто * сфокусированная на одном протоколе, таком как SSH, TLS или PGP. Операционная система должна будет динамически учитывать любые отклонения от ожидаемых протоколов, которые они обнаруживают, вплоть до самых низких уровней сети и любых других проблемных точек данных, и предоставлять это с достаточной степенью детализации программам пользовательского пространства. Сейчас мы начинаем обходить стороной, но я хотел убедиться, что было ясно, что я имел в виду, что «булевых» моделей доверия недостаточно. Если вы хотите обсудить это дальше, давайте поговорим об этом? mtraceur 6 лет назад 0
@mtraceur Нет, это не логическое значение. Существует масштаб доверия, но, вероятно, недостаточно для вашего случая. Мы здесь не по теме. Patrick Mevzek 6 лет назад 0
9
KNejad

Когда вы получаете это сообщение, SSH просто говорит: «Я никогда не видел этот компьютер раньше, поэтому я не могу быть уверен, что это тот, кто это говорит. Вы доверяете ему?» В этот момент вы можете сказать, что доверяете ему, и в будущем ваш компьютер будет помнить и больше не спрашивать вас.

В идеале, чтобы доверять ему, вы должны вручную сравнить ключ, предоставленный с ключом на сервере (как если бы вы доверяли ключу GPG, проверив, действительно ли тот, кому он принадлежит, действительно может сгенерировать открытый ключ). Хотя на самом деле люди не беспокоятся об этом (по крайней мере, насколько мне известно).

Настоящая выгода приходит с каждым последующим подключением к серверу. Если SSH жалуется на то, что сервер, которому вы уже доверяли, не является тем же сервером, то есть вероятность, что вы стали жертвой атаки MiTM.

В целом, если вы находитесь в сети, в которой вы уверены, что атака «Человек в середине» не происходит, и вы подключаетесь к компьютеру впервые, тогда вы должны принять ключ. (хотя, если вы работаете над какой-то сверхсекретной правительственной миссией, возможно, попросите системного администратора проверить отпечаток пальца перед подключением)

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