Zabezpečení VPS: SSH klíče a Fail2Ban

💡
Pro postupování dle návodu je potřeba disponovat elementárními znalostmi ovládání VPS, vč. práce se soubory v UNIXovém prostředím.

Když si pořídíte VPS pro svůj Minecraft server nebo jiný herní projekt, získáte kontrolu nad celým systémem. To s sebou nese obrovské výhody, ale také jedno velké riziko. Jakmile je vaše VPS viditelné v ostrém internetu, začnou ho skenovat boti (nejčastěji na SSH portu) a útočníci z celého světa, kteří zkoušejí náhodná a známá hesla.

Pokud chcete mít jistotu dobře zabezpečeného VPS, čekají vás dva kroky: vyměnit klasické heslo za SSH klíče a nasadit nástroj Fail2Ban. V tomto návodu si ukážeme, jak na to.

SSH klíče: Bezpečnější než sebelepší heslo

Klasické přihlašování heslem je pohodlné, ale zranitelné vůči tzv. brute-force útokům (hádání milionů hesel za sekundu). Narozdíl od hesel, SSH klíče jsou neprolomitelným zabezpečením. Vygenerujete si dvojici klíčů: veřejný (který nahrajete na VPS) a soukromý (který si necháte u sebe v počítači). Bez soukromého klíče se na server nikdo nedostane, ani kdyby znal vaše heslo.

Krok 1: Vygenerování klíčů na vašem PC

Pokud používáte systém Windows nebo macOS/Linux, otevřete si terminál (příkazový řádek) a zadejte následující příkaz:

ssh-keygen -t ed25519
💡
Systém se vás zeptá, kam klíč uložit (stačí potvrdit Enterem) a zda chcete klíč zaheslovat (passphrase). Zaheslování doporučuji – přidáváte tímto další faktor autentikace.

Krok 2: Nahrání veřejného klíče na VPS

Nyní musíte svůj veřejný klíč (soubor s příponou .pub) dostat na server do souboru ~/.ssh/authorized_keys. V zásadě máte dvě možnosti:

  • Ruční cesta (Windows / Putty): Otevřete soubor .pub v textovém editoru (např. Poznámkový blok), zkopírujte jeho obsah, přihlaste se na VPS a vložte jej do souboru ~/.ssh/authorized_keys.

Nejjednodušší cesta (Linux/macOS): Použijte příkaz, který to udělá za vás:

ssh-copy-id root@IP_VASEHO_SERVERU

Krok 3: Vypnutí přihlašování heslem

POZOR: Než uděláte tento krok, ujistěte se, že vám přihlášení pomocí klíče v novém okně terminálu reálně funguje! Ne zavírejte stávající spojení, dokud si to neověříte: Otevřete si úplně nové okno terminálu a zkuste se připojit znovu. Pokud vás server přihlásí bez hesla, máte vyhráno.

Jakmile vám klíč funguje, zakážeme přihlašování heslem úplně. Na serveru otevřete konfigurační soubor:

nano /etc/ssh/sshd_config

Najděte následující řádky (pokud mají na začátku mřížku #, smažte ji) a upravte je takto:

PasswordAuthentication no
PubkeyAuthentication yes

Uložte soubor (v editoru Nano pomocí CTRL+O, poté Enter a ukončete CTRL+X) a restartujte SSH službu:

systemctl restart ssh

Od této chvíle je vaše VPS vůči běžnému hádání hesel imunní.

💡
Na server se dá přidávat více klíčů z různých zařízení.

Fail2Ban: Hlídací pes

I když máte zapnuté SSH klíče, boti budou na váš server stále útočit a zbytečně zatěžovat síť i procesor. Fail2Ban je šikovný nástroj, který neustále čte logy serveru. Pokud zjistí, že se z nějaké IP adresy někdo neúspěšně pokouší přihlásit (např. 5x za sebou), automaticky tuto IP adresu na určitý čas zablokuje pomocí UFW.

Krok 1: Instalace Fail2Ban

Instalace na systémech založených na Debianu/Ubuntu je otázkou jednoho příkazu:

apt update && apt install fail2ban -y

Krok 2: Základní nastavení

Po instalaci si Fail2Ban vytvoří výchozí konfiguraci. Vytvoříme si vlastní lokální soubor, kde definujeme pravidla pro SSH:

nano /etc/fail2ban/jail.local

Do souboru vložte následující základní konfiguraci:

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 3
bantime  = 1h
findtime = 10m

Co tato čísla znamenají?

  • maxretry = 3: Po 3 neúspěšných pokusech o přihlášení přichází ban.
  • findtime = 10m: Počítají se neúspěšné pokusy v okně posledních 10 minut.
  • bantime = 1h: Útočník dostane ban na 1 hodinu. Pokud chcete permanentní ban, můžete nastavit -1.

Uložte soubor a službu restartujte:

systemctl restart fail2ban

Zda služba v pořádku běží, si můžete ověřit příkazem systemctl status fail2ban (měli byste vidět zelené texty active (running)).

Krok 3: Jak zkontrolovat, zda to funguje?

Zkontrolovat funkčnost můžete pomocí tohoto příkazu:

fail2ban-client status sshd

Uvidíte přehlednou statistiku včetně seznamu aktuálně zabanovaných IP adres. Pokud byste náhodou zabanovali sami sebe (např. překlepem při testování), z jiné IP adresy se můžete odbanovat příkazem: fail2ban-client set sshd unbanip VASE_IP_ADRESA.

Shrnutí

Zabezpečení VPS není složitá záležitost a zkušenějšímu uživateli zabere ani ne 5 minut. Kombinace SSH klíčůFail2Ban zajistí dostatečné zabezpečení serveru.

deneme bonusu veren siteler

Je návod nejasný nebo potřebuješ další pomoc?

Hostuješ u FakaHeda.eu? Využij náš Discord technické podpory!