openvpn, tls-cipher 옵션이 작동하지 않음, 공유 암호 없음

openvpn, tls-cipher 옵션이 작동하지 않음, 공유 암호 없음

openvpn 설정을 실험하다가 우연히 발견했습니다.웹사이트에 있는 이 팁. 다운그레이드 공격을 방지하기 위해 암호 목록을 제한할 수 있다고 나와 있습니다. 저는 두 대의 컴퓨터가 있는 LAN에서 테스트했습니다. 둘 다 OpenVPN 2.3.2와 함께 kubuntu 14.04를 실행하고 있습니다.

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 옵션이 없으면 잘 작동합니다.

왜 "공유 암호 없음"이라고 표시되는지 이해가 되지 않습니다. 콜론으로 구분된 암호를 나열하는 것이 잘못된 것인가요? 아니면 여기서 문제가 무엇입니까?

읽어 주셔서 감사합니다. 누구든지 나를 도울 수 있기를 바랍니다.

편집하다tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 나는 무슨 일이 일어나는지 보기 위해 server.conf의 줄을 다음과 같이 바꿨습니다 . openvpn 서버의 출력은 동일합니다.

편집 2

더 검색하다가 이 사이트를 발견했어요https://community.openvpn.net/openvpn/wiki/Hardening 이제 OpenVpn 2.3.2는 SSLv3/TLSv1.0 암호화 제품군만 지원한다는 것을 이해했습니다. openvpn --show-tlsTLSv1.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 출력이 다릅니다(예를 들어 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 강화 기사"의 목록과 동일하지 않으며 어쨌든 그것이 올바른 방법인지 확신할 수 없습니다...

이 사이트에서DHE-RSA-AES256-SHA를 사용하는 것이 좋습니다. 따라서 openvpn 2.3.2에서 사용할 수 있는 가장 안전한 TLS 암호는 TLS-DHE-RSA-WITH-AES-256-CBC-SHA라고 가정합니다. 하지만 그 대답은 2013년 11월의 것입니다. 그게 여전히 최선의 선택인가요? 어쨌든 이것은 이제 다른 질문입니다. 하지만 이것은 가장 안전한 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를 지원하지 않는 것 같습니다. Debian 8.3(안정)에서 OpenVPN 2.3.4를 시도했고 Debian 테스트에서 2.3.10을 서버로 사용해 보았지만 tls-cipher가 ECDHE 암호 모음으로 지정되어 있을 때 두 가지 모두 작동하지 않습니다. 2.3.10을 실행하는 Windows 클라이언트. 지금까지는 DHE만 작동합니다.

관련 정보