Hardening en CIS-principes
Module 10: Veilig blijven · Leestijd: 11 minuten
Leerdoel: Na deze les kun je uitleggen wat hardening is en welke principes erachter zitten, weet je wat de CIS Benchmarks zijn en hoe je ze verstandig gebruikt, en kun je je server systematisch nalopen met Lynis.
Kernbegrippen: hardening, aanvalsoppervlak, minimale installatie, minimale rechten (least privilege), gelaagde verdediging (defense in depth), CIS Benchmarks, Level 1 en Level 2, CIS Controls, Lynis, hardening index, AppArmor, SELinux, sysctl, tijdsynchronisatie
Wat is hardening?
Een verse installatie van Debian of Ubuntu is redelijk veilig, maar gemaakt om op zoveel mogelijk plekken te werken. Hardening (verharden) is het aanpassen van je server aan precies jouw gebruik: alles weg wat je niet nodig hebt, alles strenger wat streng kan, zonder dat je eigen diensten stukgaan.
In de vorige modules heb je dat al stukje voor stukje gedaan: SSH met sleutels (module 2), een gewone gebruiker met sudo (module 3), automatische updates (module 4), een firewall en fail2ban (module 5), diensten onder eigen gebruikers (module 6). Deze les zet die losse maatregelen in een kader, zodat je ziet wat er nog ontbreekt.
Vier principes
1. Een klein aanvalsoppervlak. Wat er niet is, kan niet kapot. Elke geïnstalleerde dienst, elke open poort, elk account is een mogelijke ingang (les 5.1). Installeer minimaal, en ruim op wat je niet meer gebruikt:
anna@web1:~$ systemctl list-units --type=service --state=running
anna@web1:~$ sudo ss -tulpn
anna@web1:~$ apt list --installed | wc -lDraait er een dienst die je niet kent, zoek dan uit wat hij doet (les 6.1). Heb je hem niet nodig, verwijder het pakket.
2. Minimale rechten. Elke gebruiker en elk programma krijgt alleen de rechten die nodig zijn (les 3.2). Geen dagelijks werk als root, diensten onder eigen gebruikers, databasegebruikers alleen met rechten op hun eigen database, geen chmod 777.
3. Gelaagde verdediging. Ga ervan uit dat één maatregel faalt. Een database die alleen op 127.0.0.1 luistert en achter een firewall staat en een sterk wachtwoord heeft, is ook veilig als één van die drie per ongeluk uitvalt. Dit heet defense in depth.
4. Weten wat er gebeurt. Hardening is niet alleen dichtzetten, maar ook zien: logs die bewaard worden (les 6.2), bewaking die meldt (les 8.3), en back-ups waarmee je terug kunt (module 8). Zonder dat merk je een inbraak pas als het te laat is.
De CIS Benchmarks
Het Center for Internet Security (CIS) is een Amerikaanse non-profitorganisatie die de CIS Benchmarks maakt: uitgebreide lijsten met aanbevolen instellingen per product, opgesteld door vrijwilligers uit de beveiligingswereld. Er zijn er meer dan honderd, ook voor Debian Linux en Ubuntu Linux, per versie. Je kunt de pdf's gratis downloaden voor niet-commercieel gebruik, na het aanmaken van een account.
Een benchmark voor Linux bevat honderden aanbevelingen, elk met een uitleg, een manier om te controleren en een manier om het in te stellen. Ze zijn verdeeld in profielen:
- Level 1: basismaatregelen die je vrij snel kunt invoeren, met een duidelijk beveiligingsvoordeel, zonder dat de server veel minder bruikbaar wordt. Voor de meeste servers het doel.
- Level 2: extra maatregelen voor omgevingen waar beveiliging voorop staat (gelaagde verdediging). Ze kunnen functies of snelheid kosten, en volgens CIS zelf schade doen als je ze zonder zorg toepast.
Bij Linux zijn er aparte profielen voor servers en werkstations.
Voorbeelden van onderwerpen in een Linux-benchmark: aparte partities voor /tmp en /var/log, ongebruikte bestandssystemen en netwerkprotocollen uitzetten, tijdsynchronisatie, auditlogging, instellingen van SSH (veel daarvan ken je uit les 2.2), wachtwoordbeleid, rechten op belangrijke bestanden, en de firewall.
Naast de Benchmarks zijn er de CIS Controls (nu versie 8.1): geen instellingen per product, maar een lijst van achttien groepen maatregelen voor een hele organisatie, zoals "inventaris van software", "beheer van kwetsbaarheden" en "herstel van gegevens". Voor één server zijn de Benchmarks nuttiger; de Controls helpen als je over je hele bedrijf nadenkt.
Gebruik een benchmark verstandig
Een benchmark is geen knop die je indrukt. Een paar regels:
- Begrijp eerst, pas dan toe. Elke aanbeveling heeft een uitleg. Snap je niet waarom, pas haar dan nog niet toe.
- Eén ding tegelijk, en testen. Een strenge instelling voor de kernel of het netwerk kan je applicatie breken. Maak een snapshot, verander één ding, controleer dat alles nog werkt.
- Niet alles is voor jou. Een aanbeveling voor een aparte
/var/log-partitie is op een bestaande VPS lastig en levert weinig op. Kies bewust, en noteer waarom je iets niet doet. - Pas op met kant-en-klare hardeningscripts van internet die "alles van CIS" in één keer toepassen. Ze kunnen SSH, je firewall of je logs zo veranderen dat je jezelf buitensluit, en je weet daarna niet meer wat er veranderd is.
Lynis: een audit van binnenuit
Lynis is een gratis open-source programma (GPL) van CISOfy dat je server van binnenuit doorloopt en per onderwerp waarschuwingen en suggesties geeft. Het verandert zelf niets; het rapporteert alleen.
anna@web1:~$ sudo apt install lynis
anna@web1:~$ sudo lynis audit system
...
-[ Lynis 3.x Results ]-
Warnings (1):
----------------------------
! Found one or more vulnerable packages. [PKGS-7392]
Suggestions (34):
----------------------------
* Consider hardening SSH configuration [SSH-7408]
- Details : AllowTcpForwarding (set YES to NO)
...
Lynis security scan details:
Hardening index : 66 [############# ]
Tests performed : 262Hoe je het leest:
- Warnings zijn dingen die je echt moet bekijken, zoals pakketten met bekende lekken (dan heb je updates openstaan, les 4.1).
- Suggestions zijn adviezen. Veel zijn nuttig, sommige passen niet bij jouw server. Een suggestie om
AllowTcpForwardinguit te zetten breekt bijvoorbeeld je SSH-tunnels (les 2.3). Kies bewust. - Elke melding heeft een code tussen haken, zoals
[SSH-7408]. Daarmee zoek je in het logboek/var/log/lynis.logwat er precies getest is. - De hardening index is een getal tot 100. Het is een richtingwijzer, geen cijfer om na te jagen. Een stijging na je aanpassingen laat zien dat je vooruitgaat; een 100 is geen doel.
De Lynis-versie in de pakketbron van je distributie kan wat achterlopen. Dat is voor een eerste audit geen probleem.
Nog drie onderwerpen in het kort
- AppArmor en SELinux zijn extra beveiligingslagen in de kernel die per programma vastleggen wat het mag. Debian en Ubuntu gebruiken AppArmor, standaard aan; AlmaLinux en Rocky SELinux. Zet ze niet uit "omdat iets niet werkt": zoek de melding in de journal en los het gericht op.
- sysctl zet instellingen van de kernel, bijvoorbeeld voor het netwerk. De standaardwaarden van Debian en Ubuntu zijn redelijk. Wil je iets veranderen, zet het in een eigen bestand in
/etc/sysctl.d/(Debian 13 leest/etc/sysctl.confniet meer). - Tijd: een server met de verkeerde tijd maakt logs onbruikbaar en kan certificaten als ongeldig zien. Controleer met
timedatectldat "System clock synchronized: yes" staat.
In de praktijk
Bij WebOké, net als bij andere aanbieders van een VPS, beheer je de beveiliging binnen je server zelf: de aanbieder zorgt voor de hardware, het netwerk en het virtualisatieplatform. Deze cursus is zelfhulp: niemand kijkt mee op je server. Maak vóór een hardeningsronde een snapshot in het paneel, en weet hoe je de console opent als je jezelf toch buitensluit.
Samenvatting
- Hardening is je server aanpassen aan je eigen gebruik: weg wat niet nodig is, strenger wat kan.
- Vier principes: klein aanvalsoppervlak, minimale rechten, gelaagde verdediging, en zien wat er gebeurt.
- De CIS Benchmarks geven per product honderden aanbevelingen in profielen Level 1 (basis) en Level 2 (streng); gebruik ze met begrip, één stap tegelijk.
- Lynis loopt je server van binnenuit na en geeft waarschuwingen, suggesties en een hardening index; het verandert zelf niets.
- AppArmor/SELinux niet uitzetten; eigen kernelinstellingen in
/etc/sysctl.d/; tijdsynchronisatie controleren.
Quiz
Opdracht
Opdracht O10.1: Een audit met Lynis. Maak een snapshot, installeer Lynis op je server en draai sudo lynis audit system. Noteer de hardening index, alle waarschuwingen en vijf suggesties. Kies drie suggesties die je uitvoert en één die je bewust niet uitvoert, met de reden. Draai de audit daarna opnieuw en noteer de nieuwe index.
Opdracht O10.1: Een audit met Lynis
Deze opdracht doe je zelf; niemand kijkt hem na. Vink af wat je gedaan hebt en markeer de opdracht als gedaan.
Eerst de waarschuwingen (meestal openstaande updates). Zinvol: strengere SSH-instellingen, automatische updates, ongebruikte diensten weg. Een goede reden om iets over te slaan: AllowTcpForwarding als je tunnels gebruikt. De index is een richtingwijzer, geen doel.
Je vinkjes en aantekeningen blijven alleen in deze browser; we sturen ze nergens heen. Ben je aangemeld, dan bewaren we in Mijn cursussen alleen dat je de opdracht gedaan hebt.
Verder lezen
- Je VPS beveiligen: de eerste vijf minuten
- CIS Benchmarks (overzicht, ook Debian en Ubuntu): https://www.cisecurity.org/cis-benchmarks
- CIS Controls: https://www.cisecurity.org/controls
- Lynis, documentatie: https://cisofy.com/documentation/lynis/
- NCSC, Beginnen met cybersecurity: https://www.ncsc.nl/beginnen-met-cybersecurity
