Skip to content

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"