Podstawowe sposoby zabezpieczenia konfiguracji SSH

Kompleksowy przewodnik po zabezpieczaniu konfiguracji SSH za pomocą 8 podstawowych praktyk, w tym uwierzytelniania opartego na kluczach, wyłączania logowania root, szyfrowania, aktualizacji, 2FA, rejestrowania, kontroli dostępu i zarządzania kluczami. Idealny dla administratorów systemów i specjalistów ds. bezpieczeństwa wdrażających najlepsze praktyki SSH.

Zabezpieczanie SSH obejmuje szeroki zakres możliwych technik, ale nie wszystkie są równie praktyczne w każdym środowisku. Zalecenia w tym artykule to powszechnie uznawane, wysoce skuteczne metody, które równoważą łatwość implementacji z solidną ochroną. Zostały one zaczerpnięte ze standardów ustalonych przez organizacje takie jak NIST, CERT i projekt OpenSSH i odzwierciedlają podstawowe zasady, które SSL.com stosuje również w zabezpieczaniu certyfikatów cyfrowych — ochrona kluczy, stosowanie silnego szyfrowania i ograniczanie uprzywilejowanego dostępu.

Po wdrożeniu tych podstawowych najlepszych praktyk możesz w razie potrzeby wypróbować bardziej zaawansowane taktyki, takie jak SSH oparte na certyfikatach, port knocking lub SSH przez VPN.

1. Używaj uwierzytelniania opartego na kluczach zamiast haseł

Co to jest:

Zastępujesz loginy hasłem kryptograficzną parą kluczy publicznych/prywatnych. Klucz publiczny trafia na Twój serwer, a klucz prywatny pozostaje na Twoim komputerze lokalnym.

Dlaczego jest bezpieczniej:

  • Hasła są podatne na ataki siłowe
  • Aby włamać się do systemu, atakujący musi fizycznie uzyskać Twój klucz prywatny, co jest znacznie trudniejsze niż odgadnięcie hasła

Jak wdrożyć:

Wygeneruj parę kluczy

W systemie Linux lub macOS otwórz terminal i uruchom:

ssh-keygen -t ed25519

Aby zwiększyć bezpieczeństwo (jeśli ed25519 nie jest dostępny w Twoim środowisku), możesz użyć:

ssh-keygen -t RSA -b 4096

Skopiuj klucz publiczny na swój serwer

Aby łatwo przenieść swój klucz publiczny, możesz użyć polecenia ssh-copy-id (w systemach Linux/macOS):

ssh-copy-id użytkownik@adres_serwera

Jeśli polecenie ssh-copy-id jest niedostępne, ręcznie dodaj zawartość pliku id_ed25519.pub (lub id_rsa.pub) do pliku ~/.ssh/authorized_keys na serwerze.

Wyłącz uwierzytelnianie hasłem

W pliku /etc/ssh/sshd_config ustaw:

Hasło Nr uwierzytelnienia

Uruchom ponownie usługę SSH:

sudo systemctl restart ssh

Podobnie jak w przypadku zarządzania certyfikatami cyfrowymi, uwierzytelnianie za pomocą klucza SSH gwarantuje, że tylko osoba dysponująca prawidłowym kluczem prywatnym może nawiązać połączenie.

2. Wyłącz logowanie roota

Co to jest:

Zablokuj możliwość bezpośredniego logowania się użytkownika root przez SSH.

Dlaczego jest bezpieczniej:

  • Konto główne ma nieograniczone uprawnienia i jest atrakcyjnym celem dla atakujących
  • Wyłączenie bezpośredniego dostępu do roota zmusza atakujących do odgadnięcia nie tylko klucza lub hasła, ale także prawidłowej nazwy użytkownika

Jak wdrożyć:

W pliku /etc/ssh/sshd_config znajdź lub dodaj:

PermitRootLogin no

Uruchom ponownie SSH:

sudo systemctl restart ssh

Ten krok skutecznie zawęża obszar ataku, usuwając najsilniejsze konto z łatwego dostępu.

