Naar de inhoud
Actuele kortingscode:10% kortingGebruiken bij je bestelling

Een nieuwe VPS beveiligen: checklist stap voor stap

Wat je meteen na het aanmaken van je VPS doet: updates, een nieuw rootwachtwoord, een gebruiker met sudo, een SSH-sleutel, een firewall, fail2ban en automatische beveiligingsupdates. Elke stap uitgelegd.

  • beginner
  • ~30 min
  • Bijgewerkt op 26-10-2026

Je doorloopt een checklist die van een nieuwe VPS een veilige server maakt: updates, sterke wachtwoorden, een eigen gebruiker, een SSH-sleutel, een firewall, fail2ban en automatische beveiligingspatches. Bij elke stap leggen we uit waarom je hem zet en wat je precies instelt.

Wat je nodig hebt

  • Een nieuwe VPS bij StormHost met Ubuntu 24.04 of Debian 13
  • Een SSH-verbinding als root (handleiding)
  • Een wachtwoordmanager of een veilige plek om wachtwoorden te bewaren
  • Ongeveer 30 minuten

Waarom meteen na het aanmaken#

Elk openbaar IP-adres is vanaf het hele internet zichtbaar. Geautomatiseerde bots lopen adressen af en proberen via SSH in te loggen met veelgebruikte namen en wachtwoorden. Op een nieuwe VPS zie je de eerste pogingen vaak al binnen een paar minuten. Probeer het zelf:

bash
journalctl -u ssh --since "1 hour ago" | grep -E "Failed password|Invalid user"
  • journalctl -u ssh – toont de logregels van de SSH-service.
  • --since "1 hour ago" – alleen van het afgelopen uur.
  • grep -E "…" – laat alleen regels over met een mislukte inlogpoging of een niet-bestaande gebruiker.

Op het netwerk blokkeren we bekende internetscanners, maar dat houdt niet alle pogingen tegen. Tegen de rest beschermen een sterk wachtwoord, een SSH-sleutel en fail2ban je.

Checklist#

StapWaaromWaar
Het systeem bijwerkenVerhelpt bekende beveiligingsfouten.Deze handleiding
Het rootwachtwoord wijzigenHet oorspronkelijke wachtwoord is via e-mail of je scherm gegaan.Het rootwachtwoord wijzigen
Een gebruiker met sudo aanmakenDagelijks werk zonder de onbeperkte rechten van root.Deze handleiding
Een SSH-sleutel instellen en het wachtwoord uitschakelenEen sleutel is niet te raden.SSH-sleutel
Inloggen als root verbiedenEen aanvaller moet dan ook de gebruikersnaam kennen.Deze handleiding
De firewall inschakelenVan buitenaf is alleen bereikbaar wat jij wilt.Firewall in je klantaccount, UFW
Fail2ban installerenBlokkeert IP-adressen die wachtwoorden proberen.Fail2ban
Automatische updates inschakelenBeveiligingspatches worden vanzelf geïnstalleerd.Automatische updates
De tijdzone instellenDe tijden in de logs komen overeen met jouw tijd.Deze handleiding

Beveiliging en je klantaccount#

De tabbladen Bestanden en Databases in je klantaccount maken via SSH verbinding met de VPS, en wel met een gebruiker en wachtwoord (standaard root en het wachtwoord van het moment van aanmaken). Sommige stappen in deze handleiding hebben daar dus invloed op:

Wat je wijzigtWat er gebeurt met de tabbladen Bestanden en DatabasesWat je doet
Het rootwachtwoord (passwd)Ze kunnen niet meer inloggen.Vul bij Bestanden › Inloggegevens wijzigen het nieuwe wachtwoord in.
De SSH-poortZe kunnen geen verbinding meer maken.Vul bij Bestanden › Inloggegevens wijzigen de nieuwe poort in.
Inloggen als root verbodenZe loggen niet in als root.Vul daar een andere gebruiker en diens wachtwoord in. Je ziet de bestanden met de rechten van die gebruiker. De installatie en de automatische verbinding op het tabblad Databases vereisen dan dat die gebruiker sudo kan gebruiken zonder een wachtwoord in te voeren.
Inloggen met wachtwoord uitgeschakeldZe werken helemaal niet meer.Beheer bestanden met een SFTP-client met een sleutel, databases via een SSH-tunnel.
SSH alleen toegestaan vanaf jouw IPZe werken niet meer (ze verbinden vanaf onze servers).Hetzelfde als hierboven.

De inloggegevens op het tabblad Bestanden kan alleen de eigenaar van de dienst wijzigen. De Console en de tabbladen Netwerk, Firewall, Back-ups en Pakket wijzigen werken altijd, de instellingen van de VPS hebben er geen invloed op. Bepaal wat voor jou belangrijker is. De hoogste veiligheid krijg je door inloggen met wachtwoord uit te schakelen. Gebruik je de tabbladen Bestanden en Databases, laat het wachtwoord dan aan, maar kies een sterk wachtwoord en installeer fail2ban.

Het systeem bijwerken#

  1. Haal de lijst met beschikbare updates op:

    bash
    apt update
    • apt update – haalt uit de repository's de lijst met nieuwe pakketversies op. Het installeert zelf niets.
  2. Installeer alle updates:

    bash
    apt full-upgrade -y
    • apt full-upgrade – werkt pakketten bij en mag daarvoor afhankelijkheden toevoegen of verwijderen (bijvoorbeeld een nieuwe kernel).
    • -y – automatisch “ja” antwoorden op de bevestigingsvraag.
  3. Verschijnt er tijdens de installatie een vraag over een configuratiebestand (bijvoorbeeld /etc/ssh/sshd_config “has been locally modified”), kies dan keep the local version currently installed. Zo behoud je de huidige instellingen waarmee de VPS werkt.

  4. Controleer of een herstart nodig is:

    bash
    ls /var/run/reboot-required

    Vindt het commando het bestand, herstart dan. Op Debian zonder het pakket unattended-upgrades wordt het bestand niet altijd aangemaakt, herstart daar daarom altijd na een update van de kernel (een pakket dat begint met linux-image).

  5. Herstart de VPS:

    bash
    reboot

    De SSH-verbinding wordt verbroken. Verbind na ongeveer een minuut opnieuw.

Het rootwachtwoord wijzigen#

Het wachtwoord van het moment van aanmaken heb je in je klantaccount gezien, of in een e-mail. Stel een nieuw wachtwoord in dat alleen jij kent.

  1. Genereer een sterk wachtwoord, bijvoorbeeld met de wachtwoordgenerator (minstens 20 tekens), en sla het op in je wachtwoordmanager.

  2. Start de wachtwoordwijziging:

    bash
    passwd
    • passwd – wijzigt zonder verdere parameter het wachtwoord van de gebruiker die het commando uitvoert (dus root).
  3. Plak bij de vraag New password: het nieuwe wachtwoord en druk op Enter. Het wachtwoord wordt niet getoond.

  4. Plak het bij de vraag Retype new password: nog een keer. Je ziet passwd: password updated successfully.

  5. Sluit het huidige venster niet. Open een nieuw venster en probeer in te loggen met het nieuwe wachtwoord.

  6. Open in je klantaccount het tabblad Bestanden, klik op Inloggegevens wijzigen, vul Gebruiker root, Poort 22 en het nieuwe Wachtwoord in en klik op Controleren en opslaan.

In je klantaccount blijft het oude wachtwoord staan

Je klantaccount kent het nieuwe wachtwoord niet. Op het tabblad Console blijft de regel Wachtwoord na een klik op Tonen het wachtwoord van het moment van aanmaken tonen, en dat is niet meer geldig. Het geldige wachtwoord staat alleen in je wachtwoordmanager.

Een nieuwe gebruiker met sudo#

