Hoe verwijder ik header informatie uit HTTP-reactieheaders, zoals de Server-header? Vanuit een beveiligingsoogpunt is het verstandig bepaalde informatie uit je HTTP-reactieheaders te verwijderen. Eén zo’n header is de Server-header. In de Server header vertelt een webserver graag welke software hij is, bijvoorbeeld Microsoft-IIS/10.0 of Apache. Voor een aanvaller is dit waardevolle informatie, en daarom doe je er verstandig aan deze Server header te verwijderen, je leest hier hoe…

Normale HTTP-reactieheader

Ik ben geen fan van security through obscurity, maar ik vind ook dat je een aanvaller niet wijzer moet maken dan hij al is. En uit HTTP-reactieheaders valt heel veel waardevolle informatie te halen. Beperk dit daarom zoveel mogelijk.

Een normale HTTP-reactie header, in response op een HEAD-request, ziet er als volgt uit en verstuurt o.a de volgende informatie naar de client:

HTTP/1.1 200 OK
Content-Length: 0
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Mon, 23 Sep 2019 11:44:52 GMT

Hier zie je twee headers met belangrijke informatie:

Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

Laten we deze verwijderen.

Server: reactieheader verwijderen met IIS requestFiltering

In IIS 10.0 ( Windows Server, version 1709 of Windows 10, version 1709) kun je een requestFiltering regel maken om de Server: header te verwijderen uit de reactie.

Alleen een systeembeheerder heeft permissies dit in te stellen. In IIS 10 op Windows Server 2016 en IIS 8.5 en lager werkt dit helaas niet en moet je -als gebruiker / websitebeheerder- een IIS URL Rewrite Module outboundRule gebruiken om de waarde te verwijderen. Onderaan dit artikel wordt dit behandeld.

Om de requestFiltering regel removeServerHeader te maken log je in op de server met IIS Manager. Ga naar de desbetreffende website, en in de Features View klik je op Configuration Editor.

In IIS Manager Configuration Editor ga je naar de Section system.webServer/security/requestFiltering en hier zie je False staan bij removeServerHeader. Zet deze value op True en klik Apply rechts onder Actions.

removeServerHeader in IIS Managers Configuration Editor

Klik je niet door naar een site, maar voer je dit uit op de Server node, dan geldt de instelling voor alle in IIS gehoste websites. Handig hè?! :) Ook kun je in een Web.config XML-configuratiebestand de volgende code opnemen wat hetzelfde bewerkstelligt:

<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>

Je zult hierna zien dat de Server:-reactieheader verdwenen is uit de response.

URL Rewrite Module outboundRule om Server: header mee te verwijderen

Als je geen gebruik kunt maken van requestFiltering om de Server: reactieheader te verwijderen, dan moet je hiervoor een URL Rewrite Module outboundRule hiervoor aanmaken. Een outboundRule stelt je in staat om in de output stream van de HTTP response te schrijven. Zo kun je alles wat de webserver naar de client stuurt nog veranderen (sneaky hè? :)).

Om de Server: reactieheader te verwijderen met een outboundRule moet je het volgende opnemen in het web.config-bestand:

<rewrite>
<outboundRules rewriteBeforeCache="true">
<rule name="Remove Server header">
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>

Wat hier opvalt is dat je de header eigenlijk niet verwijdert, maar herschrijft. Je vervangt Microsoft-IIS/10.0 door niets (""). Of door jouw eigen tekst:

<rewrite>
<outboundRules rewriteBeforeCache="true">
<rule name="Remove Server header">
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="ITFAQ.nl snelle webserver" />
</rule>
</outboundRules>
</rewrite>

Dit stuurt ITFAQ.nl snelle webserver terug als header.

Server-reactieheader minimaliseren in Apache (Bonus!)

In Apache webservers kun je helaas geen Server reactieheaders aanpassen of verwijderen in jouw website’s .htaccess. Hiervoor moet je in de serverconfiguratie zijn. Dat is bijvoorbeeld /etc/httpd/conf/httpd.conf of /etc/apache2/apache2.conf. Hierin moet je het volgende opnemen:

ServerSignature Off
ServerTokens Prod

Hier zorgt ServerSignature voor het weergeven van Apache, versie en besturingssysteem op foutpagina’s, zoals 404. De ServerTokens configurate regelt of je wel of niet Apache’s versie en het besturingssysteem wilt meesturen als Server: header. Hier zorgt Prod ervoor dat alleen Apache wordt genoemd.

Security through obscurity

The idea of “security through obscurity” is a myth and leads to a false sense of safety.

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *