Procédure
Aby zabezpieczyć dostęp SSH do Twojego VPS LWS, zaleca się całkowite wyłączenie uwierzytelniania hasłem na rzecz klucza SSH, a następnie zainstalowanie fail2ban. Taka konfiguracja chroni serwer przed atakami brute force i eliminuje ryzyko związane z przechwyconymi lub odgadniętymi hasłami. W tym poradniku skopiujesz swój publiczny klucz SSH, dostosujesz konfigurację SSH, aby zneutralizować domyślne ustawienia cloud-init, a następnie zainstalujesz i sprawdzisz aktywną ochronę fail2ban.
Otwórz terminal na swoim komputerze i połącz się z serwerem, używając hasła root otrzymanego w wiadomości e-mail z dostarczeniem usługi. Przy pierwszym połączeniu zaakceptuj odcisk palca klucza serwera, wpisując yes. Po połączeniu natychmiast zakończ sesję, wykonując exit, aby wrócić na lokalną maszynę.
ssh root@203.0.113.10
exitZ poziomu swojego komputera użyj polecenia ssh-copy-id, aby skopiować swój publiczny klucz na serwer. Wpisz hasło root po raz ostatni, gdy terminal Cię o to poprosi. Jeśli wcześniej dodałeś już swój klucz SSH podczas zamówienia lub reinstalacji z panelu KVM, ten krok nie jest potrzebny.
ssh-copy-id root@203.0.113.10Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@203.0.113.10'"
and check to make sure that only the key(s) you wanted were added.Połącz się ponownie z VPS przez SSH z poziomu komputera. Połączenie powinno zostać ustanowione natychmiast, bez żądania hasła root serwera, co potwierdza, że publiczny klucz został poprawnie zainstalowany.
ssh root@203.0.113.10Wyświetl listę plików znajdujących się w katalogu /etc/ssh/sshd_config.d/ oraz zawartość 50-cloud-init.conf. Ten plik włącza uwierzytelnianie hasłem. Ponieważ serwer SSH zachowuje pierwszą napotkaną dyrektywę podczas odczytu plików w kolejności alfabetycznej, Twoja własna konfiguracja musi zostać odczytana przed nim.
ls /etc/ssh/sshd_config.d/
cat /etc/ssh/sshd_config.d/50-cloud-init.confPasswordAuthentication yesOtwórz edytor nano, aby utworzyć plik 00-cles-uniquement.conf. Prefiks 00 gwarantuje, że ten plik zostanie przetworzony przed 50-cloud-init.conf. Wpisz w nim dyrektywy wyłączające hasła i ograniczające dostęp root do kluczy, a następnie zapisz za pomocą Ctrl+X, potwierdź klawiszem O (lub Y zależnie od języka) i naciśnij Enter.
nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf# Logowanie SSH wyłącznie za pomocą klucza
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-passwordUruchom sshd -t, aby sprawdzić brak błędów składniowych, a następnie zweryfikuj aktywne wartości za pomocą sshd -T. Zwróć uwagę, że permitrootlogin wyświetla without-password, co odpowiada prohibit-password. Jeśli wszystko jest poprawne, przeładuj usługę SSH, aby zastosować nowe ustawienia bez przerywania sesji.
sshd -t
sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
systemctl reload sshpermitrootlogin without-password
passwordauthentication no
kbdinteractiveauthentication noBez zamykania aktywnej sesji otwórz drugie okno terminala na swoim komputerze. Najpierw spróbuj połączyć się, wymuszając odrzucenie kluczy opcją PubkeyAuthentication=no: serwer powinien odmówić dostępu. Następnie uruchom zwykłe połączenie: uwierzytelnianie kluczem powinno zakończyć się sukcesem.
ssh -o PubkeyAuthentication=no root@203.0.113.10
ssh root@203.0.113.10root@203.0.113.10: Permission denied (publickey).Z poziomu sesji połączonej z VPS zaktualizuj listę repozytoriów Debiana poleceniem apt update, a następnie zainstaluj pakiet fail2ban. W nowszych wersjach Debiana fail2ban automatycznie aktywuje ochronę usługi SSH zaraz po zakończeniu instalacji.
apt update
apt install -y fail2banUpewnij się, że usługa fail2ban jest aktywna za pomocą systemctl, a następnie sprawdź więzienie sshd, aby potwierdzić, że filtrowanie działa i monitoruje połączenia. Możesz wtedy bez obaw się rozłączyć.
systemctl is-active fail2ban
fail2ban-client status sshd
exitactive
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 3
| `- Journal matches: _SYSTEMD_UNIT=ssh.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:Demona OpenSSH odczytuje pliki z katalogu sshd_config.d w kolejności alfabetycznej i stosuje pierwszą napotkaną wartość. Używając prefiksu 00, Twoje dyrektywy są przetwarzane przed tymi z 50-cloud-init.conf, co gwarantuje uwzględnienie zakazu logowania hasłem.
Jeśli utracisz dostęp SSH, zaloguj się do panelu klienta LWS i otwórz dostęp konsoli KVM / VNC dostępny dla Twojego VPS. Ta konsola symuluje fizyczny ekran i klawiaturę podłączone do serwera i pozwala poprawić pliki konfiguracyjne bez korzystania z SSH.
To dokładnie ten sam parametr w OpenSSH. prohibit-password to zalecana nowoczesna składnia, ale polecenie sshd -T wyświetla jego historyczny odpowiednik without-password na liście aktywnych dyrektyw.
W nowszych dystrybucjach, takich jak Debian 13, fail2ban automatycznie konfiguruje i uruchamia więzienie dla usługi SSH już podczas instalacji pakietu. W razie potrzeby możesz później dostosować czas blokady w pliku jail.local.
Zadaj je zespołowi LWS i społeczności. Odpowiedź zostanie opublikowana po moderacji.