Hur man säkrar SSH-åtkomsten till en LWS-VPS: endast nycklar och fail2ban

Procédure

För att säkra SSH-åtkomsten till din LWS VPS rekommenderas det att helt inaktivera lösenordsautentisering till förmån för en SSH-nyckel, och sedan installera fail2ban. Denna konfiguration skyddar din server mot brute force-attacker och eliminerar riskerna med avlyssnade eller gissade lösenord. I denna handledning kommer du att kopiera din publika SSH-nyckel, justera SSH-konfigurationen för att neutralisera cloud-init:s standardinställningar, och sedan installera samt verifiera det aktiva skyddet från fail2ban.

Installera sin SSH-nyckel

  1. Anslut dig en första gång via SSH och koppla sedan från

    Öppna en terminal på din dator och anslut till servern med hjälp av root-lösenordet som du fick i ditt leveransmejl. Vid första anslutningen accepterar du serverns nyckelavtryck genom att skriva yes. När du är ansluten, avsluta omedelbart sessionen genom att köra exit för att återgå till din lokala dator.

    ⌨ På din dator
    ssh root@203.0.113.10
    exit
  2. Kopiera din publika SSH-nyckel till VPS:en

    Från din dator använder du kommandot ssh-copy-id för att kopiera din publika nyckel till servern. Ange ditt root-lösenord en sista gång när terminalen frågar efter det. Om du redan hade lagt till din SSH-nyckel vid beställningen eller vid ominstallation från KVM-panelen, är detta steg inte nödvändigt.

    ⌨ På din dator
    ssh-copy-id root@203.0.113.10
    Förväntat resultat
    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. Verifiera anslutningen med SSH-nyckel

    Anslut till din VPS igen via SSH från din dator. Anslutningen ska upprättas omedelbart utan att begära serverns root-lösenord, vilket bekräftar att din publika nyckel har installerats korrekt.

    ⌨ På din dator
    ssh root@203.0.113.10

Inaktivera inloggning med lösenord

  1. Identifiera fällan i cloud-init-filen

    Lista filerna i katalogen /etc/ssh/sshd_config.d/ och visa innehållet i 50-cloud-init.conf. Den här filen aktiverar autentisering med lösenord. Eftersom SSH-servern behåller den första direktivpost som påträffas när filerna läses i alfabetisk ordning måste din egen konfiguration ovillkorligen läsas före den.

    ⌨ På servern
    ls /etc/ssh/sshd_config.d/
    cat /etc/ssh/sshd_config.d/50-cloud-init.conf
    Förväntat resultat
    PasswordAuthentication yes
  2. Skapa den prioriterade SSH-konfigurationsfilen

    Öppna textredigeraren nano för att skapa filen 00-cles-uniquement.conf. Prefixet 00 garanterar att denna fil behandlas före 50-cloud-init.conf. Skriv in direktiven som inaktiverar lösenord och begränsar root-åtkomst till nycklar, och spara sedan med Ctrl+X, bekräfta med O (eller Y beroende på språk) och tryck på Enter.

    ⌨ På servern
    nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    📄 /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    # SSH-anslutning endast med nyckel
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin prohibit-password
  3. Testa syntaxen och tillämpa konfigurationen

    Kör sshd -t för att kontrollera att inga syntaxfel finns, och verifiera sedan de aktiva värdena med sshd -T. Observera att permitrootlogin visas som without-password, vilket motsvarar prohibit-password. Om allt är korrekt, ladda om SSH-tjänsten för att tillämpa de nya inställningarna utan att avbryta din session.

    ⌨ På servern
    sshd -t
    sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
    systemctl reload ssh
    Förväntat resultat
    permitrootlogin without-password
    passwordauthentication no
    kbdinteractiveauthentication no

Testa SSH-åtkomst

  1. Verifiera att lösenord nekas och att nyckelåtkomst fungerar

    Utan att stänga din aktiva session öppnar du ett andra terminalfönster på din dator. Försök först med en anslutning genom att tvinga avvisning av nycklar med alternativet PubkeyAuthentication=no: servern ska neka åtkomst. Starta sedan en normal anslutning: autentisering med nyckel ska lyckas.

    ⌨ På din dator
    ssh -o PubkeyAuthentication=no root@203.0.113.10
    ssh root@203.0.113.10
    Förväntat resultat
    root@203.0.113.10: Permission denied (publickey).

