Уловки для действительно безопасной SSH-связи

847
Guilherme Vieira

Я знаю, что SSH безопасен до тех пор, пока вы не подвергаетесь атаке MITM, но я хочу знать, есть ли способ сделать SSH 100% безопасным даже в таких обстоятельствах, обнаружить, что вас обнюхивают и отключают, прежде чем какая-либо конфиденциальная информация будет раскрыто или, по крайней мере, делает это не невозможным, но «более жестким» для злоумышленника фактически считывать / записывать фактические данные (может быть, есть способ искажать данные, чтобы они не имели смысла или что-то в этом роде?).

Я думаю, вы получили то, что я хочу.

Например, если вы отказываетесь подключиться, если отпечаток пальца не соответствует ожидаемому, MITM все еще работает?

Я постараюсь обновить этот вопрос, если идеи приходят мне в голову.

2
Вы можете победить атаки MitM, предварительно поделившись ключами. CarlF 13 лет назад 0
Да, я думаю, что это должно сработать. Guilherme Vieira 13 лет назад 0

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

5
grawity

discover you're being sniffed

This is exactly what SSH protects against. As long as you carefully verify the host key, it doesn't matter if someone is reading your traffic: it's all encrypted.

disconnecting before any sensitive information is disclosed

Again, standard SSH will be fine. Host key checking is one of the first things done when establishing a SSH connection; if you cancel it, the connection is closed immediately without transmitting any authentication data.

For example, if you refuse to connect in case the fingerprint isn't the one you expected, do MITM still work?

The attacker will not receive any "private" SSH data, if that's what you mean. See above – checking of host key is one of the first things done. Nothing else is sent until the server is verified.

maybe there's a way of garbling the data so it doesn't make sense or something?

It's called "encryption", and it happens to be a core part of SSH. :) The attacker will not be able to read anything unless you accept their hostkey instead of the real one. Similarly, encryption along with integrity check (using HMAC) makes it impossible to insert packets.


I'll admit that I'm not a cryptographer or anything. But IMHO, if you carefully check the host key fingerprint, then SSHv2 is as secure as it gets.

  • If it weren't secure, it would have been fixed/replaced/upgraded. This has happened once: SSH v1 was replaced by SSH v2.

  • This means that you must disable SSH v1 in both the server and client.

    SSH version 1 is very insecure, and even though most clients are configured to use SSHv2 first, they would still fall back to v1 if a server doesn't offer v2. This introduces an opportunity for a MITM attack... although I don't remember the details, it has something to do with the attacker generating a v1 key with a very similar fingerprint.

    For OpenSSH, put Protocol 2 in your config file.

  • There's a very small possibility that one of the algorithms used by SSH is broken. But if someone manages to break RSA or DH, the world will have bigger problems to worry about than your server's security... (Besides, there are alternative algorithms.)


By the way, OpenSSH v5.8 has switched from DH and DSA to ECDH and ECDSA as its primary algorithms (for key exchange and host keys respectively).

Просто чтобы прояснить один бит вашего ответа, ключ хоста предоставляется сервером клиенту * до того, как * вы отправите что-либо, кроме первоначального рукопожатия, то есть ни имени пользователя, ни пароля, ни ключа, ни ничего не было отправлено. Та часть, которую вы сказали, но я хочу уточнить: ключ хоста * невозможно * подделать * без предварительного получения закрытого ключа сервера, который сначала требует получения доступа к привилегированной учетной записи (т.е. root) на сервере. Не используйте слабые пароли (еще лучше, используйте ключи вместо паролей), и у вас все будет хорошо, пока вы проверяете ключ хоста. Kromey 13 лет назад 1
@Kromey: правда, но можно создавать разные клавиши с очень похожими отпечатками пальцев; см. [Проект нечетких отпечатков пальцев] (http://freeworld.thc.org/thc-ffp/). grawity 13 лет назад 0
@grawity Правда, но «похожий» не является «тем же», и каждый известный мне SSH-клиент хранит ключ хоста и сравнивает его для * точного соответствия * позже, громко жалуясь или даже вообще отказываясь подключаться, если даже один байт выключен. До тех пор, пока вы правильно проверяете этот ключ при первоначальном подключении, вы золотые. Kromey 13 лет назад 1
«Точное совпадение» включает алгоритм ключа и версию протокола, которые также должны быть тщательно проверены. Если на клиенте хранится ключ RSA, но сервер представляет только DSA, на некоторых клиентах появится только диалоговое окно подтверждения. (Последний OpenSSH справляется с этим гораздо лучше.) grawity 13 лет назад 0
Итак, если я получу отпечаток пальца, отличный от того, что я ожидал, мне нечего делать, кроме как не подключиться? Если бы это можно было сделать, это было бы частью SSH, верно? Guilherme Vieira 13 лет назад 0
@ n2liquid: Верно. grawity 13 лет назад 0
-1
w.pasman

SSH не в порядке, он склонен к атаке «человек посередине».

Microsoft делает такую ​​«атаку» на ваше соединение, если между вами и сервером, к которому вы пытаетесь подключиться, существует межсетевой экран Forefront TMG. И это включает подделку сертификатов SSH.

Можно ли подделать сертификаты * с такими же отпечатками пальцев *, как и у оригинальных? grawity 11 лет назад 3

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