SSH jest szeroko stosowanym protokołem używanym do bezpiecznego dostępu do serwerów Linux. Większość użytkowników używa połączeń SSH z ustawieniami domyślnymi do łączenia się ze zdalnym serwerem. Jednak niezabezpieczone konfiguracje domyślne stwarzają również różne zagrożenia bezpieczeństwa.

Konto root serwera z otwartym dostępem SSH może być zagrożone. A zwłaszcza jeśli używasz publicznego adresu IP, znacznie łatwiej jest zhakować hasło roota. Dlatego niezbędna jest wiedza na temat bezpieczeństwa SSH.

Oto, jak możesz zabezpieczyć połączenia z serwerem SSH w systemie Linux.

1. Wyłącz logowanie użytkownika root

W tym celu najpierw wyłącz dostęp SSH użytkownika root i utwórz nowego użytkownika z uprawnieniami root. Wyłączenie dostępu do serwera dla użytkownika root jest strategią obrony, która uniemożliwia atakującym osiągnięcie celu, jakim jest wtargnięcie do systemu. Na przykład możesz utworzyć użytkownika o nazwie przykład root następująco:

useradd -m przykład root
hasło przykład root
usermod -aG sudo exampleroot

Oto krótkie wyjaśnienie wyżej wymienionych poleceń:

  • useradd tworzy nowego użytkownika, a -m parametr tworzy folder pod Dom katalog dla utworzonego użytkownika.
  • The hasło komenda służy do przypisania hasła nowemu użytkownikowi. Pamiętaj, że hasła, które przypisujesz użytkownikom, powinny być złożone i trudne do odgadnięcia.
  • usermod -aG sudo dodaje nowo utworzonego użytkownika do grupy admin.

Po zakończeniu procesu tworzenia użytkownika konieczne jest wprowadzenie pewnych zmian w sshd_config plik. Możesz znaleźć ten plik na /etc/ssh/sshd_config. Otwórz plik dowolnym edytorem tekstu i wprowadź w nim następujące zmiany:

# Uwierzytelnianie: 
#LoginGraceTime 2m
PermitRootZaloguj się nie
AllowUsers przykładowy katalog główny

ZezwolenieRootZaloguj line uniemożliwi użytkownikowi root uzyskanie zdalnego dostępu za pomocą SSH. Włącznie z przykład root w Zezwól Użytkownikom lista nadaje użytkownikowi niezbędne uprawnienia.

Na koniec uruchom ponownie usługę SSH za pomocą następującego polecenia:

sudo systemctl restart ssh

Jeśli to się nie powiedzie i pojawi się komunikat o błędzie, wypróbuj poniższe polecenie. Może się to różnić w zależności od używanej dystrybucji Linuksa.

sudo systemctl restart sshd

2. Zmiana portu domyślnego

Domyślny port połączenia SSH to 22. Oczywiście wszyscy atakujący wiedzą o tym i dlatego konieczna jest zmiana domyślnego numeru portu, aby zapewnić bezpieczeństwo SSH. Chociaż atakujący może łatwo znaleźć nowe numer portu ze skanem Nmap, celem jest utrudnienie pracy napastnikowi.

Aby zmienić numer portu, otwórz /etc/ssh/sshd_config i dokonaj następujących zmian w pliku:

