PepperTools Gids
Techniek & servers

Een Debian-vServer instellen en beveiligen: stap-voor-stap voor beginners (Deel 1 van 3)

Deel 1 van de serie „Eigen server – van 0 naar veilig": je hebt een vServer gehuurd – en nu? Deze beginnersgids brengt je Debian 12-server naar een veilige basis: systeem bijwerken, sudo-gebruiker, SSH met sleutel beveiligen, firewall, Fail2ban en automatische beveiligingsupdates. Elke stap om te kopiëren.

Een Debian-vServer instellen en beveiligen: stap-voor-stap voor beginners (Deel 1 van 3)

Een Debian-vServer instellen en beveiligen: stap-voor-stap voor beginners (Deel 1 van 3)

Serie „Eigen server – van 0 naar veilig" · 3 delen:

  1. Een Debian-vServer instellen & beveiligenJe bent hier
  2. Froxlor installeren & configureren
  3. 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.

Debian vServer einrichten & absichern

Inhoud


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-IP door het IP-adres van je server (staat in de bevestigingsmail van je aanbieder) en gebruikersnaam door 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 .ppk opslaan; 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_keys van 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-IP wordt 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

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

Taalversies

EN Set up and secure a Debian vServer: a beginner's step-by-step guide (Part 1 of 3) FR Configurer et sécuriser un vServer Debian : guide pas à pas pour débutants (Partie 1 sur 3) ES Configurar y asegurar un vServer Debian: guía paso a paso para principiantes (Parte 1 de 3) IT Configurare e mettere in sicurezza un vServer Debian: guida passo passo per principianti (Parte 1 di 3) DE Debian-vServer einrichten und absichern: Schritt-für-Schritt für Einsteiger (Teil 1 von 3) TR Debian vServer kurulumu ve güvenli hale getirme: yeni başlayanlar için adım adım (3'ün 1. Bölümü) PL Konfiguracja i zabezpieczenie serwera Debian vServer: krok po kroku dla początkujących (Część 1 z 3) RU Настройка и защита vServer на Debian: пошагово для новичков (Часть 1 из 3)