cisza

Jak zabezpieczyć serwer SSH w Ubuntu 20.04 od podstawowego do zaawansowanego

Jak zabezpieczyć serwer SSH w Ubuntu 20.04 od podstawowego do zaawansowanego
Podobnie jak wszystkie inne serwery, serwer SSH jest również podatny na próby nieautoryzowanego dostępu. Dlatego za każdym razem, gdy chcesz korzystać z serwera SSH, musisz najpierw rozważyć jego zabezpieczenie, aby uchronić się przed niepożądaną sytuacją na dłuższą metę. Ogólnie termin „zabezpieczenie serwera” jest również znany jako „utwardzanie serwera”.„Można to zrobić, podejmując wiele działań. Środki te zależą od wymaganego poziomu bezpieczeństwa.

Środki zabezpieczenia serwera SSH wahają się od podstawowych do zaawansowanych i jak powiedzieliśmy wcześniej, możesz je wybrać zgodnie z wymaganym poziomem bezpieczeństwa. Możesz pominąć każdy z zalecanych środków, jeśli masz wystarczającą wiedzę na temat konsekwencji i jeśli jesteś w stanie stawić im czoła. Nigdy też nie możemy powiedzieć, że pojedynczy krok zapewni 100% bezpieczeństwa lub że jeden krok jest lepszy od drugiego.

Wszystko zależy od tego, jakiego rodzaju zabezpieczenia faktycznie potrzebujemy. Dlatego dzisiaj zamierzamy dać Ci bardzo głęboki wgląd w podstawowe i zaawansowane kroki w celu zabezpieczenia serwera SSH w Ubuntu 20.04. Oprócz tych metod, w ramach bonusu podzielimy się z Tobą dodatkowymi wskazówkami dotyczącymi zabezpieczania serwera SSH. Zacznijmy więc od dzisiejszej interesującej dyskusji.

Metoda zabezpieczenia serwera SSH w Ubuntu 20.04:

Wszystkie konfiguracje SSH są przechowywane w pliku /etc/ssh/sshd_config. Ten plik jest uważany za bardzo istotny dla normalnego funkcjonowania serwera SSH. Dlatego przed wprowadzeniem jakichkolwiek zmian w tym pliku zdecydowanie zaleca się utworzenie kopii zapasowej tego pliku, uruchamiając w terminalu następujące polecenie:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.Bak


Jeśli to polecenie zostanie wykonane pomyślnie, nie zostaną wyświetlone żadne dane wyjściowe, jak pokazano na poniższym obrazku:

Po utworzeniu kopii zapasowej tego pliku ten krok jest opcjonalny i jest wykonywany, jeśli chcesz sprawdzić wszystkie opcje, które są aktualnie włączone w tym pliku konfiguracyjnym. Możesz to sprawdzić, uruchamiając następujące polecenie w swoim terminalu:

sudo sshd -T


Aktualnie włączone opcje pliku konfiguracyjnego SSH są pokazane na poniższym obrazku. Możesz przewinąć tę listę, aby wyświetlić wszystkie opcje.

Teraz możesz zacząć zabezpieczać swój serwer SSH, przechodząc od podstawowych kroków do zaawansowanych kroków w Ubuntu 20.04.

Podstawowe kroki do zabezpieczenia serwera SSH w Ubuntu 20.04:

Podstawowe kroki do zabezpieczenia serwera SSH w Ubuntu 20.04 są następujące:

Krok nr 1: Otwarcie pliku konfiguracyjnego SSH:

Możesz otworzyć plik konfiguracyjny SSH, uruchamiając w terminalu poniższe polecenie:

sudo nano /etc/ssh/sshd_config


Plik konfiguracyjny SSH jest pokazany na poniższej ilustracji:

Krok nr 2: Wyłączanie uwierzytelniania opartego na hasłach:

Zamiast używać haseł do uwierzytelniania, klucze SSH są uważane za bezpieczniejsze. Dlatego, jeśli wygenerowałeś klucze SSH do uwierzytelniania, musisz wyłączyć uwierzytelnianie oparte na hasłach. W tym celu musisz zlokalizować zmienną „PasswordAuthentication”, odkomentować ją i ustawić jej wartość na „nie”, jak zaznaczono na poniższym obrazku:

Krok # 3: Odrzucanie/odrzucanie pustych haseł:

Czasami użytkownicy uważają, że tworzenie pustych haseł jest niezwykle wygodne, aby uchronić się przed zapamiętywaniem skomplikowanych haseł. Taka praktyka może okazać się szkodliwa dla bezpieczeństwa Twojego serwera SSH. Dlatego musisz odrzucać wszystkie próby uwierzytelnienia z pustymi hasłami. W tym celu musisz zlokalizować zmienną „PermitEmptyPasswords” i po prostu odkomentować ją, ponieważ jej wartość jest już domyślnie ustawiona na „nie”, jak pokazano na poniższym obrazku:

