openvpn, opção tls-cipher não está funcionando, não há cifra compartilhada

4

enquanto experimentava configurar o openvpn, me deparei com esta dica em um site . Ele diz que você pode limitar a lista de cifras, para evitar ataques de downgrade. Eu testei-o em uma lan com 2 computadores, ambos executando um kubuntu 14.04 com o OpenVPN 2.3.2.

no server.conf no servidor openvpn, eu inseri esta linha

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

executando openvpn --show-tls e comparando a saída, eu confirmei que cada uma das cifras na linha acima é conhecida pela minha versão do openvpn (no servidor e no cliente).

mas quando eu inicio o openvpnserver e o cliente depois, o servidor está me dando a seguinte saída

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 sem essa opção tls-cipher, tudo funciona bem.

eu não entendo porque diz "sem cifra compartilhada". é assim errado listar as cifras separadas por dois pontos? ou qual é o problema aqui?

obrigado pela leitura. Espero que alguém possa me ajudar.

editar eu substituí a linha no server.conf com %código% para ver o que acontece. e a saída do servidor openvpn é a mesma.

editar 2

Eu estava pesquisando mais e encontrei o link deste site. e agora entendia que o OpenVpn 2.3.2 só tem suporte para ciphersuites SSLv3 / TLSv1.0. mas tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 também mostra ciphersuites TLSv1.2

Limiting to TLSv1.0 DHE + RSA choices yields the following list, suitable for <=2.3.2 peers. DES choices are best avoided, especially single-DES (known very weak.)

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

Avoid all DES cipher suites: DES is known to be very weak (3DES-EDE is still fine) Avoid all RC4 ciphersuites: RC4 is known to be weak Avoid all EXPORT cipher suites: EXPORT is specified to be weak many years ago

e funciona quando eu uso uma dessas cifras no server.conf, por exemplo openvpn --show-tls

infelizmente nessa página não está escrito como exatamente eu posso render isso sozinho ... alguém sabe?

desde que o TLSv1.0 é SSLv3 e o openvpn diz que usa o OpenSSL Eu tentei obter essa informação via OpenSSL, filtrando com grep %código% mas a saída é diferente (por exemplo, a palavra WITH não aparece nessa lista)

assumindo que há talvez apenas uma diferença na notação eu tentei substituir algum texto com sed %código% impressões:

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

mas isso ainda não é o mesmo que a lista no "artigo openvpn Hardening" e eu não sou shure, se esse é o caminho certo de qualquer maneira ...

neste site usando o DHE-RSA -AES256-SHA é incentivado. Então, eu suponho, o mais seguro tls-cipher eu posso usar com openvpn 2.3.2 é TLS-DHE-RSA-COM-AES-256-CBC-SHA. mas essa resposta é de novembro de 2013. ainda é a melhor escolha? de alguma forma, esta é uma questão diferente agora. mas isso é tudo sobre como encontrar a opção de cifra de tls mais segura.

edite 3 ok, eu poderia extingir esse comando openssl-grep-sed

openssl ciphers -v | grep SSLv3 | grep Kx=DH

impressões:

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

agora é a mesma lista daquele artigo sem essa entrada DES e 3DES.

então este é agora o resultado certo? porque esta solução é baseada apenas na suposição de que existe apenas uma diferença na notação entre a saída do comando openssl -v e o comando openvpn --show-tls.

editar 4 Não, desculpe, não era a mesma lista que naquele artigo sem aquela entrada DES e 3DES .. agora é:

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 impressões:

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}'

mas esta é uma maneira confusa, não é? e só funciona assim, se a lista de nomes das cifras não crescer.

desculpe, se a "pergunta" puder ser confusa ... por favor, comente, muito obrigado se você pelo menos teve tempo para ler isto!

    
por coffeekid 25.09.2015 / 12:52

1 resposta

1

Eu não acho que o OpenVPN suporte ECDHE ainda - eu tentei o OpenVPN 2.3.4 no Debian 8.3 (estável) e 2.3.10 no teste Debian como servidor, e nenhum deles funciona quando o tls-cipher é especificado com um ciphersuite ECDHE, conectando-se de um cliente Windows executando 2.3.10. Até agora apenas os DHE trabalham.

    
por 16.02.2016 / 01:02

Tags