Почему аутентификация по ключу SSH лучше, чем аутентификация по паролю?

45

Это не столько технический вопрос, сколько концептуальный. Я понимаю, что криптография, используемая в ключе SSH, намного сильнее обычного пароля, но я не понимаю, почему он считается более безопасным.

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

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

Я что-то не так понял, или это действительные проблемы?

BoomShaka
источник
10
У обоих - ключ, требующий пароль. Таким образом, вам нужно идентифицировать две вещи, а не одну. Вы также можете легко аннулировать потерянные ключи и иметь несколько авторизованных ключей для большего контроля над этим, и так далее.
Фоши
2
Это, вероятно, следует перенести в безопасность.
10
@ DKGasser: Нет, не должно. Это совершенно правильный вопрос здесь. Просто потому , что что - то может быть перемещен на другой сайт SE не означает , что она должна .
Вуфферс
4
@DKGasser: Это может пойти на этот сайт, это совершенно правильный вопрос там. Но это также актуальный вопрос, поэтому нет причин для его миграции. Если этот вопрос будет сделан не по теме, то да, его можно перенести туда. Но это полностью по теме на этом сайте и, следовательно, не должны быть перенесены.
Вуфферс
3
И не забывайте, что ключ SSH никогда не передается по сети. Удаленный сервер НИКОГДА не получает ключ, в отличие от пароля, который не только отправляется по сети, но и отправляется на удаленный сервер. Подумайте об этом в следующий раз, когда вы не уверены, какой пароль использовать, и попробуйте несколько ... которые могут быть использованы в других учетных записях! Какие пароли вы отправили на этот сервер ???
мая

Ответы:

40

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

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

Тот факт, что закрытые ключи часто защищены длинной парольной фразой, имеет второстепенное значение.

Обновить:

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

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

Также http://xkcd.com/538/

Безопасность

RedGrittyBrick
источник
7
+1 за исключением того, что аутентификация с открытым ключом ничего не сделает для ваших логов, забитых ботами, пытающимися соединиться. Чтобы остановить это, запустите ваш SSH-сервер на высоком порту (т.е. 9876 вместо 22). Тогда, если они хотят ударить вас, они должны сначала просканировать порты, и боты, как правило, не тратят так много времени ... на 22 серверах SSH много
Ex Umbris
3
Вы не шутите над размером журнала - мой / var / log / secure превратился из мегабайта попыток входа в систему в килобайты (только с моими записями входа в систему).
Джон C
2
+1 Интересно, я бегал с аутентификацией на основе паролей в течение ... как 10 лет сейчас ... смеется. Конечно, мои публично открытые ssh-порты никогда не являются портами 22. Думаю, ботнеты будут сканировать порты и пытаться подключиться к каждому порт они могут ?? Хорошая информация, спасибо.
Джеймс Т Снелл
2
@ExUmbris Вместо того, чтобы менять порт, вам следует подумать об использовании fwknop: Single Packet Authorization и Port Knocking . Преимущество здесь должно быть очевидным: когда вы не позволяете никому даже видеть, что порт открыт где-либо, если им не был предоставлен доступ к порту через стук через SPA, тогда он даже не может попытаться найти его с помощью nmap и использовать это. Это намного лучше, чем простая безопасность через неизвестность.
aculich
@aculich Изменение порта - это не «безопасность через мрак». Все, что я делаю, - это предотвращаю заполнение журналов предупреждениями. Тем не менее, у вас есть верное замечание о повышении безопасности с помощью SPA.
Ex Umbris
8

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

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

Я верю, что также возможно защитить паролем ключи SSH.

Мэтью Стиплз
источник
Однако стоит отметить, что попытки перебора паролей по sshd могут быть обнаружены и защищены (например, с помощью fail2ban), в то время как тот, кто украл ваш закрытый ключ, может попробовать пароли на нем так быстро, как их компьютер (или кластер) позволит их. Это все еще не очень хорошая атака , но они значительно улучшили свои шансы по сравнению с разумной политикой fail2ban.
Сюн Чямов
1

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

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

Если ваш компьютер скомпрометирован вредоносным ПО, вы все равно напичканы ... - кто-то может получить зашифрованный ключ и сохранить ваш пароль.

Евг
источник
1
Примечание: но вы не можете зашифровать свой ключ паролем, если он будет использоваться программно (т.е. в сценарии).
TheStoryCoder