web-dev-qa-db-ja.com

openvpn、オプションtls-cipherが機能しない、共有暗号化なし

openvpnの設定を実験しているときに、偶然 このWebサイトのヒント に遭遇しました。ダウングレード攻撃を防ぐために、暗号のリストを制限できると書かれています。 OpenVPN 2.3.2でkubuntu 14.04を実行している2台のコンピューターでLANをテストします。

openvpnサーバーのserver.confに、この行を挿入しました

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オプションがなければ正常に機能します。

「共有暗号化なし」と表示されている理由がわかりません。コロンで区切られた暗号をリストするのはそのように間違っていますか?またはここの問題は何ですか?

読んでくれてありがとう。誰かが私を助けてくれることを願っています。

editserver.confの行をtls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256に置き換えて、何が起こるかを確認しました。 openvpnサーバーの出力は同じです。

編集2

私はさらに検索してこのサイトを見つけました https://community.openvpn.net/openvpn/wiki/Hardening そして、OpenVpn 2.3.2はSSLv3/TLSv1.0暗号スイートのみをサポートしていることがわかりました。ただし、openvpn --show-tlsにはTLSv1.2暗号スイートも表示されます

TLSv1.0 DHE + RSAの選択に限定すると、<= 2.3.2ピアに適した次のリストが生成されます。 DES選択、特にシングルDES(非常に弱いことが知られている)は避けるのが最善です。

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

TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA

TLS-DHE-RSA-WITH-3DES-EDE-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

TLS-DHE-RSA-WITH-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でフィルタリングしましたが、出力は異なります(たとえば、Word WITHがリストに表示されません)

表記に違いがあるだけだと仮定して、一部のテキストをsed openssl ciphers -v | grep SSLv3 | grep Kx=DH | grep DHE-RSA | sed 's/DHE-RSA/TLS-DHE-RSA-WITH/g' | awk '{print $1}'の出力で置き換えようとしました:

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の強化に関する記事」のリストと同じではなく、とにかく正しい方法であれば、私はshureではありません...

このサイト DHE-RSA-AES256-SHAの使用をお勧めします。そのため、私がopenvpn 2.3.2で使用できる最も安全なtls-cipherはTLS-DHE-RSA-WITH-AES-256-CBC-SHAであると想定しています。しかし、その答えは2013年11月のものです。それでも、それが最善の選択でしょうか。どういうわけか、これは今では別の質問です。しかし、これは最も安全なtls-cipherオプションを見つけることに関するすべてです。

編集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

しかし、これはめちゃくちゃな方法ですよね?暗号の名前のリストが大きくならない場合にのみ、この方法で機能します。

申し訳ありませんが、「質問」が混乱する可能性がある場合はコメントしてください...少なくともこれを読むのに時間を割いてくださった方、どうもありがとうございます!

4
coffeekid

OpenVPNがまだECDHEをサポートしているとは思いません-サーバーとしてDebian 8.3(安定版)でOpenVPN 2.3.4とDebianテストで2.3.10を試しましたが、tls-cipherがECDHE暗号スイートで指定されており、 2.3.10を実行しているWindowsクライアント。これまでのところDHEのみが機能します。

1
raiden