[Microsoft Azure] Removendo HTTP Response Header de WebApp, ApiApp e IIS
Opa, tudo bom?
Ainda escrevendo sobre segurança, umas das perguntas que mais vejo por ai é “Como posso remover o header do Web App, Api App e IIS?”, antes de mais nada, para colocar todos na mesma página, toda requisição para o servidor web tem um cabeçalho com algumas informações importantes, que podem ser utéis para uma pessoa mal intencionada, abaixo um exemplo de um cabeçalho:
Na imagem acima conseguimos descobrir a versão do web server e qual a plataforma está sendo executada, informações que podem nortear um invasor na procura de um exploit conhecido ou algo do gênero.
O que vamos fazer é remover esse “banner” de toda requisição que for feita para o web server, isso não vai impedir que a aplicação seja explorada por uma determinada vulnarebilidade, porém é uma boa prática que podemos adotar para todas nossas aplicações, sejam elas hospedadas em Web App, Api App e/ou IIS.
Para remover a versão do web server, utilizaremos o URL Rewrite, no Web App e ApiAppi esse módulo está implementado nativamente, porém para o IIS convencional é necessário instalar o URL Rewrite através do Web Platform Installer.
Vamos ao que interessa. 🙂
Acesse o WebApp ou ApiApp, clique em App Service Editor e em seguida Go.
No web.config dentro da tag <system.Webserver> acrescente o código abaixo:
<rewrite> <outboundRules> <rule name="Remove versão Servidor - WebApp/ApiApp/IIS"> <match serverVariable="RESPONSE_Server" pattern=".*" /> <action type="Rewrite" /> </rule> <rule name="Remove X-Powered-By"> <match serverVariable="RESPONSE_X-POWERED-BY" pattern=".*" /> <action type="Rewrite" /> </rule> </outboundRules> </rewrite>
Reforçando que qualquer configuração que for executada dentro do App Service Editor, o arquivo que estiver sendo modificado será automaticamente salvo, ou seja, quando isso acontecer o site será reiniciado, cuidado ao fazer a configuração em ambiente produtivo, pois qualquer erro de sintaxe pode e vai deixar a aplicação indisponível. Recomendo que qualquer “change” seja executada dentro de uma janela acordada entre empresa e cliente.
Analisando a requisição após a configuração obtemos o seguinte resultado:
O resultado para Server e X-Powered-By está em branco, exatamente como esperavamos. Os testes para visualizar o cabeçalho da requisição foram executados a partir do curl, porém pode ser testados através do Inspect do Chrome (F12), Fiddler, e/ou outras ferramentas.
Até a próxima!
Comments