Hieronder vind je een aantal tips die je kunt gebruiken om je eigen webserver te beveiligen, als je er eentje bezit.
Verberg apache-versie en alle andere gevoelige informatie
Als je een apache webserver hebt geïnstalleerd kunnen internetgebruikers de versie van je apache opvragen, samen met je operating system (OS). Je zou denken dat het niet uitmaakt als anderen mijn apache-versie weten. Het risico bestaat echter dat een hacker exploits kan zoeken op de versie van je apache en als je vergeten bent om het te updaten kan het kwetsbaar zijn. Je kunt dit uitschakelen door een kleine aanpassing te brengen aan je config. Zoek naar httpd.conf en open die met je favoriete tekst editor en zoek of voeg de volgende lijnen toe:
ServerSignature off ServerTokens Prod
ServerSignature Komt te staan als door apache automatisch genereerde pagina’s te voorschijn komen zoals 404 pagina’s.
ServerTokens stuurt met http een response met de huidige versie en OS van apache. Door het op Prod te zetten stuurt apache alleen “Apache” waardoor hackers geen informatie krijgen van e Apache versie of je OS. Als je ook niet wilt dat Apache te komen staat dan moet je de source van Apache aanpassen zo kun je hackers ook misleiden.
Ben er zeker van dat apache onder zijn eigen gebruiker en groep draait
Bij sommige apache installaties draait Apache met de gebruiker “nobody”. Het is veiliger om een eigen gebruiker aan te maken voor Apache, dit zorgt voor een beter beveiliging voor je systeem. Als je meerdere services hebt draaien met nobody en als er een van die services overgenomen wordt door een kwetsbaarheid dan zijn gelijk alle services overgenomen. Je kunt dit aanpassen in httpd.conf:
User apache Group apache
Nu moet je apache opnieuw opstarten. Als deze gebruiker en groep niet bestaat zal apache ook niet starten.
Zorg ervoor dat gebruikers niet buiten de webroot kunnen komen
Apache maakt een webroot aan standaard /var/www. Je wilt dan dat gebruikers niet buiten deze map komen want dan krijgen ze toegang tot je server bestanden en dit wil iedereen voorkomen. Dit is makkelijk op te lossen door je apache instellingen aan te passen. Hier onder is een voorbeeld voor je webroot instellingen (we gaan ervan uit dat /var/www je webroot is):
<Directory /> Order Deny, Allow Deny From All Options None AllowOverride None </Directory> <Directory /var/www> Order Allow, Deny Allow from all </Directory>
Schakel directory listing uit
Met directory listing hebben gebruikers de mogelijkheid een overzicht te krijgen van de inhoud van een map. Dit is niet wat we willen tenzij je wilt dat gebruikers een inzage hebben. Om deze optie uit te zetten moet je weer naar je instellingen kijken van je webroot en er een optie erbij zetten:
Options –includes
Schakel CGI uit
Common Gateway Interfae (CGI) maakt het mogelijk om dynamische gegevens van je server op te vragen vanuit je webbrowser. Als je geen gebruik wilt maken van CGI dan kun je het beste uitzetten. Je kunt dit doen in bij de instellingen van je Webroot. Zet de volgen optie erbij:
Options –ExecCGI
Laat apache geen symbolic links volgen
Symbolic links (ook wel bekend als symlink en softlink) is een bestand die een referentie bevat naar een ander bestand of een andere map. Het beste is om deze optie uit te schakelen omdat het kwetsbaarheden kan bevatten. Deze is ook uit te schakelen via opties voor je webroot:
Options –FollowSymLinks
Zet meerdere Opties uit
Ik heb een paar voorbeelden gegeven van opties die je mee kunt geven aan je webroot. Je kunt ze ook allemaal tegelijk gebruiken of gewoon alles uitschakelen. Als je alles wilt uitschakelen zet je er None wil je een paar opties uit schakelen dan zet je de opties achterelkaar:
Options –Includes –ExecCGI –FollowSymLinks
Gebruik mod_security
mod_security is een Apache module die je kan helpen bij het beveiligen van je Apache server, mod_security is geschreven door Ivan Ristic die ook de schrijver is van Apache security voor O’reilly. Met Mod_security kun je het volgende doen:
- Simple filtering
- Reguliere expressie filtering
- URL encoding validatie
- Unicode Encoding validatie
- Auditing
- Null byte aanval preventie
- Upload memory limit
- Server identity masking
- En nog meer
Schakel ongebruikte modules uit
Met Apache komen een paar standaard modules die je waarschijnlijk niet allemaal nodig zult hebben. Je kunt meer over Modules lezen Module documentatie er staat ook uiteg erbij over de modules zo weet je wat een module doet en dan kun e beslissen of je het nodig hebt of niet. Eerst moet je kijken welke modules er standaard geladen worden deze kun je vinden in httpd.conf bestand. Lijnen die starten met LoadModule zijn de modules die geladen, waar een # voor staat worden niet geladen. Om een snel overzicht te krijgen over modules die geladen worden kun je grep gebruiken (we gaan ervan uit dat je op dezelfde locatie bevind als de httpd.conf):
Grep LoadModule httpd.conf
Hier zijn een paar Modules die standaard mee komen maar vaak niet gebruikt worden: mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi en mod_autoindex.
Zorg dat alleen root toegang heeft tot apache instellingen
Je Wilt niet dat andere gebruikers toegang hebben tot je Apache instellingen daarom is het ok beste om alleen root toegang tegeven (We gaan ervan uit dat apache in /usr/local/apache is geïnstalleerd)
Chown –R root:root /usr/local/apache Chmod –R o-rwx /usr/local/apache
Verlaag het timeout
Timout is het tijd waar Apache op drie dingen kan wachten 1. tijd die tussen GET request zit 2. tijd tussen TCP pakketen met POST of PUT request 3. De tijd tussen ACK’s van TCP. Standaard staat het timeout op 300 seconden. Als dit hoog staat kunnen mensen denial of service aanvallen doen, tegenwoordig is internet snel genoeg om deze optie lager te zetten. Het beste is om het op 45 te zetten.
Timeout 45Limiteer grote requests
In apache zit een optie om een limit in te stellen voor requests. Als dit hoog staat loop je risico om eerder een slachtoffer te zijn van een denial of service.
Als eerst kun je kijken naar LimitRequestBody deze staat automatisch op Unlimited. Als je een limit op uploads wilt zetten bijv. niet groter dan 1MB kun je de instelling als volgt zetten
LimitRequesBody 1048576Wil je het lager zetten kan het ook. Als je niet bestanden hebt die groot zijn is het dan ook het beste om deze zo laag mogelijk te zetten.
Toegang voor bepaalde netwerken
Als je Apache wilt gebruiken voor alleen intern netwerk of voor bepaalde personen dan kun je in de instellingen aangeven. Je kunt dan twee opties meegeven, je kunt een blok IP adressen kiezen of zelf een IP adres aangeven. Je kunt de Optie “Allow from” optie bij je webroot zetten. Hieronder is een voorbeeld (we nemen het blok 176.16 als voorbeeld):
Order Deny, Allow
Deny from all
Allow from 176.16.0.0/16Of IP
Order Deny,Allow Deny from all Allow from 127.0.0.1
Gebruik apache in chroot omgeving
Chroot zorgt ervoor dat een programma in een geïsoleerde ruimte kan werken zonder enig effect te hebben op andere programma’s of server.
Het kan lastig zijn om apache in chroot te draaien vanwege benodigde libraries. Je kunt ook mod_security gebruiken om het makkelijker toe te passen. Om chroot te gebruiken met od_security moet je de instellingen ervan aanpassen, zet de volgende lijn erbij en restart Apache:
SecChrootDir /chroot/apache