Als root raakt elke typfout in een commando het hele systeem. Maak voor het dagelijkse werk een eigen gebruiker aan, die alleen met het commando sudo beheerdersrechten opvraagt. Als voorbeeld gebruiken we de naam jan.

  1. Maak de gebruiker aan:

    bash
    adduser jan
    • adduser – maakt de gebruiker en zijn thuismap /home/jan aan en vraagt om een wachtwoord.

    Voer twee keer een wachtwoord in (een ander dan het rootwachtwoord). Sla de vragen over naam, telefoon en andere gegevens over met de toets Enter en bevestig aan het einde met Y.

  2. Voeg de gebruiker toe aan de groep sudo:

    bash
    usermod -aG sudo jan
    • usermod – wijzigt de eigenschappen van een gebruiker.
    • -aG sudo – voegt (-a) de gebruiker toe aan de extra groep (-G) sudo. Zonder -a zou de gebruiker uit alle andere groepen verdwijnen.
    • Leden van de groep sudo mogen commando's als root uitvoeren.
  3. Heb je bij root al een SSH-sleutel, kopieer die dan ook naar de nieuwe gebruiker:

    bash
    install -d -m 700 -o jan -g jan /home/jan/.ssh
    install -m 600 -o jan -g jan /root/.ssh/authorized_keys /home/jan/.ssh/authorized_keys
    • install -d – maakt de map .ssh aan.
    • -m 700 / -m 600 – de rechten: de map alleen voor de eigenaar, het bestand lezen en schrijven alleen voor de eigenaar. Andere rechten weigert SSH.
    • -o jan -g jan – de gebruiker jan wordt de eigenaar.
  4. Log in een nieuw venster in als de nieuwe gebruiker en probeer sudo uit:

    bash
    ssh [email protected]
    sudo whoami
    • sudo whoami – voert het commando whoami uit als root. Nadat je het wachtwoord van de gebruiker jan hebt ingevoerd, moet het root tonen.

Ontbreekt het commando adduser of sudo (minimale installatie van Debian), installeer ze dan: apt install adduser sudo.

SSH-sleutel en inloggen met wachtwoord uitschakelen#

Dit is de belangrijkste stap. Een wachtwoord is te raden, een SSH-sleutel praktisch niet. De stappen voor Windows, macOS en Linux vind je in de aparte handleiding SSH-sleutel: inloggen zonder wachtwoord, inclusief het veilig uitschakelen van inloggen met wachtwoord.

Inloggen als root verbieden#

Als root niet via SSH mag inloggen, moet een aanvaller ook de naam van je gebruiker kennen. Doe dit pas wanneer je als de nieuwe gebruiker kunt inloggen en sudo bij jou werkt.

  1. Open (of maak) een eigen configuratiebestand voor de SSH-server:

    bash
    nano /etc/ssh/sshd_config.d/00-zabezpeceni.conf
  2. Voeg deze regel toe:

    /etc/ssh/sshd_config.d/00-zabezpeceni.confini
    PermitRootLogin no
    InstellingWat het doetAanbevolen waardeWanneer wijzigen
    PermitRootLoginOf root via SSH mag inloggen. no = helemaal niet, prohibit-password = alleen met een sleutel, yes = ook met een wachtwoord.noprohibit-password, als je met een sleutel als root moet kunnen inloggen (bijvoorbeeld voor een back-upscript).

    De bestandsnaam begint met 00, zodat het bestand als eerste wordt geladen. De SSH-server gebruikt namelijk de eerste waarde die hij voor elke instelling vindt.

  3. Controleer de configuratie en de geldende waarde:

    bash
    sshd -t && sshd -T | grep -i permitrootlogin
    • sshd -t – controleert de syntaxis. Bij een fout toont het het bestand en de regel.
    • && – het volgende commando wordt alleen uitgevoerd als het vorige zonder fout is afgerond.
    • sshd -T – toont de uiteindelijke geldende configuratie. Daarin moet permitrootlogin no staan.
  4. Herstart de SSH-server:

    bash
    systemctl restart ssh

    De huidige verbinding blijft open.

  5. Controleer in een nieuw venster dat ssh [email protected] niet meer inlogt en ssh [email protected] wel.

Als root werk je daarna via sudo -i (opent een opdrachtprompt van root nadat je het wachtwoord van de gebruiker jan hebt ingevoerd).

De SSH-poort wijzigen#

SSH van poort 22 naar een andere poort verplaatsen is geen echte beveiliging, een aanvaller vindt de nieuwe poort wel. Wel zie je duidelijk minder pogingen van bots in het log.

Voordelen:

  • Minder automatische inlogpogingen en schonere logs.

