Een Linux-server die direct aan internet hangt, wordt binnen enkele minuten gescand door geautomatiseerde aanvallers. Die zoeken naar zwakke wachtwoorden, verouderde software en open poorten. De goede kant: met een vaste set maatregelen houdt u het overgrote deel van die aanvallen buiten. Hieronder de 12 stappen die wij als basis gebruiken bij het inrichten van een server.
De voorbeelden gaan uit van Debian of Ubuntu. Op Rocky Linux, AlmaLinux of Red Hat Enterprise Linux werkt het vergelijkbaar, met dnf in plaats van apt en firewalld in plaats van ufw.
1. Werk het systeem bij en automatiseer beveiligingsupdates
Begin met een volledig bijgewerkt systeem en zorg dat beveiligingsupdates daarna automatisch worden geïnstalleerd.
sudo apt update && sudo apt full-upgrade
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Op systemen uit de Red Hat-familie gebruikt u hiervoor dnf-automatic.
2. Werk niet als root
Maak een eigen gebruiker aan en geef die via sudo beheerrechten. Zo is elke beheeractie te herleiden en draait niet alles standaard met de hoogste rechten.
3. Log in met SSH-sleutels, niet met wachtwoorden
Wachtwoorden zijn te raden, een SSH-sleutel niet. Zet na het plaatsen van uw sleutel inloggen met een wachtwoord en direct inloggen als root uit in /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin no
Test in een tweede sessie of u nog kunt inloggen voordat u de huidige sessie sluit.
4. Zet een firewall aan
Open alleen de poorten die echt nodig zijn, bijvoorbeeld SSH, HTTP en HTTPS. Al het andere gaat dicht.
sudo ufw default deny incoming
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable
Kan het, beperk SSH dan tot vaste IP-adressen van uw kantoor of beheerder.
5. Blokkeer brute-force-pogingen
Met fail2ban worden IP-adressen die herhaaldelijk verkeerd inloggen tijdelijk geblokkeerd. Dat houdt de logbestanden schoon en maakt raden nog lastiger.
6. Draai zo weinig mogelijk diensten
Elke dienst die luistert op het netwerk is een mogelijke ingang. Controleer welke poorten open staan en schakel uit wat u niet gebruikt:
sudo ss -tulpn
7. Geef applicaties alleen de rechten die ze nodig hebben
Laat elke applicatie onder een eigen gebruiker draaien, met alleen toegang tot de eigen bestanden. Wordt een applicatie gehackt, dan blijft de schade beperkt tot dat deel van de server.
8. Versleutel verkeer met TLS
Gebruik HTTPS voor alle websites en applicaties. Met Let's Encrypt zijn certificaten gratis en worden ze automatisch verlengd. Controleer of die verlenging ook echt werkt.
9. Maak back-ups en test het terugzetten
Een back-up op dezelfde server is geen back-up. Houd de 3-2-1-regel aan: 3 kopieën van uw gegevens, op 2 verschillende soorten opslag, waarvan 1 op een andere locatie. Test regelmatig of u een back-up ook echt kunt terugzetten.
10. Monitor de server en de logbestanden
Een server die vol loopt, een dienst die stopt of een verdacht aantal inlogpogingen wilt u weten voordat uw klanten het merken. Stel monitoring in met meldingen, bijvoorbeeld met Zabbix, Grafana of UptimePort, en verzamel logbestanden op een plek waar een aanvaller ze niet zomaar kan wissen.
11. Voer periodiek een audit uit
Een tool als Lynis controleert een server op honderden punten en geeft concrete verbeterpunten. Handig bij de oplevering en daarna als periodieke controle.
12. Leg vast wat u heeft gedaan en herhaal
Beveiliging is geen eenmalige klus. Leg de configuratie vast, zodat een collega of opvolger weet hoe de server is ingericht, en plan een vaste controle in. Software verandert, nieuwe lekken worden gevonden en wat vandaag veilig is, is dat over een jaar misschien niet meer.
Liever uitbesteden?
Wij richten servers volgens deze aanpak in en houden ze daarna veilig met Linux systeembeheer en managed services. Ook een eenmalige beveiligingsaudit van een bestaande server is mogelijk. Neem contact op voor de mogelijkheden.