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.
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č.
ssh root@203.0.113.10
exitZe 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ý.
ssh-copy-id root@203.0.113.10Number 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.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.
ssh root@203.0.113.10Vypiš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.
ls /etc/ssh/sshd_config.d/
cat /etc/ssh/sshd_config.d/50-cloud-init.confPasswordAuthentication yesOtevř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.
nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf# Připojení SSH pouze pomocí klíče
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-passwordSpusť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.
sshd -t
sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
systemctl reload sshpermitrootlogin without-password
passwordauthentication no
kbdinteractiveauthentication noAniž 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ě.
ssh -o PubkeyAuthentication=no root@203.0.113.10
ssh root@203.0.113.10root@203.0.113.10: Permission denied (publickey).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.
apt update
apt install -y fail2banUjistě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.
systemctl is-active fail2ban
fail2ban-client status sshd
exitactive
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: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.
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.
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.
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.
Položte ji týmu LWS a komunitě. Odpověď bude zveřejněna po kontrole moderátorem.