Nadelen:

  • Bij elke verbinding moet je de poort opgeven (ssh -p 2222 …).
  • Sommige bedrijfsnetwerken en openbare netwerken blokkeren niet-standaardpoorten.
  • Je moet de poort aanpassen in de firewall, in fail2ban en in je klantaccount (Bestanden).

Besluit je de poort te wijzigen, kies dan een poort boven 1024 die geen andere applicatie gebruikt (vermijd bijvoorbeeld poort 2022, die sommige gamepanels voor SFTP gebruiken). In het voorbeeld gebruiken we 2222.

  1. Sta de nieuwe poort toe in de firewall voordat je SSH verplaatst: voeg op het tabblad Firewall een regel Inkomend, Toestaan, TCP, poort 2222 toe (nodig in de modus Alles blokkeren behalve wat is toegestaan, in de modus Alles toestaan kan het geen kwaad) en voer, als je UFW gebruikt, ufw allow 2222/tcp uit.

  2. Voeg aan het bestand /etc/ssh/sshd_config.d/00-zabezpeceni.conf twee regels toe. De oude poort laat je voorlopig staan, zodat de wijziging je niet buitensluit:

    /etc/ssh/sshd_config.d/00-zabezpeceni.confini
    Port 22
    Port 2222
    • Port – de poort waarop de SSH-server luistert. Er mogen meerdere regels met Port zijn, de server luistert dan op allemaal.
  3. Controleer de configuratie: sshd -t.

  4. Zoek uit hoe SSH op je VPS wordt gestart:

    bash
    systemctl is-active ssh.socket

    Het resultaat active betekent dat systemd SSH via een socket start (de standaard op Ubuntu 24.04). Het resultaat inactive betekent een gewone service (meestal Debian 13).

Pas de nieuwe poort toe op basis van het resultaat:

Socket actief

bash
systemctl daemon-reload
systemctl restart ssh.socket
  • systemctl daemon-reload – laat systemd de configuratie opnieuw inlezen. Op Ubuntu 24.04 neemt een speciale generator daarbij de poorten uit de SSH-configuratie over in de instellingen van de socket. Zonder deze stap zou SSH op poort 22 blijven.
  • systemctl restart ssh.socket – begint te luisteren op de nieuwe poorten.

Socket niet actief

bash
systemctl restart ssh
  • systemctl restart ssh – herstart de SSH-server, die de poorten uit de configuratie leest.
  1. Controleer of SSH op beide poorten luistert: ss -tlnp | grep -E ':22 |:2222 '.
  2. Verbind in een nieuw venster via de nieuwe poort: ssh -p 2222 [email protected].
  3. Werkt de verbinding via de nieuwe poort, verwijder dan de regel Port 22 uit de configuratie.
  4. Controleer de configuratie: sshd -t.
  5. Laad de wijziging met hetzelfde commando als hierboven (afhankelijk van of de socket actief is).
  6. Open in je klantaccount Bestanden › Inloggegevens wijzigen en vul poort 2222 in. De tabbladen Bestanden en Databases maken via SSH verbinding met de VPS en zouden zonder de nieuwe poort niet meer werken.
  7. Pas de poort aan in de jail sshd van fail2ban (zie Fail2ban).
  8. Verwijder in de firewall de regel voor poort 22.

Firewall en fail2ban#

  • De firewall in je klantaccount filtert het verkeer al vóór de VPS en stel je met klikken in: Firewall in je klantaccount.
  • UFW is een firewall rechtstreeks in de VPS: Firewall UFW.
  • Fail2ban houdt mislukte inlogpogingen in de gaten en blokkeert aanvallers: Fail2ban.

Eén van de firewalls is genoeg. Voor beginners raden we de firewall in je klantaccount aan, omdat je die ook kunt herstellen als je jezelf hebt buitengesloten.

Automatische beveiligingsupdates#

Het pakket unattended-upgrades installeert één keer per dag beveiligingsupdates. Op Ubuntu is het geïnstalleerd en ingeschakeld, op Debian schakel je het zelf in.

