Árvore de páginas

Índice

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. 

     


    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.

    sudo apt install libapache2-mod-security2

    2. Adicionar o módulo do Apache.

    sudo a2enmod security2

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

    sudo vim /etc/apache2/conf-available/security.conf

    4. Adicionar a opção:

    • SecServerSignature " "

    É possível alterar o conteúdo para qualquer informação. 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


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

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

    Debian
    apt install libnginx-mod-http-headers-more-filter

    2. Editar o arquivo de configuração onde está configurado o proxy reverso e adicionar as opções abaixo na sessão location:

    location / {
    	...
    	more_clear_headers ‘Server’;
    	more_clear_headers ‘X-Powered-By’;
    	...
    }

    3. Reiniciar o Nginx.

    Esta configuração limpa mais informações do cabeçalho HTTP. Neste caso irá remover as informações Server e X-Powered-By.


    Microsoft NLB


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

      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.

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

      Visualizar variáveis do servidor:

       Adicionar variável:

      Adicione a varável RESPONSE_SERVER:

      Adicione a variável RESPONSE_X-POWERED-BY:

      Adicione uma nova regra de saída:

      Em regras de saída escolha regra em branco:

      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.

      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.

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

      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.