Een Debian-vServer instellen en beveiligen: stap-voor-stap voor beginners (Deel 1 van 3)
Serie „Eigen server – van 0 naar veilig" · 3 delen:
- Een Debian-vServer instellen & beveiligen ← Je bent hier
- Froxlor installeren & configureren
- E-mail goed instellen: SPF, DKIM & DMARC
Dit is Deel 1. Het brengt je vers gehuurde server naar een veilige basistoestand. Op deze server installeren we in Deel 2 het beheerpaneel Froxlor en richten we in Deel 3 de e-mailverzending in.

Inhoud
- Vereisten
- Stap 1: Verbinden met de server via SSH
- Stap 2: Het systeem bijwerken
- Stap 3: Hostnaam, tijdzone en taal instellen
- Stap 4: Een gebruiker met sudo-rechten aanmaken
- Stap 5: SSH beveiligen (root-login uit, key-login)
- Stap 6: De firewall instellen (ufw)
- Stap 7: Brute-force-bescherming met Fail2ban
- Stap 8: Automatische beveiligingsupdates
- Checklist: is je server veilig?
- Veelgestelde vragen (FAQ)
- Hoe gaat het verder?
- Bronnen
Je hebt net een vServer (VPS) gehuurd en je afgevraagd: „En nu?" Precies daar beginnen we. Deze gids is geschreven voor absolute beginners. We leggen in eenvoudige woorden uit wat we doen en waarom – en je kunt elk commando gewoon kopiëren en plakken. Aan het einde heb je een actuele server die beschermd is tegen de meest voorkomende aanvallen.
We gebruiken Debian 12 (Bookworm), een van de populairste en stabielste serverbesturingssystemen. Als je Ubuntu gebruikt, werken bijna alle commando's identiek.
Belangrijk: Vervang in alle commando's de plaatshouders door je echte waarden –
SERVER-IPdoor het IP-adres van je server (staat in de bevestigingsmail van je aanbieder) engebruikersnaamdoor een naam naar keuze.
Vereisten
- Een gehuurde vServer/VPS met Debian 12. Heb je er nog geen? Aanbieders zijn bijv. IONOS, Hetzner of webtropia.
- Het IP-adres en het root-wachtwoord van je server (per e-mail van de aanbieder ontvangen).
- Een terminal op je eigen computer: op macOS en Linux is die voorgeïnstalleerd („Terminal"), op Windows gebruik je PowerShell (voorgeïnstalleerd) of PuTTY.
Meer heb je niet nodig. Aan de slag.
Stap 1: Verbinden met de server via SSH
„SSH" is een versleutelde verbinding op afstand met je server – je typt commando's op je computer, ze worden uitgevoerd op de server. Open je terminal en verbind als gebruiker root:
ssh root@SERVER-IP
De eerste keer wordt gevraagd of je de server vertrouwt – typ yes en druk op Enter. Daarna voer je het root-wachtwoord in (de invoer is onzichtbaar, dat is normaal). Ben je verbonden, dan ziet de regel er ongeveer zo uit:
root@jouw-server:~#
Gefeliciteerd – je bent erop. (Een uitgebreide inleiding tot SSH staat in de Debian-wiki.)
Stap 2: Het systeem bijwerken
Een vers geïnstalleerde server bevat vaak verouderde pakketten met bekende beveiligingslekken. De allereerste stap is daarom altijd: alles bijwerken. Met dit commando laadt de server de lijst met beschikbare updates, installeert ze, verwijdert niet meer nodige pakketten en ruimt op:
apt update && apt full-upgrade -y && apt autoremove -y && apt clean
Dat kan een paar minuten duren. Verschijnt er een melding dat een herstart nodig is, herstart dan de server:
reboot
Na de herstart ben je even verbroken. Wacht ~30 seconden en verbind opnieuw met ssh root@SERVER-IP.
Stap 3: Hostnaam, tijdzone en taal instellen
Opdat logs correcte tijdstempels hebben en de server een nette naam draagt, stellen we drie kleinigheden in.
Hostnaam (een naam voor je server, bijv. web01):
hostnamectl set-hostname web01
Tijdzone instellen (hier: Europa/Amsterdam; pas aan):
timedatectl set-timezone Europe/Amsterdam
Taalpakketten (locales) installeren en UTF-8 genereren:
apt install -y locales
sed -i 's/# nl_NL.UTF-8/nl_NL.UTF-8/' /etc/locale.gen
locale-gen
Controleer het resultaat met:
timedatectl
Daar moet „Time zone: Europe/Amsterdam" staan.
Stap 4: Een gebruiker met sudo-rechten aanmaken
Permanent als root werken is gevaarlijk – één typfout kan het hele systeem beschadigen. Beter: een gewone gebruiker die alleen indien nodig met het voorgaande woord sudo beheerdersrechten krijgt.
Maak de gebruiker aan (vervang gebruikersnaam) en geef een sterk wachtwoord wanneer daarom wordt gevraagd:
adduser gebruikersnaam
De verdere vragen (naam, telefoon …) kun je met Enter overslaan. Geef de gebruiker nu sudo-rechten:
usermod -aG sudo gebruikersnaam
Test het voordat je verdergaat. Open een tweede terminalvenster en meld je aan met de nieuwe gebruiker:
ssh gebruikersnaam@SERVER-IP
Controleer of sudo werkt:
sudo whoami
Verschijnt na het invoeren van het wachtwoord root, dan klopt alles. Laat dit tweede venster open – we hebben het in de volgende stap als vangnet nodig.
Stap 5: SSH beveiligen (root-login uit, key-login)
Nu maken we de toegang op afstand veel veiliger. Twee maatregelen: inloggen met een SSH-sleutel in plaats van een wachtwoord en geen directe root-login meer.
Let op – risico op buitensluiting: In deze stap wijzigen we de SSH-toegang. Laat het werkende venster uit Stap 4 beslist open. Zo kom je weer binnen als er iets misgaat.
Windows-tip – heb ik PuTTY en Pageant nodig? Niet per se. Windows 10/11 brengt OpenSSH al mee, de volgende commando's (
ssh-keygen,ssh) werken direct in PowerShell – net als op macOS/Linux. Gebruik je liever de PuTTY-tools (of heb je een ouder Windows), dan gaat het zo:
>
1. Sleutel genereren met PuTTYgen: „Type of key" op EdDSA → Ed25519 zetten, Generate klikken, de muis bewegen. De privé-sleutel als
.ppkopslaan; de getoonde publieke sleutel (veld „Public key for pasting…") naar het klembord kopiëren. 2. De publieke sleutel op de server in het bestand~/.ssh/authorized_keysvan je gebruiker zetten (één regel). 3. De privé-sleutel met Pageant (de PuTTY-sleutelagent) laden – zo hoef je hem niet bij elke verbinding opnieuw te kiezen. 4. Met PuTTY verbinden (host:gebruikersnaam@SERVER-IP).
>
PuTTYgen en Pageant zitten in het PuTTY-pakket: putty.org. Functioneel is beide gelijkwaardig – hieronder blijven we bij het ingebouwde OpenSSH omdat dat minder stappen kost.
5.1 Sleutel op je eigen computer genereren. Voer dit commando uit in een terminal op je pc (niet op de server) en bevestig de vragen met Enter:
ssh-keygen -t ed25519 -C "mijn-server"
5.2 De publieke sleutel naar de server kopiëren (ook vanaf je pc):
ssh-copy-id gebruikersnaam@SERVER-IP
Op Windows zonder ssh-copy-id gebruik je in plaats daarvan:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh gebruikersnaam@SERVER-IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
5.3 Testen: Meld je opnieuw aan – nu zou geen wachtwoord meer gevraagd moeten worden:
ssh gebruikersnaam@SERVER-IP
5.4 Wachtwoord-login en root-login uitschakelen. Bewerk op de server de SSH-configuratie met de editor nano:
sudo nano /etc/ssh/sshd_config
Zoek de volgende regels (of voeg ze toe) en stel ze precies zo in:
PermitRootLogin no
PasswordAuthentication no
Opslaan met Ctrl+O, Enter, sluiten met Ctrl+X. Herlaad daarna de SSH-dienst:
sudo systemctl restart ssh
Belangrijk: Sluit je huidige venster nog niet. Open een nieuw venster en test dat inloggen als gebruikersnaam nog steeds lukt – en dat ssh root@SERVER-IP nu wordt geweigerd. Pas dan is de stap geslaagd. Achtergrond in de Debian-wiki over SSH.
Stap 6: De firewall instellen (ufw)
Een firewall blokkeert alle netwerkpoorten behalve de weinige die je echt nodig hebt. We gebruiken ufw („Uncomplicated Firewall") – eenvoudig en beginnersvriendelijk.
Installeren en basisregels instellen (alles inkomend blokkeren, uitgaand toestaan):
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
De SSH-toegang vóór het activeren toestaan – anders sluit je jezelf buiten:
sudo ufw allow OpenSSH
Voor de latere webserver (Froxlor in Deel 2) openen we ook web-poorten:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Activeer nu de firewall en controleer de status:
sudo ufw enable
sudo ufw status verbose
Bevestig de vraag met y. In de statuslijst zouden alleen SSH (22), 80 en 443 als toegestaan moeten verschijnen. Details over ufw staan in de Ubuntu Server Guide.
Stap 7: Brute-force-bescherming met Fail2ban
Aanvallers proberen geautomatiseerd duizenden wachtwoorden. Fail2ban herkent te veel mislukte pogingen en blokkeert het aanvallende IP-adres tijdelijk. Installeren en activeren:
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
We maken een eigen configuratie zodat updates die niet overschrijven:
sudo nano /etc/fail2ban/jail.local
Plak de volgende inhoud (blokkeert een IP na 5 mislukte pogingen voor 1 uur):
[sshd]
enabled = true
maxretry = 5
bantime = 1h
findtime = 10m
Opslaan (Ctrl+O, Enter, Ctrl+X) en de dienst opnieuw starten:
sudo systemctl restart fail2ban
De status kun je altijd bekijken met:
sudo fail2ban-client status sshd
Stap 8: Automatische beveiligingsupdates
Beveiligingslekken worden voortdurend ontdekt. Opdat je server belangrijke patches automatisch installeert, richten we unattended-upgrades in:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Kies in de vraag „Yes". Dat is alles – vanaf nu installeert de server beveiligingsupdates zelfstandig. Meer hierover in de Debian-wiki over UnattendedUpgrades.
Checklist: is je server veilig?
Loop voor je verdergaat kort door:
- [ ] Systeem is actueel (
apt update && apt full-upgrade) - [ ] Hostnaam, tijdzone en locale ingesteld
- [ ] Eigen gebruiker met
sudo-rechten werkt - [ ] Inloggen met SSH-sleutel werkt, wachtwoord-login is uit
- [ ]
ssh root@SERVER-IPwordt geweigerd - [ ] Firewall (ufw) actief, alleen 22/80/443 open
- [ ] Fail2ban draait
- [ ] Automatische beveiligingsupdates actief
Veelgestelde vragen (FAQ)
Ik heb mezelf buitengesloten – wat nu? Bijna elke aanbieder biedt een „VNC"- of „console"-functie in het klantgedeelte, waarmee je je ook zonder SSH direct kunt aanmelden en instellingen kunt terugdraaien.
Moet ik SSH-sleutels gebruiken of volstaat een wachtwoord? Sleutels zijn veel veiliger en worden sterk aanbevolen. Wil je per se bij een wachtwoord blijven, laat PasswordAuthentication dan op yes – gebruik dan echter een heel lang wachtwoord en zeker Fail2ban.
Werkt dit ook op Ubuntu? Ja, nagenoeg identiek. Alleen bij zeer oude versies kunnen enkele pakketnamen afwijken.
Heb ik voorkennis van Linux nodig? Nee. Als je de commando's kopieert en de plaatshouders vervangt, kom je erdoor. Wat geduld bij de eerste keer helpt.
Hoe gaat het verder?
Je server staat nu veilig. In het volgende deel installeren we Froxlor, een gratis beheerpaneel waarmee je domeinen, websites, SSL-certificaten en databases gemakkelijk via een interface beheert – helemaal zonder console:
👉 Deel 2: Froxlor installeren & configureren
En in Deel 3: E-mail goed instellen: SPF, DKIM & DMARC zorgen we dat je e-mails veilig worden afgeleverd.
Trouwens: wil je liever software laten ontwikkelen of heb je individuele server-/weboplossingen nodig, dan helpt PepperTools je graag verder.
Bronnen
- Debian 12 (Bookworm) – officiële pagina
- Debian-wiki: SSH
- Debian-wiki: UnattendedUpgrades
- Ubuntu Server Guide: Firewalls (ufw)
- Fail2ban (officiîl project)
Stand: juni 2026. Commando's en pakketnamen kunnen met nieuwe versies veranderen – maatgevend is de telkens officiële documentatie.
Facturen eenvoudiger beheren
Easy Invoice combineert offertes, facturen en klantenbeheer in de cloud.
Easy Invoice proberen