Włączać /etc/ssh/sshd_config.d/*.conf
Port 5922

Po tym kroku ponownie uruchom usługę SSH za pomocą sudo systemctl restart ssh. Teraz możesz uzyskać dostęp do serwera za pomocą właśnie zdefiniowanego portu. Jeśli korzystasz z zapory, również tam musisz dokonać niezbędnych zmian w regułach. O prowadzeniu netstat -tlpn polecenie, widać, że zmienił się numer portu dla SSH.

3. Blokuj dostęp dla użytkowników z pustymi hasłami

W Twoim systemie mogą znajdować się użytkownicy bez haseł, których mogłeś przypadkowo utworzyć. Aby uniemożliwić takim użytkownikom dostęp do serwerów, możesz ustawić Zezwól na puste hasła wartość linii w sshd_config plik do nie.

Zezwól na pusteHasła nie

4. Ograniczenie prób logowania/dostępu

Domyślnie możesz uzyskać dostęp do serwera, wykonując tyle prób hasła, ile chcesz. Jednak osoby atakujące mogą wykorzystać tę lukę do brutalnego wymuszenia na serwerze. Możesz automatycznie zakończyć połączenie SSH po określonej liczbie prób, określając liczbę dozwolonych prób hasła.

W tym celu zmień MaxAuthTries wartość w sshd_config plik.

Maksymalna liczba prób 3

5. Korzystanie z protokołu SSH w wersji 2

Druga wersja SSH została wydana z powodu wielu luk w pierwszej wersji. Domyślnie możesz umożliwić serwerowi korzystanie z drugiej wersji, dodając Protokół parametr do twojego sshd_config plik. W ten sposób wszystkie przyszłe połączenia będą korzystać z drugiej wersji SSH.

Włączać /etc/ssh/sshd_config.d/*.conf 
Protokół 2

6. Wyłączanie przekierowywania portów TCP i przekierowywania X11

Atakujący mogą próbować uzyskać dostęp do innych Twoich systemów, przekierowując porty przez połączenia SSH. Aby temu zapobiec, możesz wyłączyć Zezwalaj na przekazywanie Tcp oraz X11 Przekazywanie cechy w sshd_config plik.

X11 Przekazywanie nie 
Zezwól na przekazywanie Tcp nie

7. Łączenie za pomocą klucza SSH

Jednym z najbezpieczniejszych sposobów łączenia się z serwerem jest użycie klucza SSH. Korzystając z klucza SSH, możesz uzyskać dostęp do serwera bez hasła. Dodatkowo możesz całkowicie wyłączyć dostęp hasłem do serwera, zmieniając parametry związane z hasłem w sshd_config plik.

Podczas tworzenia klucza SSH są dwa klucze: Publiczny oraz Prywatny. Klucz publiczny jest przesyłany na serwer, z którym chcesz się połączyć, a klucz prywatny jest przechowywany na komputerze, za pomocą którego nawiążesz połączenie.

Utwórz klucz SSH za pomocą ssh-keygen polecenie na swoim komputerze. Nie zostawiaj Hasło pole puste i zapamiętaj hasło, które tutaj wpisałeś. Jeśli zostawisz to pole puste, będziesz mieć do niego dostęp tylko za pomocą pliku klucza SSH. Jeśli jednak ustawisz hasło, możesz uniemożliwić osobie atakującej dostęp do pliku klucza. Jako przykład możesz utworzyć klucz SSH za pomocą następującego polecenia:

ssh-keygen

8. Ograniczenia IP dla połączeń SSH

W większości przypadków zapora blokuje dostęp przy użyciu struktur własnych standardów i ma na celu ochronę serwera. Jednak to nie zawsze wystarczy i trzeba zwiększyć ten potencjał bezpieczeństwa.

Aby to zrobić, otwórz /etc/hosts.allow plik. Dzięki dodatkom wprowadzanym do tego pliku możesz ograniczyć uprawnienia SSH, zezwolić na określony blok IP lub wprowadzić pojedynczy adres IP i zablokować wszystkie pozostałe adresy IP za pomocą polecenia odmów.

Poniżej zobaczysz kilka przykładowych ustawień. Po wykonaniu tych czynności zrestartuj usługę SSH jak zwykle, aby zapisać zmiany.

Znaczenie bezpieczeństwa serwera Linux

Kwestie bezpieczeństwa danych i danych są dość szczegółowe i powinny być brane pod uwagę przez wszystkich administratorów serwerów. Bezpieczeństwo serwerów to bardzo delikatna kwestia, ponieważ głównym celem ataków są serwery internetowe, które zawierają prawie wszystkie informacje o systemie. Ponieważ większość serwerów działa na infrastrukturze Linux, bardzo ważne jest, aby znać system Linux i administrację serwerami.

Bezpieczeństwo SSH to tylko jeden ze sposobów ochrony serwerów. Możliwe jest zminimalizowanie otrzymywanych obrażeń, zatrzymując, blokując lub spowalniając atak. Oprócz zapewnienia bezpieczeństwa SSH, istnieje wiele różnych metod, które możesz wdrożyć, aby zabezpieczyć swoje serwery z systemem Linux.