Geavanceerde VPS Hardening Gids 2026: Beveilig je Server als een Professional
TUTORIAL 14 min read fordnox

Geavanceerde VPS Hardening Gids 2026: Beveilig je Server als een Professional

Geavanceerde VPS-beveiligingsgids met kernel-tuning, inbraakdetectie, firewallregels, fail2ban, AppArmor en meer. Bescherm je server tegen echte bedreigingen.


Geavanceerde VPS Hardening Gids: Beveilig je Server als een Professional

Een standaard VPS-installatie laat je kwetsbaar achter. Standaardconfiguraties, open poorten en zwakke authenticatie zijn een open uitnodiging. Deze gids gaat verder dan de basis — kernel hardening, inbraakdetectie, automatische blokkering en audit-logging die daadwerkelijk bedreigingen opspoort.

Heb je al SSH-sleutels en een firewall? Mooi. Dit gaat verder waar beginnersgidsen ophouden.

Wat deze gids behandelt

LaagToolsDoel
NetwerkUFW, iptables, fail2banOngeautoriseerde toegang blokkeren
AuthenticatieSSH hardening, 2FABrute force voorkomen
Kernelsysctl tuningAanvalsoppervlak verkleinen
Verplichte toegangscontroleAppArmor / SELinuxGecompromitteerde services beperken
InbraakdetectieAIDE, auditdOngeautoriseerde wijzigingen detecteren
Loggingrsyslog, logwatchAlles monitoren
Automatische updatesunattended-upgradesKwetsbaarheden patchen

Vereisten

Aanbevolen VPS-providers voor beveiligingsbewuste gebruikers:

ProviderWaaromStartprijs
HetznerEU-datacenters, AVG-conform, ruwe prestaties€3,79/mnd
HostingerBetaalbare KVM met snapshot-back-ups$4,99/mnd
VultrBare metal opties, DDoS-bescherming inbegrepen$6/mnd
DigitalOceanVPC-netwerken, beheerde firewalls$6/mnd

1. SSH Hardening (Verder dan de basis)

Je hebt al sleutelgebaseerde authenticatie. Nu gaan we het verder vergrendelen.

Beperk SSH tot alleen sleutels, schakel root uit

sudo nano /etc/ssh/sshd_config

Stel deze waarden in:

# Authenticatie
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey

# Beperk blootstelling
MaxAuthTries 3
MaxSessions 3
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 2

# Schakel onnodige functies uit
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no

# Gebruik alleen sterke algoritmen
KexAlgorithms skedf25519-sha256,skedf25519-sha256@libssh.org,diffie-hellman-group16-sha512
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

Verander de standaard SSH-poort

SSH verplaatsen van poort 22 stopt de meeste geautomatiseerde scans:

# Voeg nieuwe poort toe (verwijder 22 nog niet!)
Port 2222
Port 22

Herstart en test met de nieuwe poort voordat je 22 verwijdert:

sudo systemctl restart sshd
ssh -p 2222 user@your-server

Zodra bevestigd, verwijder Port 22 en herstart opnieuw.

Voeg tweefactorauthenticatie toe

sudo apt install libpam-google-authenticator
google-authenticator

Bewerk de PAM-configuratie:

sudo nano /etc/pam.d/sshd

Voeg bovenaan toe:

auth required pam_google_authenticator.so

Pas sshd_config aan:

AuthenticationMethods publickey,keyboard-interactive
ChallengeResponseAuthentication yes

Nu vereist inloggen zowel je SSH-sleutel als een TOTP-code.

2. Firewallconfiguratie met UFW + snelheidsbeperking

Basis UFW-installatie

sudo ufw default deny incoming
sudo ufw default allow outgoing

# Sta SSH toe (gebruik je aangepaste poort)
sudo ufw limit 2222/tcp comment 'SSH rate-limited'

# Sta webverkeer toe
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# Activeer
sudo ufw enable

De limit-regel beperkt automatisch verbindingen — 6 verbindingen per 30 seconden, daarna wordt geblokkeerd.

Geavanceerd: iptables-regels voor DDoS-mitigatie

Voor servers met veel verkeer, voeg deze iptables-regels toe:

# Ongeldige pakketten verwerpen
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# Poortscannen blokkeren
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# Nieuwe verbindingen beperken (SYN flood-bescherming)
sudo iptables -A INPUT -p tcp --syn -m limit --limit 25/second --limit-burst 50 -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP

# ICMP beperken (ping flood-bescherming)
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Sla regels op zodat ze herstarts overleven:

sudo apt install iptables-persistent
sudo netfilter-persistent save

3. Fail2Ban: Intelligente brute force-bescherming

Installeren en configureren

sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Bewerk /etc/fail2ban/jail.local:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
banaction = ufw
backend = systemd

# E-mailnotificaties (optioneel)
destemail = you@example.com
action = %(action_mwl)s

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 86400

