Module 10 · 10.4
Eindcheck: je server langs de lat
Module 10: Veilig blijven · Leestijd: 10 minuten
Leerdoel: Na deze les kun je je eigen server met een checklist en een automatische controle van buitenaf beoordelen, weet je welke punten voorrang hebben, en heb je een vast onderhoudsritme en een kort serverdossier.
Kernbegrippen: checklist, prioriteit, controle van buitenaf, serverdossier, onderhoudsritme (wekelijks, maandelijks, per kwartaal, per jaar), einddatum van de release, terugzettest
Van losse lessen naar één geheel
In deze cursus heb je een server stap voor stap ingericht: veilig inloggen, rechten, updates, firewall, diensten, een website met https, back-ups, bewaking en containers. In deze laatste les zet je alles op één lijst. Je loopt je server na, laat het cursusprogramma van buitenaf kijken, en legt vast hoe je de server de komende jaren bijhoudt.
Een server is nooit "af". Software veroudert, certificaten lopen af, schijven lopen vol, releases gaan end of life. Een vast ritme is daarom net zo belangrijk als de eerste inrichting.
De checklist, op volgorde van belang
Niet alles is even dringend. Loop de lijst van boven naar beneden: de eerste blokken voorkomen de meeste ellende.
Blok 1: niemand komt zomaar binnen (module 2, 3, 5)
- Inloggen alleen met sleutels;
PasswordAuthentication noenKbdInteractiveAuthentication no, gecontroleerd metsudo sshd -T. - Root logt niet in met een wachtwoord; je werkt als gewone gebruiker met sudo.
- Databases, caches en zoekclusters luisteren op
127.0.0.1; de poorten 3306, 5432, 6379, 9200 en 27017 zijn van buiten dicht, voor IPv4 én IPv6. - Een firewall met standaard alles dicht binnenkomend; alleen de poorten die je nodig hebt, open.
- fail2ban draait voor SSH (
fail2ban-client status sshd).
Blok 2: lekken worden gedicht (module 4)
- Automatische beveiligingsupdates aan en gecontroleerd (logboek,
apt list --upgradable). - Een plan voor herstarten;
/var/run/reboot-requiredstaat er niet wekenlang. - De release wordt nog ondersteund; de einddatum staat in je agenda.
Blok 3: je kunt terug (module 8)
- Versleutelde back-ups buiten de server, automatisch, met bewaking.
- Een terugzettest gedaan, en je weet hoe lang terugzetten duurt.
- Je weet hoe je een snapshot maakt en de console opent.
Blok 4: de buitenkant klopt (module 7)
- A- en AAAA-records wijzen naar je server; de reverse DNS (PTR) wijst terug naar dezelfde naam.
- https met een geldig certificaat dat vanzelf vernieuwd wordt; http stuurt door naar https.
- HSTS en een paar beveiligingsheaders; een
security.txtmet een werkend contactadres en een vervaldatum.
Blok 5: je ziet wat er gebeurt (module 6, 8)
- De journal is persistent; je kunt logs van vóór een herstart lezen.
- Bewaking van buitenaf (bereikbaarheid, certificaat) en van binnen (schijf, diensten), met meldingen die aankomen.
systemctl --failedis leeg.
Blok 6: containers onder controle (module 9, als je Docker gebruikt)
- Poorten van containers op
127.0.0.1of achter de reverse proxy; geendocker.sockin containers die het niet echt nodig hebben. - Volumes zitten in de back-up; images worden regelmatig bijgewerkt.
- Geheimen staan in
.env-bestanden met strenge rechten, niet in Git.
De controle van buitenaf
Een deel van deze lijst kan het cursusprogramma van buitenaf nakijken, precies zoals iedereen op internet je server ziet. De eindopdracht (Z10.4) combineert de controles uit eerdere opdrachten:
| Onderdeel | Wat het programma doet | Uit les |
|---|---|---|
| SSH | Leest de versiebanner en vraagt welke inlogmethoden je server aanbiedt voor jouw gebruikersnaam; logt niet in | 2.2 |
| Databasepoorten | Probeert alleen een verbinding naar 3306, 5432, 6379, 9200 en 27017; stuurt niets | 5.1 |
| https | Controleert het certificaat (geldig, vertrouwd, juiste naam) | 7.3 |
| Headers | Leest HSTS en de andere beveiligingsheaders | 7.4 |
| security.txt | Haalt /.well-known/security.txt op en controleert Contact en Expires | 7.4 |
| Container | Zoekt de header met jouw code, gezet door je reverse proxy | 9.4 |
Het programma voert niets uit op je server, probeert geen wachtwoorden en scant geen andere poorten. Elk adres kan maar een paar keer per uur gecontroleerd worden. Een groene uitslag zegt: van buitenaf zijn de bekendste fouten afwezig. Het zegt niets over wat er binnen je server gebeurt; dat is de rest van de checklist, en die loop je zelf na.
Het serverdossier
Schrijf voor elke server een kort document, buiten de server bewaard (bijvoorbeeld in je wachtwoordmanager of een gedeelde map):
- naam, IP-adressen, aanbieder, release en einddatum;
- wat er draait (diensten, containers, websites) en waarom;
- welke poorten open staan en waarvoor;
- waar de back-ups staan, hoe je terugzet, wanneer de laatste test was;
- welke geheimen er op de server staan (niet de geheimen zelf, wel welke en waar ze vervangen worden);
- wat je bewust anders deed dan de standaard (bijvoorbeeld een Lynis-suggestie die je oversloeg, les 10.1);
- wie er toegang heeft (welke sleutels in
authorized_keys).
Dit dossier is goud waard bij een incident (les 10.3), bij een release-upgrade (les 4.3) en als iemand anders het beheer overneemt.
Een onderhoudsritme
Zonder ritme verslapt het. Een voorbeeld voor een kleine server; pas het aan je eigen situatie aan.
| Wanneer | Wat |
|---|---|
| Elke week | Bewaking en meldingen nalopen; systemctl --failed; herstarten als /var/run/reboot-required er staat (of controleren dat de automatische herstart werkte) |
| Elke maand | apt list --upgradable (blijft er iets hangen?); docker compose pull en up -d voor je containers, met de release notes; schijfruimte; fail2ban-client status; logboek op opvallende fouten (journalctl -p err --since "1 month ago") |
| Elk kwartaal | Terugzettest van een back-up; authorized_keys en gebruikers nalopen (weg wie geen toegang meer hoort te hebben); Lynis opnieuw draaien; de eindcontrole van buitenaf opnieuw (opdracht Z10.4) |
| Elk jaar | security.txt bijwerken (Expires); einddatum van de release bekijken en een upgrade plannen; je serverdossier en noodplan bijwerken |
Zet deze momenten in je agenda. Een groot deel kun je ook automatiseren met de bewaking uit les 8.3, maar kijken blijft nodig.
In de praktijk
Of je server nu bij WebOké of bij een andere aanbieder staat: de aanbieder zorgt voor de hardware, het netwerk en de mogelijkheid om snapshots en back-ups te maken, jij voor alles binnen de server. Deze cursus is zelfhulp: niemand kijkt mee op je server. Met deze checklist, het dossier en het ritme heb je wel alles in handen om dat beheer zelfstandig en goed te doen.
Samenvatting
- Loop je server na in blokken: niemand komt zomaar binnen, lekken worden gedicht, je kunt terug, de buitenkant klopt, je ziet wat er gebeurt, containers onder controle.
- De controle van buitenaf kijkt naar SSH-inlogmethoden, databasepoorten, https, headers, security.txt en je containerheader; de rest loop je zelf na.
- Houd een serverdossier bij, buiten de server.
- Werk met een vast ritme: wekelijks, maandelijks, per kwartaal en per jaar.
Quiz
Opdracht
Opdracht Z10.4: Eindopdracht: je server van buitenaf. Laat het cursusprogramma je server in één keer van buitenaf controleren: de SSH-inlogmethoden voor jouw gebruikersnaam, de vijf databasepoorten, https en de headers van je site, je security.txt, en de header X-Weboke-Cursus met jouw code op de naam waar je container draait. Vul daarnaast de checklist van de blokken 1 tot en met 6 in voor wat het programma niet kan zien.
Opdracht O10.4: Je onderhoudsritme. Maak je eigen serverdossier en onderhoudsritme: wat doe je wekelijks, maandelijks, per kwartaal en per jaar, en zet die momenten in je agenda.
Opdracht O10.4: Je onderhoudsritme
Deze opdracht doe je zelf; niemand kijkt hem na. Vink af wat je gedaan hebt en markeer de opdracht als gedaan.
Wekelijks updates en meldingen nalopen; maandelijks een klein terugzetten en de toegang (authorized_keys, gebruikers) nalopen; per kwartaal een volledige eindcheck; per jaar een volledige opbouw uit de back-up en security.txt verlengen.
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
- HSTS en beveiligingsheaders voor je website
- Back-upstrategie: de 3-2-1-regel voor je eigen bedrijf
- securitytxt.org (uitleg en generator voor security.txt): https://securitytxt.org/
- NCSC, Een back-up strategie opstellen: https://www.ncsc.nl/back-up/een-back-up-strategie-opstellen