Ubuntu 24.04

  1. Controleer of automatische updates zijn ingeschakeld:

    bash
    cat /etc/apt/apt.conf.d/20auto-upgrades

    De uitvoer moet dit bevatten:

    Uitvoertext
    APT::Periodic::Update-Package-Lists "1";
    APT::Periodic::Unattended-Upgrade "1";
    • Update-Package-Lists "1" – elke dag (1 = elke 1 dag) de lijst met updates ophalen.
    • Unattended-Upgrade "1" – elke dag de toegestane updates installeren.
  2. Ontbreekt het bestand, voer dan dpkg-reconfigure -plow unattended-upgrades uit en antwoord Yes.

Debian 13

  1. Installeer de pakketten:

    bash
    apt install unattended-upgrades apt-listchanges
    • unattended-upgrades – automatische installatie van updates.
    • apt-listchanges – kan een overzicht sturen van de wijzigingen in bijgewerkte pakketten.
  2. Schakel automatische updates in:

    bash
    dpkg-reconfigure -plow unattended-upgrades
    • dpkg-reconfigure – start de configuratie van een pakket opnieuw.
    • -plow – toont ook minder belangrijke vragen.

    Antwoord Yes op de vraag of stabiele updates automatisch moeten worden gedownload en geïnstalleerd. Het bestand /etc/apt/apt.conf.d/20auto-upgrades wordt aangemaakt.

Standaard worden op Ubuntu alleen beveiligingsupdates geïnstalleerd, op Debian beveiligingsupdates en fixes uit de point releases van de stabiele versie (bijvoorbeeld 13.1, 13.2). De VPS herstart niet vanzelf. Het gedrag pas je aan in een eigen bestand dat voorrang krijgt op het standaardbestand 50unattended-upgrades (pas dat bestand zelf niet aan, een update van het pakket zou het kunnen overschrijven):

bash
nano /etc/apt/apt.conf.d/52unattended-upgrades-local
/etc/apt/apt.conf.d/52unattended-upgrades-localtext
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
InstellingWat het doetAanbevolen waardeWanneer wijzigen
Automatic-RebootHerstart de VPS als een update dat vereist (meestal een nieuwe kernel). De standaard is false.trueLaat false staan als je applicaties na een herstart niet vanzelf weer starten (ze zijn niet als service ingesteld). Herstart dan één keer per week handmatig.
Automatic-Reboot-TimeWanneer de herstart plaatsvindt, bijvoorbeeld "04:00". Zonder deze instelling gebeurt dat direct na de update."04:00"Kies een tijdstip waarop de server het minste verkeer heeft.
Remove-Unused-DependenciesVerwijdert pakketten die na een update nergens meer voor nodig zijn.truefalse, als je niet wilt dat er iets vanzelf wordt gedeïnstalleerd.

Probeer de instellingen uit met een proefrun:

bash
unattended-upgrade --dry-run --debug
  • --dry-run – alleen een simulatie, er wordt niets geïnstalleerd.
  • --debug – uitgebreide uitvoer, inclusief de geladen instellingen en de pakketten die zouden worden bijgewerkt.

De logs van echte updates vind je in de map /var/log/unattended-upgrades/.

Tijdzone en servernaam#

  1. Stel de tijdzone in, zodat de tijden in de logs kloppen (het voorbeeld gebruikt de Tsjechische tijdzone):

    bash
    timedatectl set-timezone Europe/Prague
    • timedatectl – stelt de tijd en de tijdzone van het systeem in.
    • set-timezone Europe/Prague – Midden-Europese tijd, inclusief zomertijd.
  2. Controleer het resultaat met het commando timedatectl. De regel Time zone moet Europe/Prague tonen en System clock synchronized: yes.

  3. Wijzig eventueel de naam van de server (hostname):

    bash
    hostnamectl set-hostname vps1
    • hostnamectl set-hostname vps1 – stelt de naam van de VPS in op vps1. Gebruik kleine letters, cijfers en koppeltekens.

    De nieuwe naam verschijnt in de opdrachtprompt nadat je opnieuw bent ingelogd. Begint sudo de melding unable to resolve host vps1 te tonen, vul de naam dan aan in /etc/hosts op de regel 127.0.1.1. Staat in de kop van het bestand dat het automatisch wordt gegenereerd, volg dan de aanwijzingen uit die kop.

