Téchne Digitus InfoSec Artigos

<índice "[ Hacking ]-[ Redes de Comunicação ]-[ DeepWeb ]-[ Anonimato ]-[ Criptomoedas ]-[ Programação ]-[ InfoSec em Geral ]-[ Off-Topic but Important ]-[ Redes Sociais ]" />

Logo Téchne Digitus InfoSec

Como Implementar Security Headers no CloudFlare

Neste post você irá aprender o que é CloudFlare, CDN e Security Headers. Também iremos ver como, através do CloudFlare, conseguimos configurar Security Headers, forçar HTTPS em seu site, configurar versões modernas e seguras de TLS e, por fim, ativar o DNSSEC. Postagem com dicas preciosas para hardenização de websites.


O que é o CloudFlare?

CloudFlare é basicamente um CDN, que é a sigla de Content Delivery Network. CDN é um recurso que mantém um cache distribuído em diversos pontos do mundo do seu site.

CloudFlare Logo - TéchneDigitus

A priori, o CDN serve como um servidor web terceiro que permite que seus visitantes acessem seu site de forma mais performática por estar disponível em diversos pontos do mundo. Por exemplo: se o seu site fica hospedado em um servidor no Brasil e ele for ser acessado de Portugal, o caminho pela internet entre o visitante e o seu site é intercontinental! Irão haver diversos "hopes", roteadores, no meio do caminho entre um e outro. Se o seu site também estiver disponível em um servidor do CDN em Portugal, a distância entre o seu site e o visitante será menor!

O CDN entregando seu site para você, ao invés do servidor do seu site, você irá economizar banda, processamento entre outros recursos do seu servidor. Isso pode representar uma economia de recursos realmente significante!

O CDN também permite que o seu site seja mais resiliente em diversos aspectos. Torna-se mais resistente a DDoS, DoS. Permite implementar WAF (Web Application Firewall) e também, que veremos mais fundo neste artigo, Security Headers sem se preocupar em fazer essa alteração em sua aplicação ou seu servidor web.

CDNs também possuem recursos extras, como por exemplo, permitir implementar DNSSEC (saiba mais sobre DNSSEC em: Uma Introdução ao DNSSEC), forçar TLS 1.2 ou superior (que é o protocolo de cifras HTTPS que encriptarão o conteúdo de seu site).

Além de recursos de segurança, diminuir o tráfego entre o seu servidor e a Internet e aumentar a performance de acesso para seus visitantes diminuindo a distância entre eles, permite compactar o código fonte de seu site! Versões pagas do CloudFlare ainda permitem outros recursos mais avançados como compactação de imagens, LoadBalance entre localidades e muito mais!

Finalmente, vale a pena ativar o serviço de CloudFlare em seu site mesmo que na versão Free! Para mais informações e, também ativar o CloudFlare em seu website, acesse: CloudFlare WebSite.

Após essa técnica, incompleta e talvez complicada introdução ao CloudFlare (depende do nível de conhecimento do leitor), vamos ao que interessa: Security Headers.

O que são Security Headers?

Security Headers são cabeçalhos de segurança que implementam regras de acesso ao seu site. São basicamente configurações realizadas em sua aplicação de servidor web para tornar o seu site mais resiliente a ataques como XSS e torná-lo mais confiável e seguro para seus visitantes.

Security Headers - TéchneDigitus

