Rozdział 3 · 3.2
Wyłączanie logowania hasłem i jako root
Każdy serwer w internecie już po krótkim czasie odwiedzają programy, które próbują odgadnąć hasła. Jeśli logowanie jest możliwe wyłącznie za pomocą klucza, nie mają one żadnych szans. Teraz włączą Państwo to zabezpieczenie.
Uwaga: Czy logowanie kluczem jako anna działa (zob. Własny użytkownik z uprawnieniami sudo)? Najpierw prosimy wykonać snapshot (zob. Snapshoty: zabezpieczenie przed każdą większą zmianą) i podczas tych kroków utrzymywać otwartą sesję. Jeśli mimo to coś pójdzie nie tak, dostęp do serwera uzyskają Państwo przez konsolę (zob. Konsola: Państwa VPS w przeglądarce).
Własny plik ustawień
W Debian i Ubuntu serwer SSH najpierw odczytuje pliki z /etc/ssh/sshd_config.d/, w kolejności alfabetycznej. Dla każdego ustawienia obowiązuje pierwsza napotkana wartość. Dlatego Państwa własny plik otrzymuje nazwę, która znajdzie się na początku listy:
anna@web1:~$ sudo nano /etc/ssh/sshd_config.d/00-eigen.conf
Prosimy wpisać do niego:
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PasswordAuthentication no: koniec z hasłami przez SSH.KbdInteractiveAuthentication no: również żadnego pytania o hasło drogą okrężną.PermitRootLogin no: root nie może już logować się przez SSH, nawet za pomocą klucza. Pracują Państwo jako anna z sudo. Jeśli chcą Państwo nadal zezwalać na logowanie roota kluczem, prosimy użyćprohibit-password.
Sprawdzenie i zastosowanie
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 nie wyświetla, jeśli plik jest poprawny. sshd -T pokazuje, które wartości faktycznie obowiązują. Czy nadal widnieje passwordauthentication yes? W takim razie inny plik w sshd_config.d ponownie włącza tę opcję, często 50-cloud-init.conf. Państwa plik 00-eigen.conf znajduje się przed nim i ma pierwszeństwo; prosimy sprawdzić, czy nazwa jest poprawna.
W AlmaLinux i Rocky Linux usługa nazywa się sshd: sudo systemctl restart sshd.
Test przed zamknięciem sesji
Prosimy otworzyć nowe okno i spróbować:
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).
Pierwsze polecenie powinno zadziałać. Dwa pozostałe powinny zostać odrzucone. Wszystko się zgadza? W takim razie prosimy usunąć snapshot.
Wskazówka: Inny numer portu niż 22 sprawi, że w logach będzie spokojniej, ale nie zwiększy bezpieczeństwa serwera. Całą pracę wykonuje klucz. Jeśli mimo to zmienią Państwo port, prosimy najpierw otworzyć go w zaporze (zob. Zapora sieciowa z ufw (lub nftables)).