3. Wymuś silne szyfrowanie i algorytmy MAC

Co to jest:

Protokół SSH umożliwia określenie szyfrów i kodów uwierzytelniania wiadomości (MAC) używanych do szyfrowania danych i weryfikacji ich integralności.

Dlaczego jest bezpieczniej:

  • Starsze lub słabsze algorytmy (np. DES, RC4) mogą być podatne na ataki kryptograficzne
  • Korzystanie z nowoczesnych szyfrów (takich jak AES-256) i silnych kodów MAC (takich jak HMAC-SHA2) pomaga zachować poufność danych sesji i zapobiega ich manipulacjom

Jak wdrożyć:

W pliku /etc/ssh/sshd_config dodaj lub zaktualizuj listę szyfrów/MAC:

Szyfry aes256-ctr,aes192-ctr,aes128-ctr
MAC-sha2-256,hmac-sha2-512

Uruchom ponownie SSH:

sudo systemctl restart ssh

Utrzymywanie kryptografii na bieżąco w przypadku protokołu SSH jest równie ważne, jak zapewnienie stosowania bezpiecznych protokołów i szyfrów. TLS.

4. Utrzymuj SSH (i swój system) w stanie aktualnym

Co to jest:

Zadbaj o to, aby OpenSSH i reszta systemu operacyjnego otrzymywały regularne poprawki zabezpieczeń.

Dlaczego jest bezpieczniej:

  • Nieaktualne oprogramowanie często zawiera znane luki w zabezpieczeniach
  • Napastnicy często atakują starsze wersje, wykorzystując niezałatane luki w zabezpieczeniach

Jak wdrożyć:

W systemach opartych na Debianie lub Ubuntu:

sudo apt-get update && sudo Aktualizacja apt-get

W systemach opartych na CentOS, Fedora lub RHEL:

sudo yum update

Sprawdź także dostępność aktualizacji oprogramowania sprzętowego, jeśli korzystasz z protokołu SSH na urządzeniach sieciowych lub innym sprzęcie.

5. Wdróż uwierzytelnianie dwuskładnikowe lub wieloskładnikowe (2FA/MFA)

Co to jest:

Dodaje dodatkową warstwę bezpieczeństwa, wymagając czegoś więcej niż tylko hasła lub klucza (np. jednorazowego kodu w telefonie).

Dlaczego jest bezpieczniej:

  • Nawet jeśli atakujący uzyskają Twój klucz SSH, nadal będą potrzebować drugiego składnika, aby się zalogować
  • Pomaga chronić przed kradzieżą danych uwierzytelniających

Jak wdrożyć:

Zainstaluj i skonfiguruj narzędzie MFA

Na przykład, Google Authenticator można zainstalować na serwerach Linux i skonfigurować jako moduł PAM (Pluggable Authentication Modules). Postępuj zgodnie z instrukcjami instalacji właściwymi dla Twojej dystrybucji.

Edytuj /etc/pam.d/sshd i /etc/ssh/sshd_config

  • Włącz Google Authenticator lub inny moduł MFA
  • Ustaw ChallengeResponseAuthentication na yes i AuthenticationMethods na publickey,keyboard-interactive (lub dowolną kombinację, która pasuje do Twojego środowiska)

Uruchom ponownie SSH:

sudo systemctl restart ssh

6. Włącz rejestrowanie i monitorowanie

Co to jest:

Rejestruj zdarzenia logowania SSH, śledź podejrzaną aktywność i otrzymuj alerty, gdy coś jest nie tak.

Dlaczego jest bezpieczniej:

  • Próby włamań są często widoczne w logach jako powtarzające się nieudane logowania lub nieautoryzowane działania
  • Wczesne wykrycie oznacza, że ​​możesz szybko zareagować, blokując adresy IP lub zmieniając konfiguracje, zanim dojdzie do szkody

Jak wdrożyć:

Zwiększ szczegółowość dziennika

W pliku /etc/ssh/sshd_config ustaw:

