Wanneer je een VPS gebruikt voor je website, webshop of applicatie, wil je uiteraard niet dat iemand zomaar naar binnen kan glippen. Je draait er je data op, vertrouwelijke informatie, klantgegevens misschien zelfs. Als je VPS niet goed beveiligd is, loop je niet alleen risico op downtime, maar ook dat je server gehackt wordt, met als gevolg reputatieschade of zelfs boetes als er data op straat komt te liggen..
Deze gids is voor iedereen die zelf een VPS beheert of overweegt om over te stappen van shared hosting. Of je nu net begint of al wat ervaring hebt met Linux-servers, je leert hier stap voor stap hoe je jouw VPS een stuk veiliger maakt.
Wat zijn de risico’s van een onbeveiligde VPS?
Als je niets aan de beveiliging van je VPS doet, dan loopt je server serieuze risico's, waaronder:
- Brute-force aanvallen: Bots proberen constant om je server binnen te komen via standaardgebruikers en wachtwoorden.
- Malware of ransomware: Een onbeveiligde VPS kan besmet raken met malware, waardoor je website bijvoorbeeld niet meer werkt of deze bezoekers redirect naar andere schadelijke websites.
- Datalekken en boetes: Als je klantgegevens opslaat en deze worden buitgemaakt door hackers dan kun je in de problemen komen met de AVG. Boetes zijn geen uitzondering.
Stap 1 – SSH toegang beveiligen
De meeste mensen loggen in op hun Linux VPS via SSH. Zorg ervoor dat alleen jij dat kunt doen.
- Gebruik SSH keys in plaats van wachtwoorden: Hiermee wordt het bijna onmogelijk om zomaar in te breken.
- Verander de standaardpoort (22): Veel aanvallen richten zich op deze poort. Door een andere poort te gebruiken maak je het bots moeilijker.
Stap 2 – Sterk gebruikersbeheer
- Beperk root-toegang: Werk met een aparte gebruiker met sudo-rechten, in plaats van rechtstreeks als root in te loggen.
- Gebruik sudo: Dit zorgt ervoor dat alleen bevoegde gebruikers belangrijke taken kunnen uitvoeren.
Stap 3 – Installeer een firewall (UFW of iptables)
- Stel basisregels in: Sta alleen verkeer toe dat echt nodig is, zoals poort 80 (HTTP), 443 (HTTPS) en je SSH-poort.
- Gebruik UFW voor eenvoud: Voor veel gebruikers is UFW (Uncomplicated Firewall) makkelijk te beheren.
Let wel op: als je de firewall installeert via SSH, kun je je verbinding verliezen. Daarom is het verstandig dat je er zeker van bent dat SSH toegestaan wordt voordat je de firewall inschakelt.
Bijvoorbeeld:
sudo apt -y install ufw
sudo ufw allow openssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Stap 4 – Fail2Ban configureren
- Wat is het? Fail2Ban blokkeert IP-adressen die te vaak proberen in te loggen met verkeerde gegevens.
- Voorbeeldconfiguratie:
sudo apt install fail2ban
sudo systemctl enable fail2ban
- Je kunt filters instellen voor SSH en andere services door het bestand
/etc/fail2ban/jail.local
aan te passen.
Stap 5 – Regelmatige updates uitvoeren
- Stel automatische updates in: Zo worden bekende lekken vanzelf gedicht.
- Waarom belangrijk? Hackers maken vaak gebruik van oude kwetsbaarheden die vaak opgelost zijn als je je updates tijdig installeert.
Stap 6 – Backups instellen
- Automatiseer je backups: Gebruik tools of cronjobs om dagelijks een backup te maken.
- Test je backups regelmatig: Een niet geteste backup is geen backup. Zoek daarom ook een Hosting provider waar je bijvoorbeeld snapshots kunt maken van een VPS. Zo kun je eenvoudig een snapshot maken, backup testen en eventueel de snapshot weer terugzetten.
Stap 7 – Monitoring tools installeren
Installeer monitoring tools om meldingen te krijgen als je VPS down gaat, of als bijvoorbeeld het werkgeheugen of opslag volloopt, zo weet je tijdig dat je moet acteren. Voorbeelden zijn:
- Tools zoals Netdata of UptimeRobot: Hiermee houd je de prestaties en uptime van je VPS in de gaten.
- Stel alerts in: Ontvang een melding als je site offline is of als je server overbelast raakt.
Veelgestelde vragen (FAQ)
Hoe beveilig je een VPS server?
Door SSH te beveiligen, een firewall in te stellen, brute-force-aanvallen tegen te houden en alles up-to-date te houden.
Is een VPS veilig genoeg voor zakelijke data?
Ja, mits goed ingesteld. De standaardinstellingen zijn vaak onvoldoende.
Wat is Fail2Ban en hoe werkt het?
Het blokkeert automatisch IP’s die verdacht gedrag vertonen, zoals mislukte inlogpogingen.
Heb je antivirus nodig op een VPS?
Voor een webserver niet per se, maar bij bepaalde toepassingen kan het nuttig zijn.
Conclusie
Een VPS biedt veel vrijheid, maar vraagt ook om verantwoordelijkheid. Door deze stappen toe te passen, maak je jouw server een stuk veiliger. Heb je geen zin om alles zelf in te stellen? Of wil je dit soort beveiliging standaard bij je pakket? Dan is een Managed VPS van Netbela misschien een betere keuze voor je.
Bekijk onze VPS oplossingen vandaag nog.
Hulp nodig bij VPS-beveiliging?
Plan vrijblijvend een gesprek in met een van onze specialisten, of bekijk onze Managed VPS oplossingen.
Bonus: Beveilig je VPS automatisch met één Ansible Playbook
Ansible is een automatiseringstool waarmee je geautomatiseerd configuraties toe kunt passen op zowel Linux als Windows VPSen. Omwille van het doel van deze blog gaan we niet verder in op Ansible, dit doen we in een vervolg artikel.
Waarom automatiseren met Ansible?
- Bespaart tijd bij meerdere VPS’en
- Verlaagt kans op menselijke fouten
- Herhaalbaar & schaalbaar (perfect voor teams)
Wat doet dit playbook?
Het playbook past standaard al de adviezen uit deze blogpost grotendeels toe. Het installeert UFW en fail2ban en zorgt ervoor dat SSH zo ingesteld staat dat je enkel nog in kunt loggen op basis van SSH-keys en niet meer met een wachtwoord en als de user 'root'.
Voorbeeldcode
- name: Harden VPS security
hosts: all
become: true
tasks:
- name: Allow SSH through the firewall
ufw:
rule: allow
name: OpenSSH
- name: Allow HTTP through the firewall
ufw:
rule: allow
name: http
- name: Allow HTTPS through the firewall
ufw:
rule: allow
name: https
- name: Enable UFW firewall
ufw:
state: enabled
- name: Install Fail2Ban
apt:
name: fail2ban
state: present
update_cache: yes
- name: Deploy hardened SSH config
copy:
src: sshd_config
dest: /etc/ssh/sshd_config
owner: root
group: root
mode: '0600'
notify: restart ssh
handlers:
- name: restart ssh
service:
name: ssh
state: restarted