Installera och verifiera fail2ban

  1. Installera fail2ban

    Från din session ansluten till VPS:en uppdaterar du listan över Debian-förråd med apt update och installerar sedan paketet fail2ban. På moderna Debian-versioner aktiverar fail2ban automatiskt skyddet för SSH-tjänsten direkt efter att installationen är klar.

    ⌨ På servern
    apt update
    apt install -y fail2ban
  2. Kontrollera fail2ban-status och avsluta sessionen

    Kontrollera att fail2ban-tjänsten är aktiv med systemctl och fråga sedan efter sshd-fängelset för att bekräfta att filtreringen fungerar och övervakar anslutningar. Du kan därefter logga ut i lugn och ro.

    ⌨ På servern
    systemctl is-active fail2ban
    fail2ban-client status sshd
    exit
    Förväntat resultat
    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:

Lexikon

SSH (Secure Shell)
Ett säkert kommunikationsprotokoll som gör det möjligt att ansluta till och administrera en fjärrserver via kommandoraden.
Publik nyckel
Nyckelfil som läggs på fjärrservern för att verifiera användarens identitet utan att skicka ett lösenord.
Privat nyckel
Strikt konfidentiell nyckelfil som lagras på din lokala dator och används för att bevisa din identitet för servern.
Cloud-init
Automatiseringsverktyg som används vid den första driftsättningen av virtuella maskiner för att initiera deras nätverk och åtkomster.
fail2ban
Säkerhetsprogram som övervakar systemloggar och tillfälligt blockerar misstänkta IP-adresser på brandväggsnivå.
Jail (fängelse)
I fail2ban, en uppsättning som kopplar ihop ett filter för att upptäcka missbruksförsök med en banningsregel för en given tjänst.

Vanliga frågor

Varför namnge filen 00-cles-uniquement.conf i stället för att ändra sshd_config?

OpenSSH-demonen läser filerna i katalogen sshd_config.d i alfabetisk ordning och tillämpar det första värdet den stöter på. Genom att använda prefixet 00 behandlas dina direktiv före dem i 50-cloud-init.conf, vilket garanterar att förbudet mot lösenord beaktas.

Vad gör jag om jag blir utelåst från min VPS?

Om du förlorar din SSH-åtkomst, logga in i ditt LWS-kundområde och öppna den KVM / VNC-konsol som finns tillgänglig för din VPS. Denna konsol simulerar en fysisk skärm och ett tangentbord anslutna till servern och gör det möjligt att korrigera dina konfigurationsfiler utan att använda SSH.

Vad är skillnaden mellan prohibit-password och without-password?

Det är exakt samma parameter i OpenSSH. prohibit-password är den moderna rekommenderade syntaxen, men kommandot sshd -T visar dess historiska motsvarighet without-password i listan över aktiva direktiv.

Behöver man konfigurera fail2ban efter installationen på Debian?

På nyare distributioner som Debian 13 konfigurerar och startar fail2ban automatiskt ett fängelse för SSH-tjänsten direkt när paketet installeras. Du kan senare anpassa spärrtiderna i en jail.local-fil om du vill.

help.lws.net/a/7926
Var den här artikeln till hjälp?

Ja

Nej

Läst 1 gånger

Tack! Ställ gärna frågor om vår dokumentation om du vill ha mer information och hjälp oss att förbättra den.

Liknande artiklar

En fråga om den här artikeln?

Ställ den till LWS-teamet och communityn. Svaret publiceras efter moderering.

Ställ en fråga till AWS-teamet och dess community

GDPR: Personuppgiftsansvarig: LWS-Ligne Web Services. Ändamål: moderering och offentlig publicering av din fråga, eventuellt meddelande om ett svar. Rättslig grund: samtycke (art. 6.1 a GDPR). Lagring av e-postadresser: 90 dagar efter meddelandet, högst 12 månader utan svar. För att utöva dina rättigheter, se GDPR-avsnittet i våra allmänna villkor.