Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice

Índice
maxLevel4
outlinetrue
exclude.*ndice
stylenone

Objetivo

O objetivo deste guia é alertar quanto ao problema de expor informações nos cabeçalhos HTTP, bem como apresentar o procedimento para ocultar essas informações nos balanceadores de carga homologados para uso no TOTVS Fluig Plataforma.

Exposição de informações

A aplicação retorna informações nos cabeçalhos HTTP que podem ser aproveitadas em tentativas de invasão. Um aspecto importante do desenvolvimento de aplicações seguras é evitar o vazamento de informações: cabeçalhos HTTP podem fornecer a um atacante o conhecimento sobre o funcionamento interno de uma aplicação. 

Deck of Cards
effectDuration0.5
historyfalse
idbalanceadores
effectTypefade
Card
defaulttrue
id1
labelApache

Card
id2
labelNginx

Card
id3
labelNLB

 


Como ocultar as informações

Para evitar essa exposição, sugerimos realizar o tratamento de informações de saída. O procedimento para ocultar as informações depende do load balancer utilizado no ambiente: Apache, Nginx ou Microsoft NLB.

Apache

Para remover por completo a informação, acompanhe os passos a seguir:

1. Instalar o módulo mod- security.

Bloco de código
sudo apt install libapache2-mod-security2

2. Adicionar o módulo do Apache.

Bloco de código
sudo a2enmod security2

3. Editar o arquivo de configuração de segurança:

Bloco de código
sudo vim /etc/apache2/conf-available/security.conf

4. Adicionar a opção:

  • SecServerSignature " "
Nota
id3
labelAlterar o conteúdo para qualquer informação

É possível alterar o conteúdo para qualquer informação, seguindo o procedimento anterior. Porém, em vez de adicionar SecServerSignature " ", adicionar o texto desejado, exemplo:

  • SecServerSignature Fluig

Com isso, a opção Server passa a apresentar:

5. Alterar os dois parâmetros para ocultar a informação do Server:

  • ServerSignature Off
  • ServerTokens Prod

6. Incluir os dois parâmetros para ocultar a informação do X-Powered-By:

  • Header always unset "X-Powered-By"
  • Header unset "X-Powered-By"

7. Reiniciar o Apache.

Com isso, a opção Server passa a não apresentar nenhuma informação:


Nginx

Acompanhe os passos a seguir:

Deck of Cards
effectDuration0.5
historyfalse
idnginx
effectTypefade
Card
defaulttrue
id1
labelNão mostrar a versão

1. Editar o arquivo de configuração onde está a diretiva HTTP.

2. Certificar-se de que a opção server_tokens off esteja ativada conforme abaixo:

Com esta configuração passará a não apresentar a versão do servidor:

Card
id2
labelRemover por completo a informação

Caso seja necessário ocultar por completo a informação do servidor, serão necessárias mais algumas configurações.

1. Instalar o módulo ngx_headers_more. A instalação depende de cada sistema operacional. No Debian basta executar o comando abaixo:

Bloco de código
titleDebian
apt install libnginx-mod-http-headers-more-filter

2. Editar o arquivo de configuração onde está configurado o proxy reverso e adicionar a opção more_clear_headers na sessão location:

Esta opção limpa mais opções do cabeçalho HTTP. Neste caso irá remover a informação ‘Server’.

Card
id3
labelRemover qualquer informação dos cabeçalhos

É possível remover qualquer informação dos cabeçalhos utilizando a opção. Inclusive é possível utilizar o caractere coringa ‘*’ para limpar várias opções. Exemplo:

Bloco de código
more_clear_headers ‘X-*’;

A configuração acima irá remover todos os cabeçalhos que começam com ‘X- ‘.

Nota

É necessário reiniciar o Nginx para que as configurações realizadas tenham efeito.


Microsoft NLB

Nesse caso, a solução é um pouco diferente, sendo necessário incluir regras de saída utilizando a reescrita de URL.

Existem várias configurações de balanceamento de carga e proxy reverso. Diante disto será necessário avaliar cada caso para identificar o melhor local para configuração. O ideal é criar a regra no servidor de saída que geralmente será o proxy reverso. Caso exista apenas o balanceamento de carga sem o proxy reverso será necessário criar a regra em cada servidor IIS que faz parte do cluster.

Neste caso deverá configurar nos dois servidores pois não existe um servidor único com proxy reverso.

Já neste segundo caso basta configurar uma regra de saída no servidor proxy reverso.

Acompanhe os passos a seguir:

Deck of Cards
effectDuration0.5
historyfalse
idNLB
effectTypefade
Card
defaulttrue
id1
labelPasso 1

Para realizar a configuração é necessário criar uma regra de saída na opção URL Rewrite do site.

Card
id2
labelPasso 2

Visualizar variáveis do servidor:

Card
id3
labelPasso 3

 Adicionar variável:

Card
id4
labelPasso 4

Adicione a varável RESPONSE_SERVER:

Card
id5
labelPasso 5

Adicione a variável RESPONSE_X-POWERED-BY:

Card
id6
labelPasso 6

Adicione uma nova regra de saída:

Card
id7
labelPasso 7

Em regras de saída escolha regra em branco:

Card
id8
labelPasso 8

Escolha um nome para a regra, em correspondência escolha a opção variável e no nome da varável preencha com RESPONSE_SERVER conforme cadastrado anteriormente.

Card
id9
labelPasso 9

A ação deve ser reescrita e o valor deve ser deixado em branco por padrão. Caso escreva algum outro valor este será apresentado no cabeçalho HTTP.

Acione Aplicar.

Card
id10
labelPasso 10

Para o cabeçalho X-Powered-By deverá seguir os mesmos passos trocando apenas o nome da varável para RESPONSE_X-POWERED-BY:

Card
id11
labelPasso 11

Ao final teremos duas regras de saída:

O resultado esperado aparecerá nos cabeçalhos HTTP:

A regra do cabeçalho Server foi criada pois pode ou não aparecer dependendo da forma que está configurado os serviços de proxy reverso e balanceamento de carga.