De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Alexandro Silva
Data de Publicação: 06 de fevereiro de 2014
Após a divulgação de diversas falhas em algoritmos e no protocolo SSL/TLS é necessário adequar o ambiente para atender requisitos mínimos de segurança. Este artigo apresentará como configurar o HTTPS nos servidores Apache e Nginx buscando prevenir contra ataques a esse protocolo.
Todas as configurações foram testadas no Debian Wheezy 7.0.3 com Apache 2.2.22-13 e Nginx 1.2.1-2.2 e usando os navegadores Chrome,Firefox e Internet Explorer.
Utilize o comando abaixo para gerar uma chave em compliance com o Certification Authority/Browser(CA/B) Forum, onde foi definido que a partir de 1º janeiro de 2014 alguns browsers podem rejeitar certificados com chave menor que 2048 bits.
openssl genrsa -des3 -out site.key 2048
A figura 1 mostra o teste realizado antes das configurações observe que por padrão o servidor já utiliza cifras fortes.
Figura 1: Teste de SSL padrão |
Ative os módulos headers
e rewrite
a2enmod headers && a2enmod rewrite
Configure o vhost de acesso HTTP forçando o redirecionamento para o HTTPS usando as seguintes linhas:
<VirtualHost *:80> ... #Habilite o redirect para sites no mesmo dominio ServerSignature On RewriteEngine On RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R] RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 2 ... </VirtualHost>
Configure o vhost de acesso HTTPS adicionando as linhas referentes ao Apache SSL Hardening, todas elas estão comentadas.
# Hardening Apache SSL #Desabilita o SSLv2 usando somente o SSLv3 e TLS 1.2 ( FIPS 140-2 standard compliance ) SSLProtocol ALL -SSLv2 #As preferencias do servidor irao prevalecer na escolha da cifra durante o SSLv3 ou TLSv1 handshake SSLHonorCipherOrder On #Desabilita a compressao de requisicoes SPDY e TLS (CVE-2012-4929) SSLCompression off #Habilita o HSTS (HTTPS Strict Transport Security) header para forcar o uso do protocolo HTTPS, permitindo tambem que o navegador do cliente relembre essa requisicao em futuras conexoes durante 6 meses. Header add Strict-Transport-Security "max-age=15768000" #Caso queira habilitar o HSTS para todos os subdominios #Strict -Transport -Security: max-age=15768000 ; includeSubDomains #Define as cifras disponiveis durante o SSL handshake compatível com os principais navegadores SSLCipherSuite 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS'
Após a configurar o apache é necessário reiniciá-lo para aplicar todas as modificações
apache2ctl restart
Configure o vhost de acesso HTTP forçando o redirecionamento para o HTTPS usando o parâmetro return como no exemplo abaixo
server { ... listen 80; ## listen for ipv4; this line is default and implied return 301 https://$host$request_uri; }
Configure o vhost de acesso HTTPS adicionando as linhas referentes ao NGIX SSL Hardening, todas estão comentadas.
#As preferencias do servidor irao prevalecer na escolha da cifra durante o SSLv3 ou TLSv1 handshake. ssl_prefer_server_ciphers on; #Desabilita o SSLv2 e SSLv3 usando somente o TLS ( FIPS 140-2 standard compliance ) ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #Define as cifras disponiveis durante o SSL handshake compatível com os principais navegadores ssl_ciphers 'EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS'; #Habilita o HSTS (HTTPS Strict Transport Security) header para forcar o uso do protocolo HTTPS, permitindo tambem que o navegador do cliente relembre essa requisicao em futuras conexoes durante 6 meses. add_header Strict-Transport-Security "max-age=15768000";
O TLS compression vem desabilitado por padrão no Nginx
Observe os resultados obtidos após o hardening do protocolo HTTPS
Figura 2: Teste do Apache após o hardening |
Figura 3: Teste do Nginx após o hardening |
Figura 4: Validando as configurações de SSL na Qualys SSL Server Test |
As configurações apresentadas previnem contra algumas das vulnerabilidades publicadas criando uma camada de segurança durante conexões seguras usando o protocolo HTTPS estando em conformidade com diversos padrões de segurança do mercado.
Conheça os serviços de diagnósticos de segurança da iBliss Segurança e Inteligência
Artigo publicado originalmente em http://www.ibliss.com.br/blog/hardening-apachenginx-ssl/
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários