Het veilig con­fi­gu­re­ren van uw server is een van de be­lang­rijk­ste taken voor be­heer­ders. Dit geldt niet alleen voor zelf­be­heer­de servers, maar ook voor gehuurde hardware. Maat­re­ge­len zoals wacht­woord­be­vei­li­ging, robuuste SSH-in­stel­lin­gen en re­gel­ma­ti­ge updates vormen samen een uit­ge­breid be­vei­li­gings­pak­ket.

Wie is ver­ant­woor­de­lijk voor een veilige ser­ver­con­fi­gu­ra­tie?

Het hosten van uw eigen server biedt maximale vrijheid wat betreft con­fi­gu­ra­tie. Een geschikt al­ter­na­tief zijn root­ser­vers, die door veel providers worden aan­ge­bo­den en toegang tot een root­ac­count verlenen. In beide scenario’s zijn kritieke taken zoals in­stal­la­tie, struc­tu­re­ring en onderhoud volledig voor rekening van de huurder. Fouten in het root­ge­bied kunnen tot aan­zien­lij­ke problemen leiden. Door de juiste pro­ce­du­res te volgen, kunt u echter een ideale basis leggen voor een be­trouw­ba­re, krachtige en veilige server.

Hoe u uw server stap voor stap beveiligt

Of u nu een Windows-, Ubuntu- of Debian-server wilt be­vei­li­gen, er zijn ver­schil­len­de uni­ver­se­le stappen die u kunnen helpen een solide be­vei­li­gings­ba­sis te leggen. Hieronder vatten we de be­lang­rijk­ste stappen samen.

Stap 1: Voer een minimale in­stal­la­tie uit

Zelfs voordat u begint met het nemen van be­scher­men­de maat­re­ge­len en het con­fi­gu­re­ren van uw server, kunt u het toe­kom­sti­ge be­vei­li­gings­po­ten­ti­eel van uw project be­ïn­vloe­den. Ongeacht of u een Windows- of Linux-be­stu­rings­sys­teem gebruikt, pas dit principe toe tijdens de in­stal­la­tie: uw server mag alleen de software bevatten die nodig is om zijn taken uit te voeren.

De reden hiervoor is dat elke ge­ïn­stal­leer­de ap­pli­ca­tie een po­ten­ti­eel vei­lig­heids­ri­si­co vormt en de pres­ta­ties negatief kan be­ïn­vloe­den. Om kwets­baar­he­den tot een minimum te beperken, in­stal­leert u alleen de nood­za­ke­lij­ke sys­teem­com­po­nen­ten en vertrouwt u uit­slui­tend op ge­ve­ri­fi­eer­de software van derden.

Stap 2: Stel een sterk wacht­woord in

Na de in­stal­la­tie moet u eerst een sterk be­heer­ders­wacht­woord (Windows) of root­wacht­woord (Linux) instellen. Standaard is er geen waarde ge­de­fi­ni­eerd, dus het be­heer­ders­ac­count blijft ge­blok­keerd totdat u een wacht­woord invoert. De meeste be­stu­rings­sys­te­men vragen u om direct na de in­stal­la­tie een account met een wacht­woord aan te maken, dat zal fungeren als uw be­heer­ders- of rootlogin.

Als u uw Linux-server bij een provider hebt gehuurd en een bestaande root-login hebt ontvangen, wijzig dan on­mid­del­lijk het wacht­woord. Log in op uw server via SSH en voer de volgende opdracht in de terminal in:

passwd
bash

Nadat u uw veilige wacht­woord hebt ge­ïn­stal­leerd, moet u het ve­ri­fi­ë­ren. Zorg ervoor dat u een wacht­woord kiest dat zo lang mogelijk is en een com­bi­na­tie van letters, speciale tekens en cijfers bevat. Het wordt ook aan­be­vo­len om een wacht­woord­be­heer­der te gebruiken om het wacht­woord veilig op te slaan, zodat u het indien nodig ge­mak­ke­lijk kunt openen.

Stap 3: Wijzig de SSH-poort

Standaard maakt SSH-toegang gebruik van TCP/UDP-poort 22, die vooraf is ge­con­fi­gu­reerd tijdens de in­stal­la­tie van het systeem. Hackers richten hun ge­au­to­ma­ti­seer­de in­log­po­gin­gen vaak op deze poort. Om het risico op on­ge­oor­loof­de toegang te ver­min­de­ren, kunt u een andere poort toewijzen voor ver­sleu­tel­de externe ver­bin­din­gen.

Om dit te doen, bewerk je het SSH-con­fi­gu­ra­tie­be­stand sshd_config met een wil­le­keu­ri­ge tekst­edi­tor. Als je bij­voor­beeld de nano-editor wilt gebruiken, voer je het volgende commando uit:

nano /etc/ssh/sshd_config
bash

Zoek naar de regel met het label ‘Port’ en vervang poort­num­mer 22 door het nummer van uw keuze. Houd er rekening mee dat er ver­schil­len­de andere stan­daard­poor­ten zijn ge­re­ser­veerd voor ver­schil­len­de diensten (bij­voor­beeld poort 80 voor HTTP).

Opmerking

Voordat de wij­zi­gin­gen in het sshd_config bestand van kracht worden, moet u de SSH-service opnieuw opstarten. Op Debian kunt u dit doen met het commando etc/init.d/ssh restart. Ubuntu-ge­brui­kers kunnen de service opnieuw opstarten met service ssh restart.

Stap 4: Schakel SSH-aan­mel­ding voor be­heer­ders­ac­counts uit

Om uw server nog beter te be­vei­li­gen, is het raadzaam om SSH-aan­mel­ding voor het root- of be­heer­ders­ac­count uit te schakelen. Als een aanvaller namelijk toegang krijgt tot het wacht­woord, kan hij het account gebruiken voor externe toegang.

Voordat u deze maatregel im­ple­men­teert, moet u ervoor zorgen dat er ten minste één ander account is dat ver­bin­ding kan maken met de server, om te voorkomen dat u zichzelf bui­ten­sluit. Voor Linux-systemen maakt u een account aan met behulp van de volgende opdracht:

useradd -g users -d /home/user1 -m -s /bin/bash user1
bash

Hiermee wordt een voor­beeld­ge­brui­kers­ac­count met de naam ‘user1’ aan­ge­maakt. Wijs ver­vol­gens een veilig wacht­woord toe aan het account:

passwd user1
bash

Test of het inloggen met het aan­ge­maak­te ge­brui­kers­ac­count werkt. Als dat lukt, ga dan verder met de hoofdtaak: het uit­scha­ke­len van het root-account. Open het SSH-con­fi­gu­ra­tie­be­stand sshd_config opnieuw met je favoriete editor. Zoek de ver­mel­ding PermitRootLogin yes en vervang deze door PermitRootLogin no. Na het her­star­ten van de SSH-service is externe toegang voor het root-account niet meer mogelijk.

Met behulp van de AllowGroups voer in het con­fi­gu­ra­tie­be­stand kunt u ook aangeven welke ge­brui­kers ver­bin­ding mogen maken via SSH. Hiervoor maakt u een­vou­dig­weg een groep aan (addgroup) en voegt u de gewenste ge­brui­kers toe (adduser). Ver­vol­gens neemt u de gekozen groeps­naam op in de sshd_config (bijv. AllowGroups ssh_users).

Stap 5: E-mail­mel­din­gen instellen voor SSH-aan­mel­din­gen

Ongeacht de spe­ci­fie­ke stappen die u neemt om SSH-toegang te be­vei­li­gen, moet u daarna continu alle ac­ti­vi­tei­ten op afstand con­tro­le­ren. Zo kunt u con­tro­le­ren of de SSH-service op uw server goed beveiligd is en on­ge­oor­loof­de toe­gangs­po­gin­gen vroeg­tij­dig de­tec­te­ren, zodat u adequaat kunt reageren. Een eenvoudig shellscript kan au­to­ma­tisch een mel­dings­mail naar uw adres sturen na elke suc­ces­vol­le aan­mel­ding op afstand bij uw server.

Hier is een voor­beeldscript /opt/shell-login.sh voor Linux, dat u eenvoudig zelf kunt maken:

#!/bin/bash
echo "Login on $(hostname) on $(date +%Y-%m-%d) at $(date +%H:%M)"
echo "User: $USER"
echo
finger
txt

Voeg ver­vol­gens de volgende regel toe aan het bestand /etc/profile:

/opt/shell-login.sh | mailx -s "SSH login on the server" youremail@example.com
txt

Deze invoer zorgt ervoor dat het script wordt uit­ge­voerd en een mel­dings­mail naar het opgegeven adres wordt verzonden wanneer er een SSH-aan­mel­ding plaats­vindt. Om dit te bereiken, moet het script toe­stem­ming 755 krijgen (lees- en uit­voer­rech­ten voor alle ge­brui­kers en schrijf­rech­ten voor de eigenaar). U kunt deze toe­stem­ming instellen met de volgende opdracht:

chmod 755 /opt/shell-login.sh
bash

Stap 6: Blokkeer on­ge­bruik­te poorten

Open poorten vormen over het algemeen geen sig­ni­fi­cant vei­lig­heids­ri­si­co, aangezien ze es­sen­ti­eel zijn voor de com­mu­ni­ca­tie met ver­schil­len­de diensten en toe­pas­sin­gen. Zo zijn poorten 80 en 443 nood­za­ke­lijk voor HTTP- en HTTPS-ver­bin­din­gen, net als de door u gekozen SSH-poort. Deze in­ter­fa­ces kunnen echter kwets­baar­he­den worden als de bij­be­ho­ren­de programma’s be­vei­li­gings­fou­ten bevatten, die aan­val­lers kunnen mis­brui­ken.

Als u een minimale sys­teem­in­stal­la­tie hebt uit­ge­voerd en slechts een beperkt aantal ap­pli­ca­ties van derden hebt ge­ïn­stal­leerd, zou het aantal extra benodigde poorten klein moeten zijn. Om uw server tegen aanvallen te be­scher­men, moet u alle onnodige open poorten in uw fire­wal­lin­stel­lin­gen blokkeren. De meeste grote be­stu­rings­sys­te­men bevatten standaard pak­ket­fil­te­rings­soft­wa­re, zoals iptables. Met deze tool kunt u regels de­fi­ni­ë­ren om het da­ta­ver­keer te reguleren, waaronder het spe­ci­fi­ce­ren van toe­ge­sta­ne en ge­blok­keer­de poorten.

Stap 7: Werk de software re­gel­ma­tig bij

Bekende be­vei­li­gings­lek­ken in ap­pli­ca­ties worden doorgaans snel verholpen met updates. Door op de hoogte te blijven van updates voor uw be­stu­rings­sys­teem en ge­ïn­stal­leer­de ap­pli­ca­ties en deze direct toe te passen, zorgt u voor een optimale be­scher­ming van uw server. De meeste ser­ver­sys­te­men bieden ook functies om kritieke be­vei­li­ging­sup­da­tes au­to­ma­tisch op de ach­ter­grond te down­lo­a­den en te in­stal­le­ren.

Als u bij­voor­beeld een Windows-server beveiligt, kunt u in het gedeelte Windows Update spe­ci­fie­ke be­leids­re­gels voor au­to­ma­ti­sche updates con­fi­gu­re­ren. Hiermee kunt u onder andere instellen wanneer en hoe vaak er naar updates wordt ge­con­tro­leerd, of deze on­mid­del­lijk moeten worden ge­ïn­stal­leerd en wanneer het systeem opnieuw moet worden opgestart. Linux-systemen bieden tools zoals apt-listchanges of het apticron shell-script om u dagelijks op de hoogte te stellen van nieuwe be­schik­ba­re soft­wa­re­pak­ket­ten en deze te down­lo­a­den. Aan­vul­len­de scripts zoals unattended-upgrades kunnen de au­to­ma­ti­sche in­stal­la­tie verzorgen.

Opmerking

Zelfs wanneer u een ge­au­to­ma­ti­seerd up­da­te­pro­ces gebruikt, moet u ervoor zorgen dat u bijhoudt welke updates zijn voltooid. Dit helpt bij het iden­ti­fi­ce­ren en oplossen van fouten die tijdens het up­da­te­pro­ces kunnen optreden.

