Hoe de SSH-toegang van een LWS VPS beveiligen: uitsluitend sleutels en fail2ban

Procédure

Om de SSH-toegang van je LWS VPS te beveiligen, wordt aanbevolen om wachtwoordauthenticatie volledig uit te schakelen ten voordele van een SSH-sleutel, en vervolgens fail2ban te installeren. Deze configuratie beschermt je server tegen brute-force-aanvallen en elimineert de risico's van onderschepte of geraden wachtwoorden. In deze handleiding kopieer je je openbare SSH-sleutel, pas je de SSH-configuratie aan om de standaardinstellingen van cloud-init uit te schakelen, en installeer en controleer je daarna de actieve bescherming van fail2ban.

Je SSH-sleutel installeren

  1. Maak eerst één keer verbinding via SSH en verbreek daarna de verbinding

    Open een terminal op je computer en maak verbinding met de server met behulp van het root-wachtwoord dat je in je leveringsmail hebt ontvangen. Accepteer bij de eerste verbinding de vingerafdruk van de serversleutel door yes te typen. Zodra je verbonden bent, verlaat je de sessie onmiddellijk door exit uit te voeren om terug te keren naar je lokale machine.

    ⌨ Op uw computer
    ssh root@203.0.113.10
    exit
  2. Kopieer je openbare SSH-sleutel naar de VPS

    Gebruik vanaf je computer het commando ssh-copy-id om je openbare sleutel naar de server te kopiëren. Voer je root-wachtwoord voor de laatste keer in wanneer de terminal je daarom vraagt. Als je je SSH-sleutel al had toegevoegd tijdens het bestellen of bij herinstallatie via het KVM-paneel, is deze stap niet nodig.

    ⌨ Op uw computer
    ssh-copy-id root@203.0.113.10
    Verwacht resultaat
    Number of key(s) added: 1
    
    Now try logging into the machine, with: "ssh 'root@203.0.113.10'"
    and check to make sure that only the key(s) you wanted were added.
  3. Controleer de verbinding via SSH-sleutel

    Maak opnieuw verbinding met je VPS via SSH vanaf je computer. De verbinding moet onmiddellijk tot stand komen zonder om het root-wachtwoord van de server te vragen, wat bevestigt dat je openbare sleutel correct is geïnstalleerd.

    ⌨ Op uw computer
    ssh root@203.0.113.10

Wachtwoordverbinding uitschakelen

  1. Ontdek de valkuil van het cloud-init-bestand

    Geef de bestanden in de map /etc/ssh/sshd_config.d/ weer en toon de inhoud van 50-cloud-init.conf. Dit bestand activeert wachtwoordauthenticatie. Omdat de SSH-server de eerste gevonden instructie behoudt bij het lezen van bestanden in alfabetische volgorde, moet je eigen configuratie verplicht vóór dit bestand worden gelezen.

    ⌨ Op de server
    ls /etc/ssh/sshd_config.d/
    cat /etc/ssh/sshd_config.d/50-cloud-init.conf
    Verwacht resultaat
    PasswordAuthentication yes
  2. Maak het prioritaire SSH-configuratiebestand aan

    Open de nano-editor om het bestand 00-cles-uniquement.conf aan te maken. Het voorvoegsel 00 garandeert dat dit bestand vóór 50-cloud-init.conf wordt verwerkt. Voeg er de instructies in toe die wachtwoorden uitschakelen en roottoegang beperken tot sleutels, en sla vervolgens op met Ctrl+X, bevestig met O (of Y, afhankelijk van de taal) en druk op Enter.

    ⌨ Op de server
    nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    📄 /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    # SSH-verbinding uitsluitend met sleutel
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin prohibit-password
  3. Test de syntaxis en pas de configuratie toe

    Voer sshd -t uit om te controleren of er geen syntaxisfouten zijn, en controleer vervolgens de actieve waarden met sshd -T. Merk op dat permitrootlogin without-password weergeeft, wat overeenkomt met prohibit-password. Als alles correct is, herlaad je de SSH-service om de nieuwe instellingen toe te passen zonder je sessie te onderbreken.

    ⌨ Op de server
    sshd -t
    sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
    systemctl reload ssh
    Verwacht resultaat
    permitrootlogin without-password
    passwordauthentication no
    kbdinteractiveauthentication no

SSH-toegang testen

  1. Valideer de weigering van wachtwoorden en toegang via sleutel

    Zonder je actieve sessie te sluiten, open je een tweede terminalvenster op je computer. Probeer eerst een verbinding door sleutels te weigeren met de optie PubkeyAuthentication=no: de server moet de toegang weigeren. Start daarna een normale verbinding: de authenticatie via sleutel verloopt succesvol.

    ⌨ Op uw computer
    ssh -o PubkeyAuthentication=no root@203.0.113.10
    ssh root@203.0.113.10
    Verwacht resultaat
    root@203.0.113.10: Permission denied (publickey).

