Является ли обмен ключами SSH более безопасным, чем аутентификация по паролю?

9

Удаленные пользователи подключаются к нескольким службам в нашем главном офисе через Интернет, используя SSH. Пароль SSH синхронизируется с их учетной записью A / D в локальной сети.

Будет ли пользователи приносить домой копию ключа SSH, используя что-то вроде компакт-диска или листка бумаги, безопаснее, чем вводить пароль пользователем? Или я должен требовать обоих?

Мой вопрос, вероятно, можно переформулировать следующим образом: существует ли какая-либо уязвимость в протоколе аутентификации пароля SSH?

Именно это сообщение вызывает у меня сомнения:

The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:.
Are you sure you want to continue connecting (yes/no)?
srmark
источник

Ответы:

22

Сообщение, которое вы видите, является отдельной проблемой. Он просит вас подтвердить, что хост, к которому вы подключаетесь, действительно тот, на который вы рассчитываете. С сервера вы можете получить отпечаток пальца, запустив его ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub. Затем, когда вы впервые подключаетесь удаленно, вы можете убедиться, что отпечатки пальцев совпадают.

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

Однако проблема остается: как узнать, какой ключ правильный? После первого подключения открытый ключ сохраняется в вашем ~/.ssh/known_hostsфайле, поэтому последующие подключения в порядке. Но в первый раз вам либо нужен какой-то внеполосный способ получения отпечатка пальца, либо вы следуете модели «TOFU»: доверие при первом использовании.

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

Есть (как минимум) три причины, по которым пароли хуже ключей:

  1. Они могут быть грубы. Типичный выбранный пользователем 8-значный пароль имеет около 30 битов угадывания-энтропии. Пара открытых / закрытых ключей ssh ​​составляет 1024 бита или больше. Фактически невозможно просто перебрать ssh-ключ, но автоматическое подбора пароля происходит постоянно.
  2. Они могут быть глупыми. Пользователи обычно выбирают ужасные пароли, даже с установленными ограничениями, и они, как правило, используют более сложные пароли в нескольких местах. Это, очевидно, облегчает атаки.
  3. Пароли могут быть украдены удаленно. Когда вы используете SSH, пароль шифруется на проводе, но очень часто сервер ssh заменяется на скомпрометированных системах тем, который регистрирует все пароли. С ключами закрытый ключ остается в локальной системе и никогда не отправляется вообще, поэтому его нельзя украсть без фактического взлома клиентского компьютера.

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

Нет особого преимущества в том, чтобы спрашивать и то и другое, поскольку тот, у кого достаточно доступа для кражи закрытого ключа, может довольно легко украсть пароль пользователя. Если вам нужно больше безопасности, чем это, рассмотрите возможность использования системы двухфакторной аутентификации, такой как RSA SecurID или WiKID .

mattdm
источник
Отличный ответ. Именно то, что я искал. Спасибо!
srmark
относительно номера 3) Если вы заходите на уже защищенный сервер ... зачем кому-то нужен ваш пароль? Единственная причина, по которой я могу придумать, это если вы везде используете один и тот же пароль.
Sirex
Сирекс - верно; они крадут ваш пароль и используют его в других системах. Обратите внимание на вопрос, что пароли используются как «LAN A / D». Таким образом, они крадут ваш пароль с сервера входа в систему ssh и затем получат доступ к серверу Windows. Кроме того, теперь, всякий раз, когда система подвергается риску, вы должны пройти пожарную тренировку «все в порядке, каждый снова меняет свой пароль».
Mattdm
Кроме того , как отмечено в количестве 2, пользователи будут , используя тот же пароль везде. Вздох.
Mattdm
Долой надоедливых пользователей! :(
Sirex
1

то, что вы на самом деле спрашиваете, «это один фактор лучше, чем другой», тема многофакторной проверки подлинности, и вам действительно стоит заглянуть в эту тему.

Как правило, «фактор» - это то, что вы знаете (пароль), что-то, что у вас есть (файл ssh или карточка с ключом) или что-то, чем вы являетесь (отпечаток пальца).

Один не лучше, чем сам по себе, они бесплатны. Потеря компакт-диска с ключевым файлом так же плоха, как разглашение вашего пароля, если это все, что вам нужно. Для защищенной среды обычно используется двухфакторная аутентификация.

Sirex
источник
Да, я понимаю, что вы говорите. Однако в этом случае я просто пытаюсь выяснить, можно ли взломать аутентификацию по паролю, используя что-то вроде человека посередине.
srmark
для ssh в качестве конкретного примера - нет, поскольку секция выдачи паролей также зашифрована, и ключи меняются во время сеанса (я полагаю, 30 секунд). Это не отражение пароля против пароля, хотя
Sirex