SSH je hlavní vstupní bod na servery a nejčastější cíl automatizovaných útoků. Každý server s veřejnou IP adresou čelí tisícům pokusů o SSH brute-force denně. Správné zabezpečení je první a nejdůležitější krok po nasazení serveru — bez něj je jen otázkou času, kdy útočník získá přístup.
Klíče¶
ssh-keygen -t ed25519 -C 'admin@server'
ssh-copy-id user@server
Ed25519 klíče jsou bezpečnější a rychlejší než RSA. Privátní klíč chraňte silnou passphrase a nikdy ho nekopírujte na servery. Pro větší organizace zvažte SSH CA (Certificate Authority), která eliminuje nutnost distribuce veřejných klíčů na každý server — místo toho server důvěřuje certifikátům podepsaným CA.
sshd konfigurace¶
PasswordAuthentication no
PermitRootLogin no
AllowUsers admin deploy
Port 2222
MaxAuthTries 3
KexAlgorithms curve25519-sha256
Ciphers [email protected],[email protected]
Zakázání hesel je nejúčinnější opatření — eliminuje celou kategorii brute-force útoků. Změna portu z 22 na nestandardní sníží objem automatizovaných skenů o 99 %. AllowUsers omezuje přihlášení na konkrétní uživatele, což zabraňuje přístupu přes systémové účty.
Fail2ban¶
sudo apt install fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 3
bantime = 3600
Fail2ban monitoruje logy a automaticky blokuje IP adresy po opakovaných neúspěšných pokusech. Pro produkční servery zvyšte bantime na 86400 (24 hodin) a nastavte findtime na 600 sekund. Fail2ban podporuje notifikace emailem a integraci s firewalld nebo nftables.
Další¶
- 2FA — Google Authenticator PAM modul přidává druhou vrstvu ochrany
- Port knocking — knockd vyžaduje specifickou sekvenci paketů před otevřením SSH portu
- Firewall — povolte SSH přístup jen z důvěryhodných IP adres a VPN
- SSH CA — centralizovaná správa přístupu místo distribuce klíčů na každý server
SSH hardening je nutnost¶
Minimum pro každý server: klíčová autentizace, zakázaná hesla, zakázaný root login a fail2ban. Tyto čtyři kroky eliminují většinu běžných útoků.