fail2ban installeren en controleren

  1. Installeer fail2ban

    Werk vanuit je sessie die verbonden is met de VPS de lijst van Debian-repositories bij met apt update, en installeer vervolgens het fail2ban-pakket. Op recente versies van Debian activeert fail2ban automatisch de bescherming van de SSH-service zodra de installatie is voltooid.

    ⌨ Op de server
    apt update
    apt install -y fail2ban
  2. Controleer de status van fail2ban en sluit de sessie

    Zorg ervoor dat de fail2ban-service actief is met systemctl, en vraag vervolgens de sshd-jail op om te bevestigen dat de filtering werkt en de verbindingen bewaakt. Daarna kun je met een gerust hart de verbinding verbreken.

    ⌨ Op de server
    systemctl is-active fail2ban
    fail2ban-client status sshd
    exit
    Verwacht resultaat
    active
    Status for the jail: sshd
    |- Filter
    |  |- Currently failed: 1
    |  |- Total failed:     3
    |  `- Journal matches:  _SYSTEMD_UNIT=ssh.service + _COMM=sshd
    `- Actions
       |- Currently banned: 0
       |- Total banned:     0
       `- Banned IP list:

Woordenlijst

SSH (Secure Shell)
Beveiligd communicatieprotocol waarmee je verbinding kunt maken met en beheer kunt uitvoeren op een externe server via de opdrachtregel.
Openbare sleutel
Sleutelbestand dat op de externe server wordt geplaatst om de identiteit van de gebruiker te verifiëren zonder een wachtwoord te verzenden.
Privésleutel
Strikt vertrouwelijk sleutelbestand dat op je lokale computer wordt bewaard en dient om je identiteit aan de server te bewijzen.
Cloud-init
Automatiseringstool die wordt gebruikt tijdens de eerste uitrol van virtuele machines om hun netwerk en toegang te initialiseren.
fail2ban
Beveiligingssoftware die systeemlogboeken bewaakt en verdachte IP-adressen tijdelijk op firewallniveau blokkeert.
Jail (gevangenis)
In fail2ban, een combinatie van een filter om misbruikpogingen te detecteren en een verbanningsregel voor een bepaalde service.

Veelgestelde vragen

Waarom het bestand 00-cles-uniquement.conf noemen in plaats van sshd_config aan te passen?

De OpenSSH-daemon leest de bestanden in de map sshd_config.d in alfabetische volgorde en past de eerste waarde toe die hij tegenkomt. Door het voorvoegsel 00 te gebruiken, worden je instructies vóór die van 50-cloud-init.conf verwerkt, wat garandeert dat de weigering van wachtwoorden in rekening wordt gebracht.

Wat moet ik doen als ik buiten mijn VPS word buitengesloten?

Als je je SSH-toegang verliest, log dan in op je LWS-klantenruimte en open de beschikbare KVM / VNC-console voor je VPS. Deze console simuleert een fysiek scherm en toetsenbord dat op de server is aangesloten en laat je toe om je configuratiebestanden te corrigeren zonder SSH te gebruiken.

Wat is het verschil tussen prohibit-password en without-password?

Het gaat exact om dezelfde parameter in OpenSSH. prohibit-password is de aanbevolen moderne syntaxis, maar het commando sshd -T toont zijn historische equivalent without-password in de lijst van actieve instructies.

Moet fail2ban na installatie op Debian nog worden geconfigureerd?

Op recente distributies zoals Debian 13 configureert en start fail2ban automatisch de jail voor de SSH-service zodra het pakket is geïnstalleerd. Je kunt de verbanningsduur later eventueel aanpassen in een jail.local-bestand.

help.lws.net/a/7926
Was dit artikel nuttig?

Ja

Geen

1 keer gelezen

Bedankt! Stel gerust vragen over onze documentatie als u meer informatie wilt, en help ons die te verbeteren.

Vergelijkbare artikelen

Een vraag over dit artikel?

Stel ze aan het LWS-team en de community. Het antwoord wordt na moderatie gepubliceerd.

Stel een vraag aan het LWS-team en de gemeenschap

AVG: Verwerkingsverantwoordelijke: LWS-Ligne Web Services. Doel: moderatie en openbare publicatie van uw vraag, eventuele melding van een antwoord. Rechtsgrond: toestemming (art. 6, lid 1, a AVG). Bewaartermijn e-mailadressen: 90 dagen na de melding, maximaal 12 maanden zonder antwoord. Om uw rechten uit te oefenen, raadpleeg de AVG-sectie van onze algemene voorwaarden.