Jak zabezpečit přístup SSH k VPS LWS: pouze klíče a fail2ban

Procédure

Pro zabezpečení přístupu SSH k vašemu VPS LWS se doporučuje zcela deaktivovat autentizaci pomocí hesla ve prospěch klíče SSH a poté nainstalovat fail2ban. Tato konfigurace chrání váš server proti útokům hrubou silou a eliminuje rizika spojená s odposlechnutými nebo uhodnutými hesly. V tomto tutoriálu zkopírujete svůj veřejný SSH klíč, upravíte konfiguraci SSH tak, aby se neutralizovalo výchozí nastavení cloud-init, a poté nainstalujete a ověříte aktivní ochranu fail2ban.

Instalace SSH klíče

  1. Připojte se poprvé přes SSH a poté se odpojte

    Otevřete terminál na svém počítači a připojte se k serveru pomocí hesla root, které jste obdrželi v e-mailu o doručení. Při prvním připojení potvrďte otisk klíče serveru zadáním yes. Jakmile jste připojeni, ihned ukončete relaci příkazem exit a vraťte se na svůj lokální počítač.

    ⌨ Na vašem počítači
    ssh root@203.0.113.10
    exit
  2. Zkopírujte svůj veřejný SSH klíč na VPS

    Ze svého počítače použijte příkaz ssh-copy-id ke zkopírování veřejného klíče na server. Když vás terminál vyzve, zadejte naposledy heslo root. Pokud jste již přidali svůj SSH klíč během objednávky nebo při přeinstalaci z panelu KVM, tento krok není nutný.

    ⌨ Na vašem počítači
    ssh-copy-id root@203.0.113.10
    Očekávaný výsledek
    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. Ověřte připojení pomocí SSH klíče

    Znovu se připojte ke svému VPS přes SSH ze svého počítače. Připojení se musí navázat okamžitě bez vyžádání hesla root serveru, což potvrzuje, že váš veřejný klíč byl správně nainstalován.

    ⌨ Na vašem počítači
    ssh root@203.0.113.10

Zakázání přihlášení pomocí hesla

  1. Najděte past se souborem cloud-init

    Vypište soubory přítomné v adresáři /etc/ssh/sshd_config.d/ a zobrazte obsah souboru 50-cloud-init.conf. Tento soubor aktivuje autentizaci pomocí hesla. Protože server SSH zachovává první nalezenou direktivu při čtení souborů v abecedním pořadí, musí být vaše vlastní konfigurace nutně načtena před ním.

    ⌨ Na serveru
    ls /etc/ssh/sshd_config.d/
    cat /etc/ssh/sshd_config.d/50-cloud-init.conf
    Očekávaný výsledek
    PasswordAuthentication yes
  2. Vytvořte prioritní konfigurační soubor SSH

    Otevřete editor nano a vytvořte soubor 00-cles-uniquement.conf. Předpona 00 zaručuje, že tento soubor bude zpracován před 50-cloud-init.conf. Zapište do něj direktivy, které deaktivují hesla a omezují přístup root pouze na klíče, a poté uložte pomocí Ctrl+X, potvrďte pomocí O (nebo Y podle jazyka) a stiskněte Enter.

    ⌨ Na serveru
    nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    📄 /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    # Připojení SSH pouze pomocí klíče
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin prohibit-password
  3. Otestujte syntaxi a použijte konfiguraci

    Spusťte sshd -t pro kontrolu absence chyb syntaxe a poté ověřte aktivní hodnoty pomocí sshd -T. Všimněte si, že permitrootlogin zobrazuje without-password, což odpovídá prohibit-password. Pokud je vše v pořádku, znovu načtěte službu SSH, aby se nové parametry použily bez přerušení vaší relace.

    ⌨ Na serveru
    sshd -t
    sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
    systemctl reload ssh
    Očekávaný výsledek
    permitrootlogin without-password
    passwordauthentication no
    kbdinteractiveauthentication no

Testování přístupu SSH

  1. Ověřte odmítnutí hesla a přístup pomocí klíče

    Aniž byste zavřeli svou aktivní relaci, otevřete na svém počítači druhé okno terminálu. Nejprve se pokuste o připojení s vynuceným odmítnutím klíčů pomocí volby PubkeyAuthentication=no: server musí přístup odmítnout. Poté spusťte normální připojení: autentizace pomocí klíče proběhne úspěšně.

    ⌨ Na vašem počítači
    ssh -o PubkeyAuthentication=no root@203.0.113.10
    ssh root@203.0.113.10
    Očekávaný výsledek
    root@203.0.113.10: Permission denied (publickey).

Instalace a ověření fail2ban

  1. Nainstalujte fail2ban

    Ze své relace připojené k VPS aktualizujte seznam repozitářů Debianu pomocí apt update a poté nainstalujte balíček fail2ban. V novějších verzích Debianu fail2ban automaticky aktivuje ochranu služby SSH ihned po dokončení instalace.

    ⌨ Na serveru
    apt update
    apt install -y fail2ban
  2. Ověřte stav fail2ban a ukončete relaci

    Ujistěte se, že služba fail2ban je aktivní pomocí systemctl, a poté se dotázejte na vězení sshd, abyste potvrdili, že filtrování funguje a sleduje připojení. Poté se můžete bez obav odpojit.

    ⌨ Na serveru
    systemctl is-active fail2ban
    fail2ban-client status sshd
    exit
    Očekávaný výsledek
    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:

Slovník

SSH (Secure Shell)
Zabezpečený komunikační protokol umožňující připojit se k vzdálenému serveru a spravovat jej z příkazové řádky.
Veřejný klíč
Soubor klíče umístěný na vzdáleném serveru pro ověření identity uživatele bez přenosu hesla.
Soukromý klíč
Striktně důvěrný soubor klíče uložený na vašem lokálním počítači, který slouží k prokázání vaší identity serveru.
Cloud-init
Nástroj automatizace používaný při počátečním nasazení virtuálních strojů k inicializaci jejich sítě a přístupů.
fail2ban
Zabezpečovací software, který sleduje systémové logy a dočasně blokuje na úrovni firewallu podezřelé IP adresy.
Jail (vězení)
Ve fail2ban sada spojující detekční filtr pokusů o zneužití a pravidlo blokování pro danou službu.

Často kladené otázky

Proč pojmenovat soubor 00-cles-uniquement.conf místo úpravy sshd_config?

Démon OpenSSH čte soubory ve složce sshd_config.d v abecedním pořadí a používá první hodnotu, na kterou narazí. Použitím předpony 00 jsou vaše direktivy zpracovány před direktivami v 50-cloud-init.conf, což zajišťuje zohlednění zákazu hesel.

Co dělat, když se ocitnu zablokovaný mimo své VPS?

Pokud ztratíte přístup SSH, přihlaste se do svého zákaznického prostoru LWS a otevřete dostupnou konzoli KVM / VNC pro své VPS. Tato konzole simuluje fyzickou obrazovku a klávesnici připojené k serveru a umožňuje opravit konfigurační soubory bez použití SSH.

Jaký je rozdíl mezi prohibit-password a without-password?

Jde přesně o stejný parametr v OpenSSH. prohibit-password je doporučená moderní syntaxe, ale příkaz sshd -T zobrazuje jeho historický ekvivalent without-password v seznamu aktivních direktiv.

Je třeba po instalaci na Debianu konfigurovat fail2ban?

Na novějších distribucích, jako je Debian 13, fail2ban při instalaci balíčku automaticky nakonfiguruje a spustí vězení pro službu SSH. Pokud chcete, můžete později upravit doby blokování v souboru jail.local.

help.lws.net/a/7926
Byl pro vás tento článek užitečný?

Ano

Ne

Přečteno 1×

Děkujeme! Neváhejte se ptát na naši dokumentaci, pokud chcete více informací, a pomozte nám ji zlepšit.

Podobné články

Máte otázku k tomuto článku?

Položte ji týmu LWS a komunitě. Odpověď bude zveřejněna po kontrole moderátorem.

Položte týmu LWS a jeho komunitě otázku

GDPR: Správce: LWS-Ligne Web Services. Účel: moderace a veřejné zveřejnění vašeho dotazu, případné upozornění na odpověď. Právní základ: souhlas (čl. 6 odst. 1 písm. a GDPR). Uchovávání e-mailů: 90 dní po upozornění, nejvýše 12 měsíců bez odpovědi. Pro uplatnění svých práv viz oddíl GDPR našich obchodních podmínek.