Existem no mercado alguns Security Headers importantes que precisamos conhecer, entre eles:

  • Strict-Transport-Security: O cabeçalho de resposta HTTP Strict-Transport-Security (geralmente abreviado como HSTS) permite que um site informe aos navegadores que ele deve ser acessado apenas por HTTPS, em vez de usar HTTP.
  • Content-Security-Policy: (Política de Segurança de Conteúdo, também conhecida como CSP) é uma camada adicional de seguranção que facilita a detecção e mitigação de certos tipos de ataques, incluindo Cross Site Scripting (XSS) e ataques de injeção de dados. Esses ataques são utilizados para diversos fins, e eles vão desde roubou de dados até desfiguração do site até distribuição de malware.
  • Feature-Policy: Provê um mecanismo de permitir ou bloquear o uso de funcionalidades do navegador no frame de seu site e em elementos como <iframe> dentro do documento. Ou seja, se recursos não são usados ou não são seguros, podem ser bloqueados com este header.
  • Referrer-Policy: Controla quanto de informação o Refer header, manda para o próximo site a ser acessado. Basicamente protege seus visitantes de compartilharem informações do site anterior para o próximo site a ser acessado a partir de seu site, ou seja, aumenta a privacidade de seu usuário.
  • X-Content-Type-Options: O header de resposta HTTP X-Content-Type-Options é um marcador usado pelo servidor para indicar que os MIME types enviados pelos headers Content-Type não devem ser alterados e seguidos. Isto permite que o usuário opte por não participar do chamado MIME Type Sniffing ou, em outras palavras, é uma forma de dizer que os webmasters estão vendo o que você está fazendo. Este header foi incluído pela Microsoft no IE 8 como uma maneira de webmasters serem capazes de bloquear o sniffing de conteúdo que acontecia na época, e podia transformar tipos MIME não executáveis em tipos executáveis. Desde então, outros browsers acataram a ideia mesmo que seus algoritmos de definição de MIME fossem menos agressivos.
  • X-Frame-Options: Pode ser usado para indicar se um site pode ser aberto com recursos do tipo <frame>, <iframe>, <embed> ou <object> dentro de seu site. Este é um recurso de segurança usado para bloquear ataques de clickjacking, garantindo que informações da utilização de dentro do seu site não possam ser interceptadas por sites terceiros. Este é, provavelmente, o Security Header mais importante a ser aplicado em todos os sites da Internet.
  • X-XSS-Protection: Esse header é uma funcionalidade dos navegadores como IE, Chrome, Safari que permite que o site pare de ser carregado quando eles detectam um ataque de XSS. Não é necessário para navegadores modernos, mas pode proteger o seu visitante caso esteja usando um navegador muito desatualizado.
Fonte das definições dos Security Headers: < https://developer.mozilla.org/ >


Como medir a nota dos Security Headers em meu site?

Basta usar a ferramenta online gratuita fornecida pela Sophos: Security Headers Tester

Avaliação de Security Headers - TéchneDigitus

Como implementar os Security Headers no CloudFlare:


CloudFlare Features Menu - TéchneDigitus

1. Clique em Workers.

CF Workers - TéchneDigitus
2. Clique no botão "Launch Editor".

Launch Editor - TéchneDigitus

3. Clique no botão "Add script".

Adicione o Script - TéchneDigitus

4. Escolha um nome para seu script. Pode chamá-lo de "securityheaders", por exemplo.

Nomeie o seu script - TéchneDigitus

5. Edite seu script. Dê um duplo clique no nome do seu script para abrir o editor.

Edite o seu script - TéchneDigitus
6. Copie e cole o script abaixo e clique no botão Deploy.

let securityHeaders = {
  "Content-Security-Policy" : "upgrade-insecure-requests",
  "X-Xss-Protection" : "1; mode=block",
  "X-Frame-Options" : "DENY",
  "Referrer-Policy" : "strict-origin-when-cross-origin",
  "Feature-Policy" : "microphone nome;; midi none;;",
}

addEventListener('fetch', event => {
  event.respondWith(addHeaders(event.request))
})

async function addHeaders(req) {
  let response = await fetch(req)
  let newHdrs = new Headers(response.headers)

  if (newHdrs.has("Content-Type") && !newHdrs.get("Content-Type").includes("text/html")) {
        return new Response(response.body , {
            status: response.status,
            statusText: response.statusText,
            headers: newHdrs
        })
  }

  Object.keys(securityHeaders).map(function(name, index) {
    newHdrs.set(name, securityHeaders[name]);
  })

  return new Response(response.body , {
    status: response.status,
    statusText: response.statusText,
    headers: newHdrs
  })
}

