
16 augustus 2023 · 5 min read
In deze blogpost behandelen de header Server uit een HTTP-response. Standaard geeft deze header informatie prijs over de gebruikte software van de webserver.
Maar wat houdt de Serverheader precies in? Simpel gezegd, wanneer je een website bezoekt, stuurt je browser een verzoek naar de server van die website. De server reageert met de gevraagde informatie, vergezeld van een reeks headers. Deze headers dragen diverse metadata en nuttige details, zoals de datum en tijd van het antwoord, de grootte van de verzonden gegevens, en – inderdaad – de naam en versie van de gebruikte serversoftware. Dit laatste is wat we de Server header noemen.
Het delen van deze informatie lijkt misschien onschuldig, maar het kan een schat aan informatie bieden voor kwaadwillenden. Door te weten welke serversoftware en versie je gebruikt, kunnen hackers gericht zoeken naar specifieke kwetsbaarheden om te misbruiken. Beperk deze informatie dus tot het minimum.
In deze blogpost gaan we dieper in op hoe je de waarde van de Server-header kunt instellen in drie van de meest populaire webserver software: IIS, Nginx en Apache. We zullen stap voor stap uitleggen hoe je dit kunt doen.
Laten we beginnen met nginx. Als je de HTTP header server wilt verwijderen binnen nginx, kun je een aantal dingen doen. We behandelen twee van de drie mogelijke oplossingen.
nginx.conf.http-blok, server-blok of location-blok:server_tokens off;
De optie server_tokens staat standaard op on, door deze op off te zetten verbergt de server de specifieke versie van Nginx in de Server-header en foutpagina’s. Let op, dit verwijdert alleen het versienummer, er is nog steeds te zien dat er Nginx wordt gebruikt.
Om naast het versienummer ook nog de tekst Nginx uit de server header te verwijderen kan de module Headers More worden gebruikt. Installeer libnginx-mod-http-headers-more-filter (apt install libnginx-mod-http-headers-more-filter).
nginx.conf.http-blok, server-blok of location-blok:more_clear_headers Server;
Een andere optie om zowel het versienummer als de tekst nginx te verwijderen is door aanpassingen te maken in de broncode en deze opnieuw te compilen.
Als je de HTTP header server wilt verwijderen binnen Apache, kun je een aantal dingen doen. Deze stappen lijken erg op die van de zojuist genoemde Nginx.
/etc/apache2/conf-enabled/security.conf.ServerTokens Prod
ServerSignature Off
Door deze instellingen verbergt de server de specifieke versie van Apache in de Server-header en foutpagina’s. Let op, ook hier verwijdert dit alleen het versienummer, en is er nog steeds te zien dat er Apache wordt gebruikt.
Om naast het versienummer ook nog de tekst Apache uit de server header te verwijderen kan de module ModSecurity worden gebruikt. Installeer ModSecurity (apt install libapache2-mod-security2).
/etc/modsecurity/modsecurity.conf of het apache configuratiebestand /etc/apache2/apache.conf.<IfModule security2_module> SecRuleEngine on ServerTokens Min SecServerSignature " " </IfModule>
Een andere optie om zowel het versienummer als de tekst Apache te verwijderen is door aanpassingen te maken in de broncode en deze opnieuw te compilen.
Binnen IIS is het verwijderen van de server header eenvoudiger. Er zijn minstens vier verschillende paden, visueel via IIS Manager, via het web.config configuratiebestand, via Powershell of via de Registry. Onderstaand behandelen we hoe je de header kunt verwijderen via IIS Manager en via het web.config bestand.
Configuration Editorsystem.webServer -> security -> requestFiltering en zet de waarde van removeServerHeader op true. Hiermee wordt de header verwijderd.enableVersionHeader op false, onder system.web -> httpRuntime.HTTP Response Headers. Selecteer X-Powered-By en klik op Remove.Onderstaande configuratie werkt alleen op IIS 10.0 en niet op oudere versies. Een voorbeeld web.config om de server header, X-Aspnet-Version header en X-Powered-By header te verwijderen:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<!-- Verwijder de Server header -->
<requestFiltering removeServerHeader="true" />
</security>
<httpProtocol>
<customHeaders>
<!-- Verwijder de X-Powered-By header -->
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
<system.web>
<!-- Verwijder de X-Aspnet-Version header -->
<httpRuntime enableVersionHeader="false" />
</system.web>
</configuration>
In deze blogpost hebben we het belang onderstreept van het beheren van de Server-header in HTTP-responses. We hebben gezien hoe het prijsgeven van te veel informatie over de gebruikte serversoftware en de versie ervan een potentieel risico kan vormen voor de veiligheid van je webserver. En we hebben stap-voor-stap handleidingen gegeven voor het aanpassen van de Server-header in drie van de meest populaire webserver software: IIS, Nginx en Apache.
Maar er is meer aan webbeveiliging dan alleen het beheren van de Server-header. Daarom nodigen we je uit om gebruik te maken van onze penetratietestdiensten. Onze experts kunnen je helpen om kwetsbaarheden te identificeren en aan te pakken voordat ze een probleem worden.
Neem contact met ons op om te ontdekken hoe we je kunnen helpen je webserver veiliger te maken. In de wereld van webtechnologieën is veiligheid geen luxe, maar een noodzaak.