Krok nr 4: Zakaz logowania root:

Powinieneś surowo zabronić logowania się jako root, aby chronić każdego intruza przed uzyskaniem dostępu na poziomie root do twojego serwera. Możesz to zrobić, lokalizując zmienną „PermitRootLogin”, odkomentuj ją i ustaw jej wartość na „nie”, jak zaznaczono na poniższym obrazku:

Krok nr 5: Korzystanie z protokołu SSH 2:

Serwer SSH może działać na dwóch różnych protokołach, i.mi., Protokół 1 i Protokół 2. Protokół 2 implementuje bardziej zaawansowane funkcje bezpieczeństwa, dlatego jest preferowany w stosunku do protokołu 1. Jednak protokół 1 jest domyślnym protokołem SSH i nie jest wyraźnie wymieniony w pliku konfiguracyjnym SSH. Dlatego, jeśli chcesz pracować z protokołem 2 zamiast protokołu 1, musisz wyraźnie dodać wiersz „Protokół 2” do pliku konfiguracyjnego SSH, jak pokazano na poniższym obrazku:

Krok nr 6: Ustawianie limitu czasu sesji:

Czasami użytkownicy pozostawiają swoje komputery bez opieki na bardzo długi czas. W międzyczasie każdy intruz może nadejść i uzyskać dostęp do Twojego systemu, jednocześnie naruszając jego bezpieczeństwo. W tym miejscu w grę wchodzi koncepcja limitu czasu sesji. Ta funkcja służy do wylogowania użytkownika, jeśli pozostaje on nieaktywny przez dłuższy czas, aby żaden inny użytkownik nie mógł uzyskać dostępu do jego systemu.

Ten limit czasu można ustawić, lokalizując zmienną „ClientAliveInterval”, odkomentuj ją i przypisując jej dowolną wartość (w sekundach). W naszym przypadku przypisaliśmy mu wartość „300 sekund” lub „5 minut”. Oznacza to, że jeśli użytkownik pozostanie z dala od serwera SSH przez „300 sekund”, zostanie automatycznie wylogowany, jak pokazano na poniższym obrazku:

Krok 7: Zezwalanie określonym użytkownikom na dostęp do serwera SSH:

Serwer SSH nie jest serwerem, do którego dostępu wymagany jest każdy inny użytkownik. Dlatego jego dostęp musi być ograniczony tylko do tych użytkowników, którzy faktycznie go potrzebują. Aby umożliwić określonym użytkownikom dostęp do serwera SSH, musisz dodać zmienną o nazwie „AllowUsers” do pliku konfiguracyjnego SSH, a następnie wpisać nazwy wszystkich użytkowników, którym chcesz zezwolić na dostęp do serwera SSH, oddzielone spacją. W naszym przypadku chcieliśmy zezwolić tylko jednemu użytkownikowi na dostęp do serwera SSH. Dlatego dodaliśmy tylko jego imię, jak pokazano na poniższym obrazku:

Krok nr 8: Ograniczenie liczby prób uwierzytelnienia:

Za każdym razem, gdy użytkownik próbuje uzyskać dostęp do serwera i nie jest w stanie uwierzytelnić się po raz pierwszy, próbuje to zrobić ponownie. Użytkownik kontynuuje te próby, dopóki nie będzie w stanie się pomyślnie uwierzytelnić, a tym samym uzyskać dostęp do serwera SSH. Jest to uważane za wysoce niebezpieczną praktykę, ponieważ haker może przeprowadzić atak Brute Force (atak, który wielokrotnie próbuje odgadnąć hasło, dopóki nie zostanie znalezione właściwe dopasowanie). W rezultacie będzie mógł uzyskać dostęp do twojego serwera SSH.

Dlatego zdecydowanie zaleca się ograniczenie liczby prób uwierzytelnienia, aby zapobiec atakom polegającym na zgadywaniu hasła. Domyślna wartość prób uwierzytelnienia na serwerze SSH to „6”. Możesz to jednak zmienić w zależności od wymaganego poziomu bezpieczeństwa. W tym celu musisz zlokalizować zmienne „MaxAuthTries”, odkomentować je i ustawić ich wartość na dowolną żądaną liczbę. Chcieliśmy ograniczyć próby uwierzytelnienia do „3”, jak pokazano na poniższym obrazku:

Krok nr 9: Uruchamianie serwera SSH w trybie testowym:

Do tej pory podjęliśmy wszystkie podstawowe kroki, aby zabezpieczyć nasz serwer SSH na Ubuntu 20.04. Jednak nadal musimy się upewnić, że opcje, które właśnie skonfigurowaliśmy, działają poprawnie. W tym celu najpierw zapiszemy i zamkniemy nasz plik konfiguracyjny. Po wykonaniu tej czynności spróbujemy uruchomić nasz serwer SSH w trybie testowym. Jeśli działa pomyślnie w trybie testowym, oznacza to, że w twoim pliku konfiguracyjnym nie ma błędów. Możesz uruchomić serwer SSH w trybie testowym, uruchamiając w terminalu następujące polecenie:

sudo sshd -t


Gdy to polecenie zostanie wykonane pomyślnie, nie wyświetli żadnych danych wyjściowych na terminalu, jak pokazano na poniższym obrazku. Jeśli jednak w twoim pliku konfiguracyjnym będą jakieś błędy, uruchomienie tego polecenia spowoduje wyświetlenie tych błędów na terminalu. Będziesz wtedy miał naprawić te błędy. Tylko wtedy będziesz mógł przejść dalej.

Krok nr 10: Ponowne ładowanie serwera SSH z nowymi konfiguracjami:

Teraz, gdy serwer SSH działał pomyślnie w trybie testowym, musimy go ponownie załadować, aby mógł odczytać nowy plik konfiguracyjny, ja.mi., zmiany, które wprowadziliśmy w pliku konfiguracyjnym SSH w krokach pokazanych powyżej. Aby ponownie załadować serwer SSH nowymi konfiguracjami, musisz uruchomić następujące polecenie w swoim terminalu:

Przeładuj sshd usługi sudo


Jeśli serwer SSH zostanie pomyślnie zrestartowany, terminal nie wyświetli żadnych danych wyjściowych, jak pokazano na poniższym obrazku:

Zaawansowane kroki do zabezpieczenia serwera SSH w Ubuntu 20.04:

Po wykonaniu wszystkich podstawowych kroków w celu zabezpieczenia serwera SSH w Ubuntu 20.04, możesz wreszcie przejść do zaawansowanych kroków. To tylko krok do przodu, aby zabezpieczyć swój serwer SSH. Jeśli jednak zamierzasz osiągnąć jedynie umiarkowany poziom bezpieczeństwa, to opisane powyżej kroki będą wystarczające. Ale jeśli chcesz iść trochę dalej, możesz wykonać czynności opisane poniżej:

Krok nr 1: Otwarcie ~/.Plik ssh/authorized_keys:

Podstawowe kroki zabezpieczenia serwera SSH są zaimplementowane w pliku konfiguracyjnym SSH. Oznacza to, że te zasady będą obowiązywać dla wszystkich użytkowników, którzy będą próbować uzyskać dostęp do serwera SSH. Oznacza to również, że podstawowe kroki stanowią ogólną metodę zabezpieczania serwera SSH. Jeśli jednak spróbujemy wziąć pod uwagę zasadę „Obrona w głębi”, zdamy sobie sprawę, że musimy zabezpieczyć każdy klucz SSH z osobna. Można to zrobić, definiując wyraźne parametry bezpieczeństwa dla każdego indywidualnego klucza. Klucze SSH są przechowywane w ~/.ssh/authorized_keys, więc najpierw uzyskamy dostęp do tego pliku, aby zmodyfikować parametry bezpieczeństwa. Uruchomimy następujące polecenie w terminalu, aby uzyskać dostęp do ~/.plik ssh/authorized_keys:

sudo nano ~/.ssh/autoryzowane_klucze

Uruchomienie tego polecenia otworzy określony plik w edytorze nano. Możesz jednak użyć dowolnego innego edytora tekstu, aby otworzyć ten plik. Ten plik będzie zawierał wszystkie klucze SSH, które do tej pory wygenerowałeś.

Krok # 2: Definiowanie określonych konfiguracji dla poszczególnych kluczy:

Aby osiągnąć zaawansowany poziom bezpieczeństwa, dostępnych jest pięć następujących opcji:

Te opcje można zapisać przed dowolnym wybranym kluczem SSH, aby były dostępne dla tego konkretnego klucza. Nawet więcej niż jedną opcję można skonfigurować dla jednego klucza SSH. Na przykład, jeśli chcesz wyłączyć przekierowanie portów dla dowolnego klucza lub, innymi słowy, chcesz zaimplementować przekierowanie portów bez przekierowania dla określonego klucza, składnia będzie następująca:

brak przekierowania portów DesiredSSHKey

Tutaj, zamiast DesiredSSHKey, będziesz miał rzeczywisty klucz SSH w swoim ~/.plik ssh/authorized_keys. Po zastosowaniu tych opcji dla żądanych kluczy SSH, będziesz musiał zapisać ~/.ssh/authorized_keys i zamknij go. Zaletą tej zaawansowanej metody jest to, że nie będzie wymagała ponownego ładowania serwera SSH po wprowadzeniu tych modyfikacji. Te zmiany zostaną raczej automatycznie odczytane przez serwer SSH.

W ten sposób będziesz mógł dogłębnie zabezpieczyć każdy klucz SSH, stosując zaawansowane mechanizmy bezpieczeństwa.

Kilka dodatkowych wskazówek dotyczących zabezpieczania serwera SSH w Ubuntu 20.04:

Oprócz wszystkich podstawowych i zaawansowanych kroków, które podjęliśmy powyżej, istnieje również kilka dodatkowych wskazówek, które mogą okazać się bardzo dobre do zabezpieczenia serwera SSH w Ubuntu 20.04. Te dodatkowe wskazówki zostały omówione poniżej:

Zaszyfruj swoje dane:

Dane znajdujące się na serwerze SSH, a także te, które pozostają w drodze, muszą być zaszyfrowane, a także za pomocą silnego algorytmu szyfrowania. To nie tylko ochroni integralność i poufność Twoich danych, ale także zapobiegnie naruszeniu bezpieczeństwa całego serwera SSH.

Aktualizuj swoje oprogramowanie:

Oprogramowanie działające na Twoim serwerze SSH musi być aktualne. Ma to na celu zapewnienie, że żadne błędy bezpieczeństwa w twoim oprogramowaniu nie pozostaną bez opieki. Raczej powinny być załatane na czas. Pozwoli to uniknąć potencjalnych szkód na dłuższą metę, a także zapobiegnie awarii lub niedostępności serwera z powodu problemów z bezpieczeństwem.

Upewnij się, że SELinux jest włączony:

SELinux to mechanizm, który kładzie fundament pod bezpieczeństwo systemów opartych na Linuksie. Działa poprzez wdrożenie obowiązkowej kontroli dostępu (MAC). Implementuje ten model kontroli dostępu, definiując reguły dostępu w swojej polityce bezpieczeństwa security. Ten mechanizm jest domyślnie włączony. Użytkownicy mogą jednak zmienić to ustawienie w dowolnym momencie. Oznacza to, że mogą wyłączyć SELinux, kiedy tylko chcą. Jednak zdecydowanie zaleca się, aby zawsze mieć włączony SELinux, aby zapobiec wszelkim potencjalnym szkodom na serwerze SSH.

Użyj ścisłych zasad dotyczących haseł:

Jeśli zabezpieczyłeś swój serwer SSH hasłami, musisz stworzyć silne zasady haseł. Idealnie hasła powinny mieć więcej niż 8 znaków. Powinny być zmieniane po określonym czasie, powiedzmy co 2 miesiące. Nie powinny zawierać żadnych słów ze słownika; raczej powinny być kombinacją alfabetów, cyfr i znaków specjalnych. Podobnie możesz zdefiniować inne bardzo rygorystyczne środki dotyczące zasad dotyczących haseł, aby upewnić się, że są wystarczająco silne.

Monitoruj i utrzymuj dzienniki audytu swojego serwera SSH:

Jeśli coś pójdzie nie tak z twoim serwerem SSH, twoim pierwszym pomocnikiem mogą być dzienniki audytu. Dlatego musisz utrzymywać te dzienniki, aby móc prześledzić pierwotną przyczynę problemu. Co więcej, jeśli będziesz stale monitorować stan i działanie swojego serwera SSH, zapobiegnie to również wystąpieniu poważnych problemów.

Utrzymuj regularne kopie zapasowe swoich danych:

Last but not least, zawsze powinieneś mieć kopię zapasową całego serwera SSH. W ten sposób nie tylko uratujesz twoje dane przed uszkodzeniem lub całkowitą utratą; raczej możesz użyć tego serwera zapasowego, gdy twój główny serwer przestanie działać. Ograniczy to również czas przestoju serwera i zapewni jego dostępność.

Wniosek:

Dbając o wszystkie środki, które zostały opisane w tym artykule, możesz łatwo zabezpieczyć lub wzmocnić swój serwer SSH w Ubuntu 20.04. Jednakże, jeśli jesteś ze środowiska bezpieczeństwa informacji, musisz być świadomy tego faktu, że nie ma nic lepszego niż 100% bezpieczeństwa. Wszystko, co możemy uzyskać, to obietnica najlepszego wysiłku, a ten najlepszy wysiłek będzie bezpieczny tylko do czasu, gdy zostanie naruszony. Dlatego nawet po podjęciu wszystkich tych środków nie można powiedzieć, że Twój serwer SSH jest w 100% bezpieczny; raczej nadal może mieć takie luki, o których mogłeś nawet nie pomyśleć. Takimi lukami można się zająć tylko wtedy, gdy bacznie obserwujemy nasz serwer SSH i aktualizujemy go zawsze, gdy jest to wymagane.

Gry How to download and Play Sid Meier's Civilization VI on Linux
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
Gry How to Install and Play Doom on Linux
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Gry Vulkan for Linux Users
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...