openvpn, опция tls-cipher не работает, нет общего шифра

openvpn, опция tls-cipher не работает, нет общего шифра

экспериментируя с настройкой openvpn, я наткнулся наэтот совет на сайте. там говорится, что можно ограничить список шифров, чтобы предотвратить атаки с понижением версии. Я тестировал его в локальной сети с двумя компьютерами, на обоих из которых установлена ​​Kubuntu 14.04 с OpenVPN 2.3.2.

в server.conf на сервере openvpn я вставил эту строку

tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256

Выполнив openvpn --show-tlsи сравнив вывод, я убедился, что каждый из шифров в строке выше известен моей версии OpenVPN (как на сервере, так и на клиенте).

но когда я запускаю openvpnserver и клиент после этого, сервер выдает мне следующий вывод

Fri Sep 25 12:31:59 2015 "THECLIENTSIP":38749 TLS: Initial packet from [AF_INET]"THECLIENTSIP":38749, sid=d9c33d37 653b2f0e Fri Sep 25 12:32:00 2015 "THECLIENTSIP":38749 TLS_ERROR: BIO read tls_read_plaintext error: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher Fri Sep 25 12:32:00 2015 "THECLIENTSIP":38749 TLS Error: TLS object -> incoming plaintext read error Fri Sep 25 12:32:00 2015 "THECLIENTSIP":38749 TLS Error: TLS handshake failed Fri Sep 25 12:32:00 2015 "THECLIENTSIP":38749 SIGUSR1[soft,tls-error] received, client-instance restarting без этой опции tls-cipher все работает нормально.

Я не понимаю, почему написано «нет общего шифра». Разве так неправильно перечислять шифры, разделенные двоеточиями? Или в чем здесь проблема?

Спасибо за чтение. Надеюсь, кто-нибудь сможет мне помочь.

редактировать Я заменил строку в server.conf на , tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 чтобы посмотреть, что произойдет. Вывод сервера OpenVPN тот же.

правка 2

Я искал дальше и нашел этот сайтhttps://community.openvpn.net/openvpn/wiki/Усиление жесткости и теперь понял, что OpenVpn 2.3.2 поддерживает только наборы шифров SSLv3/TLSv1.0, но openvpn --show-tlsтакже показывает наборы шифров TLSv1.2

Ограничение до вариантов TLSv1.0 DHE + RSA дает следующий список, подходящий для <=2.3.2 одноранговых узлов. Лучше избегать вариантов DES, особенно single-DES (известно, что они очень слабые).

TLS-DHE-RSA-С-AES-256-CBC-SHA

TLS-DHE-RSA-С-КАМЕЛИЕЙ-256-CBC-SHA

TLS-DHE-RSA-С-3DES-EDE-CBC-SHA

TLS-DHE-RSA-С-AES-128-CBC-SHA

TLS-DHE-RSA-С-SEED-CBC-SHA

TLS-DHE-RSA-С-КАМЕЛИЕЙ-128-CBC-SHA

TLS-DHE-RSA-С-DES-CBC-SHA

Избегайте всех наборов шифров DES: известно, что DES очень слаб (3DES-EDE все еще хорош) Избегайте всех наборов шифров RC4: известно, что RC4 слаб Избегать всех наборов шифров EXPORT: EXPORT был определен как слабый много лет назад

и это работает, когда я использую один из этих шифров в server.conf, например tls-cipher TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA

к сожалению, на этой странице не написано, как именно я могу это сделать сам... кто-нибудь знает?

поскольку TLSv1.0 — это SSLv3, а OpenVPN говорит, что использует OpenSSL, я попытался получить эту информацию через OpenSSL, отфильтровав ее с помощью grep, openssl ciphers -v | grep SSLv3 | grep Kx=DH но вывод отличается (например, слово WITH не отображается в этом списке)

Предполагая, что разница, возможно, только в обозначениях, я попытался заменить часть текста openssl ciphers -v | grep SSLv3 | grep Kx=DH | grep DHE-RSA | sed 's/DHE-RSA/TLS-DHE-RSA-WITH/g' | awk '{print $1}' выводами sed:

TLS-DHE-RSA-WITH-AES256-SHA TLS-DHE-RSA-WITH-CAMELLIA256-SHA TLS-DHE-RSA-WITH-AES128-SHA TLS-DHE-RSA-WITH-SEED-SHA TLS-DHE-RSA-WITH-CAMELLIA128-SHA

но это все еще не то же самое, что список в статье «Усиление защиты OpenVPN», и я не уверен, правильный ли это способ...

на этом сайтеиспользование DHE-RSA-AES256-SHA приветствуется. поэтому, я предполагаю, что самый безопасный tls-шифр, который я могу использовать с OpenVPN 2.3.2, — это TLS-DHE-RSA-WITH-AES-256-CBC-SHA. но этот ответ датирован ноябрем 2013 года. это все еще лучший выбор? так или иначе, теперь это другой вопрос. но сейчас речь идет о поиске самого безопасного варианта tls-шифра.

правка 3 хорошо, я мог бы расширить эту команду openssl-grep-sed

openssl ciphers -v | grep SSLv3 | grep Kx=DH | grep DHE-RSA | sed 's/DHE-RSA/TLS-DHE-RSA-WITH/g' | sed 's/SHA/CBC-SHA/g'| awk '{print $1}'

отпечатки:

TLS-DHE-RSA-WITH-AES256-CBC-SHA TLS-DHE-RSA-WITH-CAMELLIA256-CBC-SHA TLS-DHE-RSA-WITH-AES128-CBC-SHA TLS-DHE-RSA-WITH-SEED-CBC-SHA TLS-DHE-RSA-WITH-CAMELLIA128-CBC-SHA

теперь это тот же список, что и в той статье, но без записи DES и 3DES.

так это теперь правильный результат? потому что это решение основано только на предположении, что есть только разница в обозначениях между выводом команды openssl -v и команды openvpn --show-tls.

правка 4 нет, извините, это был не тот список, что в той статье, без записи DES и 3DES.. теперь это:

openssl ciphers -v | grep SSLv3 | grep Kx=DH | grep DHE-RSA | sed 's/DHE-RSA/TLS-DHE-RSA-WITH/g' | sed 's/SHA/CBC-SHA/g'| sed 's/AES/AES-/g' | sed 's/CAMELLIA/CAMELLIA-/g' | awk '{print $1}' отпечатки:

TLS-DHE-RSA-WITH-AES-256-CBC-SHA TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA TLS-DHE-RSA-WITH-AES-128-CBC-SHA TLS-DHE-RSA-WITH-SEED-CBC-SHA TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA

но это же полный провал, не так ли? и работает он так только если список имён шифров не растёт.

извините, если «вопрос» может показаться запутанным... пожалуйста, прокомментируйте, большое спасибо, если вы хотя бы нашли время прочитать это!

решение1

Я не думаю, что OpenVPN пока поддерживает ECDHE - я пробовал OpenVPN 2.3.4 на Debian 8.3 (стабильный) и 2.3.10 на Debian testing в качестве сервера, и ни один из них не работает, когда tls-cipher указан с набором шифров ECDHE, подключаясь с клиента Windows, работающего с 2.3.10. Пока работают только DHE.

Связанный контент