Configuração SSL para servidor da Web compatível com os requisitos do PCI-DSS sobre como desativar o CBC e o TLSv1.0

2

Estou procurando uma configuração de servidor da Web (nginx) que ofereça suporte a requisitos atuais de PCI-DSS (novembro de 2015) sobre SSL:

  • Não TLSv1.0 (apenas TLSv1.1 e TLSv1.2 e TLSv1.3 no futuro).
  • Nenhuma cifra ssl fraca, significa que não há CBC (Encadeamento de Blocos de Cifras), sem DES, IDEA Cipher Suites, não RC4, etc.

Após várias verificações usando o Nexpose, criei a configuração do Nginx, que finalmente atende a esses requisitos muito restritivos. Minha configuração de teste atual é assim:

server {
#(..)
ssl_certificate      asdf.crt;
ssl_certificate_key  sadf.key;

ssl_protocols TLSv1.1 TLSv1.2; #see about TLSv1.1 below
ssl_ecdh_curve secp521r1;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_dhparam asdf-dh2048.pem; #sorry, no support for Java 6u45
ssl_ciphers    #ssh_ciphers of course should be in one line
  ECDHE-ECDSA-AES256-GCM-SHA384:
  ECDHE-ECDSA-AES128-GCM-SHA256:
  ECDHE-RSA-AES256-GCM-SHA384:
  ECDHE-RSA-AES128-GCM-SHA256:
  DHE-RSA-AES256-GCM-SHA384:
  DHE-RSA-AES128-GCM-SHA256:
  AESGCM:
  !aNULL:!eNULL:!EXPORT:!RC4:!MD5:!PSK;
}

Infelizmente:

  • Existem apenas 7 ssl_ciphers e geralmente são apenas os 6 primeiros.
  • Mesmo se eu ativar o TLSv1.1, ele não estará mais ativo, as cifras acima estão disponíveis apenas no TLSv1.2.
  • Digitalizar usando link mostra que o site tem uma grade A + (ótima!), mas também mostra que muitos (ou a maioria) do navegador e as bibliotecas não poderão se conectar devido a "Protocolo ou incompatibilidade de conjunto de criptografia" (não funcionando: IE 6-10, Java 6 e 7, Android 2.3-4.4, OpenSSL 0.9.8, Safari 5-8, etc).
  • Eu removi o TLSv1.0 para que não haja nenhuma opção para conectar usando aplicativos instalados no Win XP, no Win Vista, no Win Serv 2003, eu sei.
  • A verificação usando o Nexpose não apresenta nenhum problema (por exemplo, não há CBC em uso etc.).

O uso do Nginx openssl, portanto, de acordo com o link (capítulo "CIPHER SUITE NAMES" no meio da página) depois de remover CBC, RC4 e outros elementos "fracos", não vejo nenhuma opção para usar os protocolos TLSv1.0 ou TLSv1.1. Eu não vejo também possibilidades de usar o TLSv1.2 com mais cifras.

Alguém tem idéia, o que na minha configuração pode ser alterada, para aumentar a compatibilidade com navegadores / bibliotecas / sistemas e ainda ser compatível com PCI-DSS?

    
por Jack 04.12.2015 / 16:24

1 resposta

1

Não há muito o que fazer para aumentar a compatibilidade com navegadores, se você desabilitar o TLS1.0 e desabilitar todas as cifras CBC.

No entanto, as cifras CBC NÃO são consideradas "fracas" se o TLS1.0 estiver desabilitado. A vulnerabilidade que o ataque BEAST é baseado não está presente no TLS1.1 e acima.

    
por 07.12.2015 / 23:02