Índice |
---|
maxLevel | 4 |
---|
outline | true |
---|
exclude | .*ndice |
---|
style | none |
---|
|
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.
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 |
---|
effectDuration | 0.5 |
---|
history | false |
---|
id | balanceadores |
---|
effectType | fade |
---|
|
Card |
---|
default | true |
---|
id | 1 |
---|
label | Apache |
---|
| ![](/download/attachments/626350885/load%20balancer.png?version=2&modificationDate=1624996112440&api=v2)
|
Card |
---|
| ![](/download/attachments/626350885/load%20balancer%20nginx.png?version=1&modificationDate=1624910827347&api=v2)
|
Card |
---|
| ![](/download/attachments/626350885/load%20balancer%20nlb.png?version=1&modificationDate=1624910878657&api=v2) |
|
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.
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:
Nota |
---|
id | 3 |
---|
label | Alterar 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: Com isso, a opção Server passa a apresentar: ![](/download/thumbnails/626350885/Apache%203.png?version=1&modificationDate=1624901040630&api=v2)
|
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:
![](/download/thumbnails/626350885/Apache%202.png?version=1&modificationDate=1624901040713&api=v2)
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:
Bloco de código |
---|
|
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:
Bloco de código |
---|
location / {
...
more_clear_headers ‘Server’;
more_clear_headers ‘X-Powered-By’;
...
} |
Esta opção limpa mais opções do cabeçalho HTTP. Neste caso irá remover as informações Server e X-Powered-By.
![](/download/attachments/626350885/Nginx%205.png?version=3&modificationDate=1625081383733&api=v2)
3. Reiniciar o Nginx.
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.
![](/download/attachments/626350885/nbl%201.png?version=1&modificationDate=1624912115847&api=v2)
Neste caso deverá configurar nos dois servidores pois não existe um servidor único com proxy reverso.
![](/download/attachments/626350885/nbl%202.png?version=2&modificationDate=1624912203613&api=v2)
Já neste segundo caso basta configurar uma regra de saída no servidor proxy reverso.
Acompanhe os passos a seguir:
Deck of Cards |
---|
effectDuration | 0.5 |
---|
history | false |
---|
id | NLB |
---|
effectType | fade |
---|
|
Card |
---|
default | true |
---|
id | 1 |
---|
label | Passo 1 |
---|
| Para realizar a configuração é necessário criar uma regra de saída na opção URL Rewrite do site. ![](/download/attachments/626350885/nlb%20Passo%201.png?version=1&modificationDate=1624967714587&api=v2)
|
Card |
---|
| Visualizar variáveis do servidor: ![](/download/attachments/626350885/nlb%20Passo%202.png?version=1&modificationDate=1624967725857&api=v2)
|
Card |
---|
| Adicionar variável: ![](/download/attachments/626350885/nlb%20Passo%203.png?version=1&modificationDate=1624967815560&api=v2)
|
Card |
---|
| Adicione a varável RESPONSE_SERVER: ![](/download/attachments/626350885/nlb%20Passo%204.png?version=2&modificationDate=1624967985830&api=v2)
|
Card |
---|
| Adicione a variável RESPONSE_X-POWERED-BY: ![](/download/attachments/626350885/nlb%20Passo%205.png?version=1&modificationDate=1624968182030&api=v2)
|
Card |
---|
| Adicione uma nova regra de saída: ![](/download/attachments/626350885/nlb%20Passo%206.png?version=1&modificationDate=1624968343610&api=v2)
|
Card |
---|
| Em regras de saída escolha regra em branco: ![](/download/attachments/626350885/nlb%20Passo%207.png?version=2&modificationDate=1624968569493&api=v2)
|
Card |
---|
| 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. ![](/download/attachments/626350885/nlb%20Passo%208.png?version=1&modificationDate=1624968727297&api=v2)
|
Card |
---|
| 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. ![](/download/attachments/626350885/nlb%20Passo%209.png?version=1&modificationDate=1624968849187&api=v2)
|
Card |
---|
| Para o cabeçalho X-Powered-By deverá seguir os mesmos passos trocando apenas o nome da varável para RESPONSE_X-POWERED-BY: ![](/download/attachments/626350885/nlb%20Passo%2010.png?version=1&modificationDate=1624968967437&api=v2)
|
Card |
---|
| Ao final teremos duas regras de saída: ![](/download/attachments/626350885/nlb%20Passo%2011.png?version=1&modificationDate=1624969102543&api=v2)
|
|
O resultado esperado aparecerá nos cabeçalhos HTTP:
![](/download/thumbnails/626350885/nbl%203.png?version=1&modificationDate=1624969149877&api=v2)
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.