Hoe verder#

  • Back-ups: van de hele VPS maken wij back-ups en je herstelt hem op het tabblad Back-ups. Maak van belangrijke gegevens ook een back-up buiten de VPS, zie Back-ups van je VPS.
  • Overzicht: controleer af en toe de schijfruimte (df -h), de draaiende services (systemctl --failed) en de logs van fail2ban.
  • Alleen de diensten die je nodig hebt: installeer niet wat je niet nodig hebt. Elke open poort is een extra mogelijke ingang.

Controle#

  • apt update toont na het bijwerken All packages are up to date.
  • Het nieuwe rootwachtwoord werkt en het tabblad Bestanden logt in.
  • De gebruiker jan logt in via SSH en sudo whoami toont root.
  • sshd -T | grep -E "^(permitrootlogin|passwordauthentication|port) " toont de waarden die je hebt ingesteld.
  • unattended-upgrade --dry-run --debug verloopt zonder fout.

Als iets niet werkt#

Je hebt jezelf buitengesloten van SSH#

Gebruik de console in de browser. Je logt in met het rootwachtwoord (ook als root via SSH verboden is) en herstelt de fout, bijvoorbeeld door het bestand /etc/ssh/sshd_config.d/00-zabezpeceni.conf te verwijderen en SSH te herstarten met het commando systemctl restart ssh.

sudo: jan is not in the sudoers file#

De gebruiker zit niet in de groep sudo. Voer als root usermod -aG sudo jan uit. De gebruiker moet daarna uitloggen en opnieuw inloggen voordat de groep actief wordt.

Het tabblad Bestanden meldt dat inloggen op de VPS is mislukt#

Je klantaccount gebruikt oude gegevens. Open Bestanden › Inloggegevens wijzigen en vul de huidige gebruiker, de huidige poort en het huidige wachtwoord in. Heb je inloggen met wachtwoord uitgeschakeld of SSH alleen vanaf jouw IP-adres toegestaan, dan werkt het tabblad niet (zie de tabel in het hoofdstuk Beveiliging en je klantaccount).

sshd -T toont een andere waarde dan je hebt ingesteld#

Dezelfde instelling staat in een ander bestand dat eerder wordt geladen (de SSH-server neemt de eerste waarde die hij vindt). Zoek dat bestand op:

bash
grep -rni "permitrootlogin" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/
  • grep -rni – zoekt tekst in alle bestanden van een map (-r), zonder onderscheid tussen hoofdletters en kleine letters (-i), en toont het regelnummer (-n).

Zet de regel in het andere bestand in commentaar (typ # aan het begin ervan), of wijzig de waarde daar. Voer daarna opnieuw sshd -t && sshd -T | grep -i permitrootlogin uit en herstart SSH.

SSH luistert na het wijzigen van de poort nog steeds alleen op poort 22#

Op Ubuntu 24.04 heb je waarschijnlijk systemctl daemon-reload overgeslagen. Voer dat uit en daarna systemctl restart ssh.socket.

E: Could not get lock /var/lib/dpkg/lock-frontend#

Op de achtergrond loopt op dit moment een andere installatie, meestal de automatische updates (bij een nieuwe VPS na de eerste start). Wacht een paar minuten en voer het commando opnieuw uit. Beëindig het proces niet met geweld.

Samenvatting

  • Werk het systeem bij (apt update, apt full-upgrade) en herstart na een nieuwe kernel.
  • Wijzig het rootwachtwoord met het commando passwd en vul het nieuwe wachtwoord ook in op het tabblad Bestanden.
  • Werk onder een eigen gebruiker met sudo en verbied root via SSH pas na het testen.
  • Stel een SSH-sleutel, een firewall en fail2ban in volgens de aparte handleidingen.
  • Automatische beveiligingsupdates regelt unattended-upgrades, aanpassingen horen in 52unattended-upgrades-local.
  • Het wachtwoord uitschakelen of SSH tot jouw IP beperken schakelt de tabbladen Bestanden en Databases uit, de console werkt altijd.

Was deze handleiding nuttig?

Geldt voor

  • Ubuntu 24.04
  • Debian 13

Diensten

Fout in de handleiding melden

Zoeken in de handleidingen