Poziom dziennika WIELOKROTNY

Łączne dzienniki

Użyj narzędzi zapobiegających włamaniom

fail2ban skanuje pliki dziennika i blokuje adresy IP, które wykazują szkodliwe oznaki, np. zbyt wiele niepoprawnych haseł.

7. Wdrażanie kontroli dostępu i ograniczeń

Co to jest:

Ogranicz, kto i skąd może łączyć się przez SSH, zapobiegając w ten sposób nieautoryzowanym lub nadmiernym żądaniom przychodzącym.

Sposoby wykonania:

Ograniczenia zapory sieciowej

Zezwalaj na SSH tylko ze znanych lub zaufanych adresów IP. Na przykład na Linuksie z ufw:

sudo ufw zezwala na 192.168.1.0/24 do dowolnego portu 22

Konfiguracja portu

Uruchomienie SSH na niestandardowym porcie (np. 2222) może zmniejszyć liczbę prób automatycznego skanowania. Nie zastępuje prawdziwych środków bezpieczeństwa, ale może ograniczyć hałas.

Ograniczenia użytkownika/grupy

W pliku /etc/ssh/sshd_config określ:

Zezwalaj użytkownikom alice bob

or

Zezwalaj na grupy sshadmins

8. Używaj haseł kluczy SSH i bezpiecznego przechowywania kluczy

Co to jest:

Zaszyfruj swój klucz prywatny hasłem, aby nawet jeśli Twój komputer zostanie włamany, sam klucz nie stał się możliwy do użycia.

Dlaczego jest bezpieczniej:

  • Skradziony plik klucza bez hasła może zapewnić natychmiastowy dostęp
  • Hasła pełnią funkcję dodatkowej warstwy szyfrowania klucza lokalnego

Jak wdrożyć:

Ustaw hasło podczas generowania klucza

ssh-keygen -t ed25519

(Zostaniesz poproszony o podanie hasła.)

Chroń swoje kluczowe pliki

Ogranicz uprawnienia do folderu .ssh i plików kluczy:

chmod 700 ~ / .ssh
chmod 600 ~/.ssh/id_ed25519

Rozważ sprzętowe moduły bezpieczeństwa (HSM) lub tokeny

W przypadku większych organizacji korzystanie ze specjalnego sprzętu do przechowywania kluczy może ograniczyć ryzyko kradzieży oprogramowania lub infekcji złośliwym oprogramowaniem.

Podsumowanie

Bezpieczeństwo SSH sprowadza się do warstw ochrony. Wdrażając uwierzytelnianie oparte na kluczach, wyłączając bezpośredni dostęp root, używając silnego szyfrowania, pozostając na bieżąco, wymagając uwierzytelniania wieloskładnikowego, monitorując dzienniki, ograniczając dostęp i zabezpieczając klucze za pomocą haseł, zabezpieczasz najczęstsze (i najpoważniejsze) zagrożenia.

Środki te są zgodne z tą samą szerszą filozofią bezpieczeństwa, którą SSL.com promuje w przypadku certyfikatów cyfrowych: chroń klucze kryptograficzne, używaj solidnego szyfrowania, ograniczaj dostęp uprzywilejowany i czujnie obserwuj swoje systemy. Po ustaleniu tych podstawowych najlepszych praktyk możesz zbadać bardziej zaawansowane opcje, takie jak urzędy certyfikacji SSH, port knocking lub uruchamianie SSH przez VPN, aby jeszcze bardziej dostosować swoją postawę bezpieczeństwa.

Bądź na bieżąco i bezpiecznie

SSL.com jest światowym liderem w dziedzinie cyberbezpieczeństwa, PKI i certyfikaty cyfrowe. Zarejestruj się, aby otrzymywać najnowsze wiadomości branżowe, wskazówki i ogłoszenia o produktach od SSL.com.

Będziemy wdzięczni za Twoją opinię

Weź udział w naszej ankiecie i daj nam znać, co myślisz o swoim ostatnim zakupie.