ATENÇÃO:
  • Esse script irá implementar os Security Headers: CSP, XSS-Protection, X-Frame-Options, X-Content-Type-Options, Referrer-Policy e Feature-Policy. O HSTS e o X-Content-Type-Options implementaremos de uma outra forma como veremos adiante.
  • As configurações usadas nos Security Headers deste exemplo funcionam na maioria dos casos sem maiores problemas, como por exemplo em um blog como este. Porém, dependendo das funcionalidades de seu site eles podem dar algum problema. Lembre-se de testar! Nesses casos, estude cada um dos Security Headers mais a fundo e entenda cada uma das opções disponíveis para cada um e implemente da forma correta. O importante é implementar todos! Não importa qual a configuração utilizada no final, pois para cada caso, o Security Header irá implementar a segurança e confiabilidade permitida para cada cenário.
Exemplo de Script - TéchneDigitus

7. Clique agora no botão "Add route".

Diga quais partes do seu site irão carregar o script de Security Headers. Neste exemplo, com "*[endereço]/*", fizemos com que todo o site utilizasse este script, ou seja, implementamos os Security Headers em todo o site.

Escolha em "Worker" o nome do script criado (securityheaders, neste exemplo).

Por fim, clique em "Save".

Adicione a rota - TéchneDigitus


PRONTO! Pode testar o seu site em e conferir o sucesso desta implementação!

HSTS, X-Content-Type-Options, TLS Seguro, Sempre HTTPS entre outras opções de segurança para o certificado de seu site

Na tela principal do CloudFlare, dentro das configurações de seu domínio, clique em SSL/TLS, e depois em "Edge Certificates".

TLS SSL Configs - TéchneDigitus

Nesta página, ative as seguintes opções:

Opções de Certificado - TéchneDigitus

Always Use HTTPS para que o CloudFlare sempre entregue seu site com criptografia.

Configure o HTTP Script Transport Security (HSTS) clicando no botão "Change HSTS Settings". Leia o aviso que aparecer e clique em aceitar. Então verá uma tela de configurações. Pode se basear na opções conforme a imagem abaixo:

HSTS - TéchneDigitus


Minimum TLS Version, escolha a opção 1.2. Desta forma, você forçará que seus visitantes utilizem somente a versão mais segura, recomendada explicitamente pelo padrão de segurança PCI.

Outras opções interessantes:

Outras opções interessantes - TéchneDigitus

Onion Routing, deixe em Off se você não tiver interesse que seus visitantes acessem o site pela Tor. Em nosso caso, permitimos que as pessoas acessem o Téchne Digitus pela Tor.

TLS 1.3, ativa o uso da versão mais recente do TLS. Teoricamente mais segura!

Automatic HTTPS Rewrites, automaticamente abre a página de recursos em seu site utilizando o HTTPS caso o recurso esteja disponível em HTTPS. Ou seja, entregará todo o conteúdo em seu site de forma encriptada sempre que possível!

Por fim, ative o DNSSEC se possível!

Nas configurações de seu domínio, clique na opção DNS.

Nesta página, procure pela opção de DNSSEC. Ative-a e siga as instruções apresentadas, pois você deverá configurar algumas opções no seu "Registrar". O seu "Registrar" pode ser o Registro.br ou o GoDaddy, por exemplo. Se você não configurar seu registrar com as opções conforme explicado (explicação que aparece ao ativar a opção), o DNSSEC não irá funcionar.

DNSSEC - TéchneDigitus

Teste o SSL/TLS de Seu site em: Qualys. SSL Labs

HTTPS Teste - TechneDigitus


Teste o DNSSEC de seu site em: VERISIGN DNSSEC Tester

DNSSEC Teste - TechneDigitus

Conclusão

Vimos como ativar diversas opções de segurança em um site somente utilizando a versão gratuita do CloudFlare.

Procuramos compilar aqui de forma simples, passo a passo e resumida, procedimentos avançados para proteção de um website. Informações extremamente valiosas para qualquer pessoa que mantenha um site na Internet.

Ativando todas as configurações apresentadas, pode-se muito bem mitigar quase que completamente diversos tipos de ataque de Sqlinjection, XSS, Phishing, Cache Poisoning, Man-in-the-middle, entre outros!

---

Para saber mais: