Audyt bezpieczeństwa wykrył dostępny z zewnątrz port SSH. Nie mam możliwości zablokowania tej usługi czy ograniczenia do konkretnych adresów IP. Jakie zabezpieczenia po stronie samej usługi SSH wdrożyć w tej sytuacji?
Apr 13, 10:25am

Michale, sytuacja, w której musisz zabezpieczyć dostępny z zewnątrz port SSH, mimo braku możliwości blokowania go na poziomie sieci, wymaga skupienia się na samych mechanizmach bezpieczeństwa usługi SSH. Oto kluczowe kroki, które możesz podjąć, aby zminimalizować ryzyko:


1. Zmiana domyślnego portu SSH

  • Dlaczego? Port 22 jest standardowo skanowany przez boty i atakujących. Zmiana portu na niestandardowy (np. 2222, 2424) zmniejszy liczbę automatycznych ataków.
  • Jak? Edytuj plik /etc/ssh/sshd_config i zmień linię Port 22 na wybrany port. Pamiętaj, aby otworzyć nowy port w zaporze.

2. Wyłączenie logowania hasłem – tylko klucze SSH

  • Dlaczego? Logowanie za pomocą kluczy kryptograficznych jest znacznie bezpieczniejsze niż hasła, które mogą zostać złamane metodą brute force.
  • Jak?
    • Wygeneruj parę kluczy (publiczny/prywatny) na swoim lokalnym komputerze: ssh-keygen -t ed25519.
    • Skopiuj klucz publiczny na serwer: ssh-copy-id -i ~/.ssh/id_ed25519.pub user@serwer.
    • W pliku /etc/ssh/sshd_config ustaw:
      text
      PasswordAuthentication no
      PubkeyAuthentication yes
  • Uwaga: Upewnij się, że masz dostęp do klucza prywatnego przed wyłączeniem logowania hasłem!

3. Ograniczenie dostępu do konkretnych użytkowników

  • Dlaczego? Zmniejsza to powierzchnię ataku, jeśli tylko wybrani użytkownicy mogą się logować.
  • Jak? W pliku /etc/ssh/sshd_config dodaj:
    text
    AllowUsers nazwa_uzytkownika1 nazwa_uzytkownika2

4. Włączenie uwierzytelniania dwuskładnikowego (2FA)

  • Dlaczego? Dodatkowa warstwa zabezpieczeń, nawet jeśli klucz SSH zostanie skompromitowany.
  • Jak? Możesz użyć narzędzi takich jak Google Authenticator lub pam_google_authenticator. Wymaga to zainstalowania odpowiednich modułów PAM i skonfigurowania /etc/ssh/sshd_config oraz /etc/pam.d/sshd.

5. Ograniczenie czasu sesji i nieaktywnych połączeń

  • Dlaczego? Zmniejsza ryzyko wykorzystania nieaktywnych sesji.
  • Jak? W pliku /etc/ssh/sshd_config dodaj:
    text
    ClientAliveInterval 300
    ClientAliveCountMax 2
    To spowoduje, że serwer będzie sprawdzał co 5 minut, czy klient jest aktywny, i zamknie połączenie po 2 nieudanych próbach.

6. Zabezpieczenie przed atakami brute force

  • Dlaczego? Ogranicza liczbę prób logowania, co utrudnia automatyczne ataki.
  • Jak? Możesz użyć narzędzi takich jak fail2ban, które dynamicznie blokują adresy IP po wykryciu podejrzanych prób logowania.
    • Zainstaluj fail2ban: sudo apt install fail2ban (dla Debian/Ubuntu).
    • Skonfiguruj reguły dla SSH w pliku /etc/fail2ban/jail.local.

7. Regularne aktualizacje oprogramowania

  • Dlaczego? Starsze wersje OpenSSH mogą zawierać luki bezpieczeństwa.
  • Jak? Regularnie aktualizuj system i pakiet OpenSSH: sudo apt update && sudo apt upgrade (dla Debian/Ubuntu).

8. Monitorowanie logów SSH

  • Dlaczego? Pozwala wykryć podejrzane aktywności i szybko zareagować.
  • Jak? Sprawdzaj logi w /var/log/auth.log (lub /var/log/secure na niektórych systemach). Możesz skonfigurować alerty dla nieudanych prób logowania.

9. Użycie reguł zapory sieciowej na poziomie hosta

  • Dlaczego? Nawet jeśli nie możesz blokować portu na poziomie sieci, możesz ograniczyć dostęp na poziomie serwera.
  • Jak? Użyj iptables lub ufw (np. sudo ufw allow from 192.168.1.0/24 to any port 2222), jeśli masz kontrolę nad lokalnymi adresami IP.

10. Wyłączenie root logowania

  • Dlaczego? Logowanie bezpośrednio jako root jest niebezpieczne i powinno być zablokowane.
  • Jak? W pliku /etc/ssh/sshd_config ustaw:
    text
    PermitRootLogin no

Podsumowanie

Najważniejsze kroki to wyłączenie logowania hasłem, użycie kluczy SSH, zmiana portu, ograniczenie dostępu do użytkowników oraz włączenie 2FA i fail2ban. Regularne monitorowanie i aktualizacje są kluczowe dla utrzymania bezpieczeństwa.


Czy chcesz, abym pomógł Ci z konkretną konfiguracją któregoś z tych punktów? Na przykład, jak skonfigurować fail2ban lub 2FA?

Apr 13, 10:25am

This is a shared conversation and may include unverified content that doesn't reflect Mistral AI's views. Login to resume chatting.