[sshd-ddos]
enabled = true
port = 2222

# Bescherm nginx
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3

[nginx-botsearch]
enabled = true
filter = nginx-botsearch
logpath = /var/log/nginx/access.log
maxretry = 2

# Bescherm tegen herhaalde 404's (scanners)
[nginx-404]
enabled = true
port = http,https
filter = nginx-404
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 60
bantime = 3600

Maak het nginx-404 filter aan:

sudo nano /etc/fail2ban/filter.d/nginx-404.conf
[Definition]
failregex = ^<HOST> .* "(GET|POST|HEAD).*" 404
ignoreregex =

Start fail2ban:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client status

4. Kernel hardening met sysctl

Deze instellingen verkleinen het aanvalsoppervlak van je kernel:

sudo nano /etc/sysctl.d/99-hardening.conf
# Schakel IP-forwarding uit (tenzij je Docker/VPN draait)
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0

# Voorkom IP-spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Negeer ICMP-omleidingen
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# Stuur geen ICMP-omleidingen
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Negeer source-routed pakketten
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0

# Activeer SYN cookies (SYN flood-bescherming)
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2

# Log verdachte pakketten
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# Schakel IPv6 uit indien niet nodig
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

# Kernel verharden
kernel.randomize_va_space = 2
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
kernel.perf_event_paranoid = 3
kernel.yama.ptrace_scope = 2

# Beperk onbevoegde user namespaces
kernel.unprivileged_userns_clone = 0

# Bestandssysteem hardening
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
fs.suid_dumpable = 0

Direct toepassen:

sudo sysctl --system

Docker-gebruikers: Houd net.ipv4.ip_forward = 1 als je containers draait. Docker heeft dit nodig voor netwerken.

5. AppArmor: Verplichte toegangscontrole

AppArmor beperkt programma’s tot een gelimiteerde set resources — zelfs als een aanvaller een kwetsbaarheid misbruikt, kan hij niet buiten het profiel ontsnappen.

Activeren en status controleren

sudo apt install apparmor apparmor-utils apparmor-profiles apparmor-profiles-extra
sudo aa-status

Profielen afdwingen voor belangrijke services

# Beschikbare profielen weergeven
sudo aa-unconfined

# Zet nginx in afdwingmodus
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx

# Maak een profiel aan voor een aangepaste applicatie
sudo aa-genprof /usr/local/bin/myapp

Aangepaste profielen maken

Voor applicaties zonder bestaand profiel:

# Start in klachtmodus (logt overtredingen maar blokkeert niet)
sudo aa-complain /path/to/application

# Draai de app normaal, gebruik alle functies
# Bekijk daarna de logs en zet om naar afdwingmodus
sudo aa-logprof
sudo aa-enforce /path/to/application

6. Inbraakdetectie met AIDE

AIDE (Advanced Intrusion Detection Environment) bewaakt bestandsintegriteit — het waarschuwt je wanneer systeembestanden onverwacht veranderen.

Installeren en initialiseren

sudo apt install aide
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Configureren wat gemonitord wordt

sudo nano /etc/aide/aide.conf

Voeg aangepaste regels toe:

# Monitor kritieke systeemmappen
/etc p+i+u+g+sha256
/bin p+i+u+g+sha256
/sbin p+i+u+g+sha256
/usr/bin p+i+u+g+sha256
/usr/sbin p+i+u+g+sha256

# Monitor webroot
/var/www p+i+u+g+sha256

# Sluit drukke mappen uit
!/var/log
!/var/cache
!/tmp

Automatiseer dagelijkse controles

sudo crontab -e

Voeg toe:

0 5 * * * /usr/bin/aide --check | mail -s "AIDE Report $(hostname)" you@example.com

7. Audit-logging met auditd

Houd bij wie wat doet op je systeem:

sudo apt install auditd audispd-plugins

Auditregels toevoegen

sudo nano /etc/audit/rules.d/hardening.rules
# Monitor authenticatie
-w /etc/pam.d/ -p wa -k auth_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/passwd -p wa -k passwd_changes

# Monitor SSH-configuratie
-w /etc/ssh/sshd_config -p wa -k sshd_config

# Monitor sudo-gebruik
-w /var/log/auth.log -p wa -k auth_log
-w /etc/sudoers -p wa -k sudoers

# Monitor cron
-w /etc/crontab -p wa -k cron_changes
-w /etc/cron.d/ -p wa -k cron_changes
-w /var/spool/cron/ -p wa -k cron_changes

# Monitor netwerkconfiguratie
-w /etc/hosts -p wa -k hosts_changes
-w /etc/network/ -p wa -k network_changes

# Monitor kernelmodules
-w /sbin/insmod -p x -k kernel_modules
-w /sbin/modprobe -p x -k kernel_modules
-w /sbin/rmmod -p x -k kernel_modules

