Ograniczenie dostępu do SSH

Obrazek dla Ograniczenie dostępu do SSH

Chciałbyś ograniczyć dostęp do swojego serwera SSH? Nie daje Ci spokoju możliwość że ktoś może zalogować się do Twojego serwera? W tym artykule dowiesz się, czym jest SSH, dlaczego warto wprowadzić ograniczenia dostępu oraz jakie praktyczne kroki podjąć, aby zabezpieczyć serwer SSH przed nieautoryzowanymi próbami logowania.

Co to jest SSH i na czym polega dostęp SSH?

SSH (ang. Secure Shell) to protokół sieciowy, który umożliwia bezpieczne zarządzanie urządzeniami oraz serwerami przez niezaszyfrowane sieci, takie jak Internet. Dzięki SSH możesz nawiązywać zdalne połączenia, wykonywać polecenia, zarządzać plikami i administrować systemem, korzystając z szyfrowanego kanału komunikacji.

Dostęp SSH opiera się na mechanizmach uwierzytelniania, takich jak pojedyncze hasła lub bezpieczniejsze klucze publiczne i prywatne. Klucz publiczny to część, którą udostępniasz serwerowi, natomiast klucz prywatny pozostaje tylko u Ciebie. Dzięki temu komunikacja staje się trudniejsza do przechwycenia i zapewnia wysoki poziom bezpieczeństwa podczas próby połączenia SSH.

Od administratorów serwerów przez programistów SSH to narzędzie niezbędne do codziennej pracy. Jest szczególnie przydatne w obszarach takich jak zarządzanie serwerami, automatyzacja zadań, konfiguracja usług, a także dostęp do baz danych (SQL) czy kopiowanie plików między serwerami. Bezpieczeństwo, jakie zapewnia protokół SSH, czyni go kluczowym elementem infrastruktury IT.

konsola ssh
Przykład wyglądu dostępu do serwera używając konsoli SSH.

Dlaczego warto ograniczyć dostęp do SSH i jak to zrobić?

Bezpieczeństwo w środowisku sieciowym ma kluczowe znaczenie, dlatego ograniczenie dostępu do SSH jest jednym z pierwszych kroków, jakie powinieneś podjąć, aby chronić swój serwer VPS lub serwer dedykowany przed nieautoryzowanym dostępem. Posiadając dostęp root do serwera, wdrażając kilka prostych zasad, możesz znacznie zmniejszyć ryzyko potencjalnych ataków.

Dlaczego ograniczyć dostęp do SSH?

  • Zapobieganie nieautoryzowanemu dostępowi: Hakerzy oraz automatyczne skrypty często wykorzystują techniki brute force, aby złamać hasła dostępu SSH. Ograniczenie liczby adresów IP mogących łączyć się z Twoim serwerem znacząco utrudnią te próby.
  • Zwiększenie bezpieczeństwa sieciowego: Każdy otwarty port w systemie to potencjalna luka. Ograniczając dostęp do SSH, zmniejszasz powierzchnię ataku.
  • Zmniejszenie obciążenia serwera: Często ilość prób logowania na otwarte publicznie usługi idzie w setkach logowań na minutę, odłączając tę możliwość zmniejszasz narzuty procesora na obsługę takich prób.

Jak ograniczyć dostęp do SSH?

Zmień domyślny port SSH (22).
Domyślny port SSH to 22, co sprawia, że jest pierwszym celem skanów przeprowadzanych przez potencjalnych atakujących. Aby zmienić port, edytuj plik konfiguracyjny /etc/ssh/sshd_config. Znajdź linię z numerem portu i wprowadź nowy, np.:

#Port 22
Port 1122

Po zapisaniu zmian zrestartuj usługę SSH:

systemctl restart sshd

UWAGA! Pamiętaj aby uprzednio otworzyć ten port w zaporze (firewall). Podczas wprowadzania zmian stosuj metodę podwójnego połączenia (starego i nowego), dwóch sesji, aby nie odciąć się od serwera. Aktywne połączenia SSH nie są przerywane podczas restartu usługi.

Ogranicz dostęp według adresów IP.

Możesz zdefiniować adresy IP, które mają prawo do łączenia się z Twoim serwerem SSH. Np. Twój stały publiczny domowy adres IP. Swój adres możesz sprawdzić korzystając z naszego narzędzia. Aby ograniczyć dostęp do SSH tylko z konkretnego portu dodaj regułę zapory sieciowej (np. iptables lub ufw). Przykład dla iptables:

iptables -A INPUT -p tcp -s XX.XXX.XX.XX --dport 22 -j ACCEPT

gdzie XX.XXX.XX.XXX to Twój stały publiczny adres domowy.

Ogranicz konta użytkowników.

W pliku konfiguracyjnym SSH, czyli /etc/ssh/sshd_config, możesz określić, którzy użytkownicy lub grupy użytkowników mają prawo logowania do serwera SSH, korzystając z dyrektyw AllowUsers i AllowGroups. Dzięki temu możesz precyzyjnie ograniczyć dostęp SSH wyłącznie do wybranych kont.

AllowUsers admin user1 user2

W powyższym przykładzie jedynie użytkownicy admin, user1 i user2 będą mogli zalogować się na serwer SSH. Analogicznie stosuje się AllowGroups.

Wyłącz bezpośrednie logowanie użytkownika root.

Zablokowanie możliwości logowania jako root to jeden z najważniejszych kroków. W pliku /etc/ssh/sshd_config znajdź linię:

PermitRootLogin yes

i zmień ją na:

PermitRootLogin no

Dzięki temu będziesz musiał używać innego konta z odpowiednimi uprawnieniami. Upewnij się że posiadasz takie konto. To dodatkowo zabezpieczy serwer.

Wymuś uwierzytelnianie kluczem publicznym.

Aby zablokować dostęp oparty wyłącznie na hasłach, ustaw w /etc/ssh/sshd_config:

PasswordAuthentication no

Upewnij się, że na serwerze skonfigurowano pary kluczy SSH dla użytkowników, zanim wyłączysz możliwość logowania przy użyciu hasła. Dowiedz się jak tworzyć klucze SSH z poniższego artykułu.

Przeczytaj także:
7 dobrych praktyk na serwerach VPS dla większego bezpieczeństwa
Bezpieczeństwo serwera VPS to priorytet. Poznaj 7 prostych, ale skutecznych praktyk, które zapewnią ochronę Twoich danych.
7 dobrych praktyk na serwerach VPS dla większego bezpieczeństwa

Wdrożenie dwuskładnikowego uwierzytelniania (2FA).
Dwuskładnikowe uwierzytelnianie dodaje kolejną warstwę ochrony. Narzędzia takie jak Google Authenticator mogą być używane do generowania kodów jednorazowych.

Monitorowanie logów.
Regularne przeglądanie logów SSH w /var/log/auth.log pozwala wykrywać próby nieautoryzowanego dostępu i szybciej reagować na zagrożenia.

Używanie automatycznych blokad ataków CSF, fail2ban, sshguard.

ConfigServer Security & Firewall (CSF) o zaawansowane narzędzie do zarządzania zaporą sieciową (firewall) na serwerach Linux. Dzięki CSF możesz precyzyjnie kontrolować ruch sieciowy, w tym dostęp do SSH. Ułatwia to zarządzanie regułami bezpieczeństwa dla wielu usług, w tym SSH, a co najważniejsze – pozwala na szybką reakcję, blokadę atakującego w przypadku wykrycia prób nieautoryzowanego dostępu. Więcej informacji o działaniu i konfiguracji CSF na przykładzie naszych usług z administracją znajdziesz na naszej wiki CSF – opis funkcji. | Jak to zrobić na hostingu?

Oprócz CSF warto również rozważyć narzędzia takie jak Fail2Ban czy SSHGuard, które pomagają w ochronie serwera SSH poprzez dynamiczne blokowanie adresów IP po wykryciu podejrzanej aktywności.

Warto abyś ograniczył dostęp SSH do swojego serwera wyłącznie jeśli posiadasz serwer bez administracji.

Blokada SSH – środki zapobiegawcze i potencjalne konsekwencje.