Stap 8: Bescherm Windows- en Linux-servers tegen brute-force-aanvallen

Een van de een­vou­dig­ste en meest voor­ko­men­de aan­vals­me­tho­den is de brute-force-aanval. Bij dit type aanval gebruiken hackers tools om her­haal­de­lijk wacht­woor­den te raden. Door krachtige wacht­woord­be­heer­prak­tij­ken te im­ple­men­te­ren, kunt u de kans dat deze methode slaagt aan­zien­lijk ver­klei­nen.

Als uw server echter diensten aanbiedt waarvoor ge­brui­kers moeten inloggen, kunt u er niet vanuit gaan dat alle ge­brui­kers sterke wacht­woor­den gebruiken. Ana­ly­se­tools kunnen dit risico helpen beperken: op­los­sin­gen zoals Fail2ban (Linux/POSIX-systemen) of RdpGuard (Windows) con­tro­le­ren ser­ver­log­be­stan­den, de­tec­te­ren ongewoon gedrag en blokkeren verdachte IP-adressen. U kunt instellen hoeveel mislukte pogingen zijn toe­ge­staan voordat er wordt ge­blok­keerd en hoe lang de blok­ke­ring duurt.

Stap 9: Gebruik mo­ni­to­ring­tools

Om de vei­lig­heid van de server te waar­bor­gen, is het van cruciaal belang dat de in­ter­ac­tie tussen hardware en software naar behoren func­ti­o­neert. Dit is geen eenmalige taak, maar een voort­du­ren­de ver­ant­woor­de­lijk­heid die constante aandacht vereist. Gezien het grote aantal ver­schil­len­de sys­teem­pro­ces­sen is het raadzaam om vanaf het begin mo­ni­to­ring­tools te gebruiken. Deze tools volgen alle ser­ver­ac­ti­vi­tei­ten en waar­schu­wen u bij af­wij­kin­gen.

Een eenvoudig, ge­mak­ke­lijk te con­fi­gu­re­ren programma voor dit doel is Monit, dat via de pak­ket­be­heer­der op veel Linux-dis­tri­bu­ties kan worden ge­ïn­stal­leerd. Deze open-sour­ce­ap­pli­ca­tie (GNU-AGPL-licentie) kan processen, bestanden, clouds, hosts, programma’s of scripts monitoren, evenals sys­teem­bron­nen zoals CPU- en ge­heu­gen­ge­bruik. Voor een uit­ge­brei­de­re mo­ni­to­ring kunt u Nagios overwegen, een open-source tool die be­schik­baar is voor Linux en Windows. Nagios kan ook worden uit­ge­breid met Nagios-plugins.

Stap 10: Back-ups instellen

De aan­be­vo­len con­fi­gu­ra­tie­stap­pen ver­be­te­ren de be­vei­li­ging van uw server aan­zien­lijk. Maar zelfs de beste con­fi­gu­ra­ties en zorg­vul­dig onderhoud kunnen geen 100% be­scher­ming ga­ran­de­ren. Een uit­ge­brei­de back-up­stra­te­gie is een cruciaal onderdeel van uw be­vei­li­gings­sys­teem, zodat u bestanden kunt her­stel­len in geval van ge­ge­vens­ver­lies.

Er zijn veel krachtige tools be­schik­baar om back-ups te maken en te her­stel­len. Een gratis optie is de open-source syn­chro­ni­sa­tie­tool rsync, die com­pa­ti­bel is met de meeste grote platforms (macOS, Windows, Linux). Deze tool houdt uw back-up in realtime up-to-date door alle wij­zi­gin­gen in de originele gegevens te spiegelen.

Zorg ervoor dat u naast een algemene ser­ver­back-up ook een back-up maakt van uw databases.

Opmerking

Voor maximale back-up­be­vei­li­ging slaat u back-ups op externe op­slag­ap­pa­ra­ten op (bij­voor­beeld draagbare harde schijven, extra servers) in plaats van op de server die wordt beveiligd.

Ga naar hoofdmenu