Zabezpečení VPS: SSH klíče a Fail2Ban
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
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
.pubv 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
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í.
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íčů a Fail2Ban zajistí dostatečné zabezpečení serveru.