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!