terça-feira, 1 de março de 2016

REFORÇANDO A SEGURANÇA DAS CONEXÕES HTTPS NO APACHE

1 - INTRODUÇÃO

Encontrei diversos tutoriais ensinando como ativar o protocolo https no apache utilizando chaves autoassinadas. No entanto, a maioria deles não leva em consideração os cuidados a serem tomados em relação a segurança.
Ativar o protocolo https ajuda, mas não ter o mínimo de atenção com o apache e não utilizar chaves criptograficas realmente seguras, pode causar a falsa sensação de segurança.

2 - SSL, TLS e RC4

SSL - Secure Socket Layer - protocolo de criptografia amplamente utilizado para conexões seguras https. No entanto devido as diversas falhas de segurança encontradas, mesmo nas últimas versões, empresas como Google e Mozilla estão desativando o suporte em seus navegadores ao SSL 2 e 3 em favor do  TLS (Transport Layer Security). 
Apesar de as novas versões de navegadores desabilitarem o suporte ao SSL, é dever de quem fornece os serviços fazer sua parte no lado do servidor.

TLS  -  Transport Layer Security é um protocolo semelhante ao SSL mas está imune as falhas encontradas no SSL.

RC4  - É um dos algoritmos utilizados em sistemas de criptografia como o SSL e o WEP (redes sem fio). Não é considerado um algoritmo seguro.


3 - CONFIGURAÇÕES A SEREM ALTERADAS/ADICIONADAS NO APACHE.

O suporte ao SSL e ao RC4 vem ativados por padrão no apache. Desative o suporte ao SSL 2 e SSL 3, e a algoritmos de criptografias ultrapassados acrecentando as linhas abaixo no arquivo de configuração apache.conf (derivados debian) ou httpd.conf (derivados RedHat).

SSLProtocol ALL -SSLv2 -SSLv3 #Desativa o suporte ao SSLv2 e SSLv3
 
SSLHonorCipherOrder on #Ao escolher o tipo de criptografia, normalmente a configuração do cliente é utilizada. Se essa opção está ativa (on), a configuração do servidor será utilizada.

SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

4 - SHA-1 e SHA-2

Os algoritmos de hash SHA são utilizados utilizados por Autoridades Certificadoras para assinar digitalmente os certificados emitidos. O SHA-1 é o mais utilizado, no entanto, diversas pesquisas apontam que ataques bem sucedidos ao SHA-1 tornam-se cada vez mais prováveis a medida que a capacidade de processamento dos computadores aumenta. Sendo assim, pretende-se estinguir-se o uso de certificados gerados em SHA-1 até janeiro de 2017.
Para quem utiliza um certificado em seu servidor gerado em SHA-1, terá que necessariamente substituí-lo por um gerado em SHA-2 mesmo que este ainda esteja dentro da validade. O google, por exemplo,  anunciou recentemente que pretende adicionar alertas de segurança em seu navegador para sites que utilizem certificados SHA-1 em conexões seguras.
A família de algoritmos SHA-2  inclui seis funções de valores hash que são conhecidos como: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256


5 - GERANDO UM CERTIFICADO AUTO ASSINADO SHA-2

Você pode gerar seu próprio certificado com SHA-2 auto assinado e adicioná-lo no apache. Gere o certificado com os comandos abaixo:

#Gera o repositório de chaves

openssl genrsa -out server.key 2048

#Gera o novo certificado autoassinado utilizando o repositório de chaves (Após o comando entre com as informaçõesde país, estado, cidade, etc). Obs: Diminua o parametro -days para diminuir o tempo de validade do certificado.

openssl req -x509 -nodes -days 3650 -new -sha256 -keyout server.key -out certificado.crt


#Exibe informações do certificado.
openssl x509 -in certificate.crt -text -noout