Kapitola 3 · 3.2
Vypnutí přihlašování heslem a jako root
Každý server na internetu brzy navštíví programy, které hádají hesla. Pokud se lze přihlásit pouze klíčem, nemají žádnou šanci. Právě to nyní zapnete.
Pozor: Funguje Vám přihlášení klíčem jako anna (viz Vlastní uživatel se sudo)? Pak si nejprve vytvořte snapshot (viz Snapshoty: záchranná síť pro každou velkou změnu) a během těchto kroků mějte otevřenou jednu relaci. Pokud se přesto něco pokazí, dostanete se na server přes konzoli (viz Konzole: Váš VPS v prohlížeči).
Vlastní konfigurační soubor
Na Debianu a Ubuntu čte SSH server nejprve soubory v /etc/ssh/sshd_config.d/, a to v abecedním pořadí. Pro každé nastavení platí první hodnota, na kterou narazí. Váš vlastní soubor proto dostane název, který bude v pořadí na začátku:
anna@web1:~$ sudo nano /etc/ssh/sshd_config.d/00-eigen.conf
Vložte do něj:
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PasswordAuthentication no: žádná hesla přes SSH.KbdInteractiveAuthentication no: ani dotaz na heslo oklikou.PermitRootLogin no: root se přes SSH už nemůže přihlásit, ani klíčem. Pracujete jako anna se sudo. Pokud chcete rootovi přihlášení klíčem stále povolit, použijteprohibit-password.
Kontrola a použití
anna@web1:~$ sudo sshd -t
anna@web1:~$ sudo sshd -T | grep -Ei '^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)'
passwordauthentication no
kbdinteractiveauthentication no
permitrootlogin no
anna@web1:~$ sudo systemctl restart ssh
sshd -t nic nevypíše, pokud je soubor v pořádku. sshd -T ukáže, které hodnoty skutečně platí. Je tam stále passwordauthentication yes? Pak ho znovu zapíná jiný soubor v sshd_config.d, často 50-cloud-init.conf. Váš 00-eigen.conf je v pořadí před ním a má přednost; zkontrolujte, zda máte správný název.
Na AlmaLinux a Rocky Linux se služba jmenuje sshd: sudo systemctl restart sshd.
Test před zavřením relace
Otevřete nové okno a vyzkoušejte:
ssh anna@203.0.113.10
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no anna@203.0.113.10
anna@203.0.113.10: Permission denied (publickey).
ssh root@203.0.113.10
root@203.0.113.10: Permission denied (publickey).
První pokus musí fungovat. Další dva musí být odmítnuty. Je vše v pořádku? Pak snapshot smažte.
Tip: Jiné číslo portu než 22 udrží Váš protokol klidnější, ale server tím bezpečnější nebude. Práci odvádí klíč. Pokud port přesto změníte, nejprve ho otevřete ve firewallu (viz Firewall s ufw (nebo nftables)).