# Log alle commando's uitgevoerd door root
-a always,exit -F arch=b64 -F euid=0 -S execve -k root_commands

# Maak regels onwijzigbaar (herstart vereist om te wijzigen)
-e 2

Herstart auditd:

sudo systemctl restart auditd

Doorzoek auditlogs:

# Vind alle sudo-events
sudo ausearch -k sudoers

# Vind SSH-configuratiewijzigingen
sudo ausearch -k sshd_config

8. Automatische beveiligingsupdates

Mis nooit een kritieke patch:

sudo apt install unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades

Configureer wat automatisch wordt bijgewerkt:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-apps-security";
};

Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

// E-mailnotificaties
Unattended-Upgrade::Mail "you@example.com";
Unattended-Upgrade::MailReport "on-change";

9. Beveilig gedeeld geheugen en /tmp

Voorkom shared memory-aanvallen:

sudo nano /etc/fstab

Voeg toe:

tmpfs /run/shm tmpfs defaults,noexec,nosuid,nodev 0 0
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev,size=2G 0 0

Opnieuw mounten:

sudo mount -o remount /run/shm
sudo mount -o remount /tmp

Let op: noexec op /tmp kan sommige installers breken. Mount tijdelijk opnieuw met exec wanneer nodig: sudo mount -o remount,exec /tmp

10. Logmonitoring met Logwatch

Ontvang dagelijkse beveiligingssamenvattingen:

sudo apt install logwatch

Configureer:

sudo nano /etc/logwatch/conf/logwatch.conf
Output = mail
MailTo = you@example.com
Detail = High
Range = yesterday
Service = All

Test het:

sudo logwatch --detail High --mailto you@example.com --range today

Beveiligingschecklist

Loop dit na na het hardenen:

ControleCommandoVerwacht
SSH root uitgeschakeldgrep PermitRootLogin /etc/ssh/sshd_configno
Wachtwoordauth uitgrep PasswordAuthentication /etc/ssh/sshd_configno
Firewall actiefsudo ufw statusactive
Fail2ban draaitsudo fail2ban-client statusActieve jails weergegeven
AppArmor geladensudo aa-statusProfielen in afdwingmodus
AIDE geïnitialiseerdsudo aide --checkGeen onverwachte wijzigingen
Auto-updates aanapt-config dump | grep Unattended"1"
Open poorten minimaalsudo ss -tlnpAlleen verwachte poorten
Kernel gehardsysctl kernel.randomize_va_space2

Doorlopend onderhoud

Hardening is geen eenmalige actie. Plan het volgende in:

Beste VPS-providers voor beveiliging

ProviderBeveiligingsfunctiesBeste voor
HostingerKVM-isolatie, DDoS-bescherming, back-upsBeste prijs-kwaliteit — sterke beveiliging tegen lage kosten
HetznerEU-privacywetgeving, dedicated firewall, snapshotsPrivacygerichte implementaties
VultrDDoS-bescherming, firewall-API, bare metalWerklasten met hoge beveiligingseisen
DigitalOceanVPC, beheerde firewalls, monitoringTeamomgevingen
LinodeGratis DDoS-mitigatie, Longview-monitoringMonitoring-intensieve opstellingen

Hostinger biedt de beste balans tussen beveiligingsfuncties en prijs — KVM-virtualisatie zorgt voor volledige isolatie van andere huurders, en hun geautomatiseerd back-upsysteem geeft je herstelopties als er iets misgaat.

Conclusie

Een geharde VPS draait niet alleen om het draaien van een firewall. Het gaat om lagen: netwerkfiltering, authenticatiecontroles, kernelrestricties, verplichte toegangscontrole, bestandsintegriteitsmonitoring en geautomatiseerde patching. Elke laag vangt op wat de andere missen.

Begin met SSH hardening en fail2ban (directe impact), voeg daarna kernel-tuning en AppArmor toe (diepere bescherming), en sluit af met AIDE en auditd (detectie en forensisch onderzoek).

Geen enkele server is onhackbaar. Maar een goed geharde VPS zorgt ervoor dat aanvallers doorschuiven naar makkelijkere doelwitten — en dat is het doel.

~/vps-hardening-advanced/get-started

Ready to get started?

Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.

Get Hostinger VPS — $4.99/mo

// up to 75% off + free domain included

// related topics

vps hardening vps beveiliging server hardening gids linux server beveiliging vps firewall instellen fail2ban instellen apparmor vps vps inbraakdetectie

// related guides

Andrius Putna

Andrius Putna

I am Andrius Putna. Geek. Since early 2000 in love tinkering with web technologies. Now AI. Bridging business and technology to drive meaningful impact. Combining expertise in customer experience, technology, and business strategy to deliver valuable insights. Father, open-source contributor, investor, 2xIronman, MBA graduate.

// last updated: March 14, 2026. Disclosure: This article may contain affiliate links.