Zablokowanie dostępu do SSH to skuteczny sposób na zabezpieczenie serwera, ale jednocześnie może prowadzić do problemów, jeśli nie zostanie odpowiednio zaplanowane. Warto przestrzegać kilku zasad, aby uniknąć komplikacji.

Używaj drugiej sesji SSH.

Jeśli wprowadzisz błędną konfigurację w pliku /etc/ssh/sshd_config i zrestartujesz usługę, może się okazać, że nowo nawiązywane połączenia są blokowane. Dzięki aktywnej sesji możesz wrócić do pliku konfiguracyjnego i poprawić błędy bez konieczności fizycznego dostępu do serwera.

Podczas restartu usługi SSH klienci, którzy są już podłączeni, nie tracą połączenia. Serwer SSH umożliwia utrzymanie aktywnych sesji, ponieważ restart dotyczy tylko procesu nasłuchującego na nowo nawiązywane połączenia, a nie tych, które już zostały ustanowione. Oznacza to, że wszystkie bieżące działania w ramach aktywnych sesji SSH mogą być kontynuowane, nawet jeśli usługa SSH jest restartowana.

Stosuj kopie zapasowe konfiguracji.
Przed edycją pliku /etc/ssh/sshd_config zrób jego kopię zapasową. W razie problemów możesz szybko przywrócić poprzednie ustawienia:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Zabezpiecz adres awaryjny.
Zawsze upewnij się, że masz alternatywną metodę dostępu do serwera, np. przez konsolę KVM lub zdefiniowany adres IP, ew. dostęp fizyczny.

Ustaw limity połączeń.
Narzędzia takie jak Fail2Ban czy CSF pozwalają ograniczyć liczbę nieudanych prób logowania z jednego adresu IP. Dzięki temu zablokowanie możliwości logowania dla potencjalnych atakujących stanie się szybsze.

Potencjalne konsekwencje ograniczeń dostępu SSH.

Utrata zdalnego dostępu do serwera.
Źle skonfigurowane reguły mogą skutkować odcięciem od serwera. W takich sytuacjach jedynym rozwiązaniem może być fizyczny dostęp do maszyny.

Utrudnienia dla użytkowników.
Zbyt restrykcyjne ustawienia mogą spowodować problemy dla użytkowników legalnie korzystających z serwera. Warto regularnie przeglądać i dostosowywać konfigurację.

Nieautoryzowane próby logowania.
Mimo ograniczeń, warto monitorować logi systemowe i korzystać z narzędzi analitycznych do wykrywania podejrzanych działań.

Ograniczenie dostępu do SSH to podstawa skutecznej ochrony serwera, który nie jest objęty usługą administracji czyli opieki przez doświadczonych administratorów. Stosując powyższe metody, możesz zablokować dostęp dla niepożądanych adresów IP, zwiększyć bezpieczeństwo oraz chronić dane przed nieautoryzowanym dostępem. Pamiętaj jednak o zachowaniu balansu między bezpieczeństwem a wygodą użytkowania.

Przegląd prywatności
hitme logo

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.

Ściśle niezbędne ciasteczka

Niezbędne ciasteczka powinny być zawsze włączone, abyśmy mogli zapisać twoje preferencje dotyczące ustawień ciasteczek.

Facebook Pixel

Używamy narzędzia Facebook Pixel, aby śledzić działania użytkowników na naszej stronie internetowej. Facebook Pixel umożliwia nam analizowanie skuteczności reklam oraz tworzenie spersonalizowanych treści marketingowych. Dzięki temu możemy lepiej dostosować naszą ofertę do Twoich potrzeb. Zbierane dane mogą obejmować m.in. informacje o odwiedzonych stronach, kliknięciach oraz konwersjach.

Bezpieczna analityka

W celu lepszej analizy ruchu na naszej stronie internetowej korzystamy z narzędzia Matomo Analytics. Matomo jest hostowane w naszej infrastrukturze, a zbierane dane nie są udostępniane żadnym podmiotom zewnętrznym. Informacje o Twojej aktywności na stronie służą jedynie do analizy statystycznej oraz poprawy jakości naszych usług, zgodnie z przepisami RODO/GDPR.

Dane są w pełni anonimowe i nie są przekazywane poza naszą firmę.