Runbook: SSH Hardening
Aktuální konfigurace (všechny servery)
PasswordAuthentication no
PermitRootLogin prohibit-password
MaxAuthTries 3
PubkeyAuthentication yes
Ověření
# Na konkrétním serveru
ssh root@<server_ip> "sshd -T | grep -E 'passwordauth|permitroot|maxauth|pubkey'"
Přidání SSH klíče
# Přidat klíč na server
ssh root@<server_ip> "cat >> ~/.ssh/authorized_keys" < /path/to/key.pub
# Ověřit
ssh root@<server_ip> "wc -l ~/.ssh/authorized_keys"
Odebrání SSH klíče
# Zobrazit aktuální klíče
ssh root@<server_ip> "cat ~/.ssh/authorized_keys"
# Odebrat konkrétní klíč (podle komentáře nebo otisku)
ssh root@<server_ip> "grep -v 'komentář_klíče' ~/.ssh/authorized_keys > /tmp/ak && mv /tmp/ak ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
fail2ban
- Aktivní na všech serverech
- Tailscale subnet whitelistovaný:
100.64.0.0/10
- Config:
/etc/fail2ban/jail.local
# Stav
ssh root@<server_ip> "fail2ban-client status sshd"
# Odbanovat IP
ssh root@<server_ip> "fail2ban-client set sshd unbanip <IP>"
Audit
# Poslední přihlášení
ssh root@<server_ip> "last -20"
# Neúspěšné pokusy
ssh root@<server_ip> "journalctl -u sshd --since '24h ago' | grep -i 'failed\|invalid' | tail -20"