Środki zabezpieczenia serwera SSH w zakresie od podstawowych do zaawansowanych, i jak powiedzieliśmy wcześniej, możesz je odebrać zgodnie z potrzebnym poziomem bezpieczeństwa. Możesz pominąć dowolne z określonych środków, jeśli masz wystarczającą wiedzę na temat konsekwencji i jeśli jesteś w dobrej pozycji, aby się z nimi stawić. Nigdy nie możemy powiedzieć, że jeden krok zapewni 100% bezpieczeństwa lub określony krok jest lepszy od drugiego.
Wszystko zależy od tego rodzaju bezpieczeństwa. 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 będziemy również udostępniać Ci kilka dodatkowych wskazówek dotyczących zabezpieczenia serwera SSH jako bonus. Zacznijmy więc od dzisiejszej ciekawej dyskusji.
Metoda zabezpieczenia serwera SSH w Ubuntu 20.04:
Wszystkie konfiguracje SSH są przechowywane w pliku ITC/ETC/SSH/SSHD_CONFIG. Ten plik jest uważany za bardzo ważne dla normalnego funkcjonowania twojego serwera SSH. Dlatego przed wprowadzeniem jakichkolwiek zmian w tym pliku zdecydowanie zaleca się utworzenie kopii zapasowej tego pliku, uruchamiając następujące polecenie w terminalu:
sudo cp/etc/ssh/sshd_config/etc/ssh/sshd_config.Bak
Jeśli to polecenie zostanie pomyślnie wykonane, nie zostaniesz przedstawiony ż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ąć w dół tę listę, aby wyświetlić wszystkie opcje.
Teraz możesz zacząć zabezpieczać swój serwer SSH podczas przejścia z podstawowych kroków do zaawansowanych kroków w Ubuntu 20.04.
Podstawowe kroki w celu zabezpieczenia serwera SSH w Ubuntu 20.04:
Podstawowe kroki w zakresie zabezpieczenia serwera SSH w Ubuntu 20.04 są następujące:
Krok 1: Otwarcie pliku konfiguracyjnego SSH:
Możesz otworzyć plik konfiguracyjny SSH, uruchamiając polecenie określone poniżej w terminalu:
sudo nano/etc/ssh/sshd_config
Plik konfiguracyjny SSH jest pokazany na poniższym obrazku:
Krok 2: Wyłączanie uwierzytelniania opartego na hasłach:
Zamiast używać haseł do uwierzytelnienia, klucze SSH są uważane za bardziej bezpieczne. Dlatego jeśli wygenerowałeś klucze SSH do uwierzytelnienia, musisz wyłączyć uwierzytelnianie oparte na hasłach. W tym celu musisz zlokalizować zmienną „hasłoAuthentication”, odkształcić ją i ustawić jej wartość na „nie”, jak podkreślono na obrazie pokazanym poniżej:
Krok # 3: Odrzucanie/ odmawianie pustych haseł:
Czasami użytkownicy uważają za niezwykle wygodne tworzenie pustych haseł w celu zapisania się przed zapamiętywaniem złożonych haseł. Ta praktyka może okazać się szkodliwe dla bezpieczeństwa Twojego serwera SSH. Dlatego musisz odrzucić wszystkie próby uwierzytelnienia za pomocą pustych haseł. W tym celu musisz zlokalizować zmienną „pozwolenie na słowa” i po prostu ją odkształcić, ponieważ jej wartość jest już ustawiona na „nie”, jak podkreślono na poniższym obrazku:
Krok # 4: Zakaz logowania korzenia:
Powinieneś ściśle zabrać loginy root do ochrony jakiegokolwiek intruza przed uzyskaniem dostępu do poziomu na serwerze. Możesz to zrobić, zlokalizując zmienną „Pertrootlogin”, odkształcenie jej i ustawiając jej wartość na „nie”, jak podkreślono na obrazie pokazanym poniżej:
Krok # 5: Korzystanie z protokołu SSH 2:
SERW SSH może działać na dwóch różnych protokołach, i.mi., Protokół 1 i protokół 2. Protokół 2 wdraża bardziej zaawansowane funkcje bezpieczeństwa, dlatego jest preferowany przez protokół 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 jawnie dodać wiersz „Protokół 2” do swojego pliku konfiguracyjnego SSH, jak wyróżniono na poniższym obrazku:
Krok # 6: Ustawienie limitu czasu sesji:
Czasami użytkownicy pozostawiają swoje komputery bez opieki na bardzo długi czas. Tymczasem każdy intruz może przyjść i uzyskać dostęp do systemu, jednocześnie naruszając jego bezpieczeństwo. Tutaj pojawia się koncepcja limitu czasu sesji. Ta funkcja służy do wylogowania użytkownika, jeśli pozostaje nieaktywny przez długi czas, aby żaden inny użytkownik nie mógł uzyskać dostępu do swojego systemu.
Ten limit czasu można ustawić, zlokalizując zmienną „ClientAliveInterval”, odkształcenie jej i przypisanie dowolnej wartości (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”, wówczas zostanie on automatycznie wylogowany jak wyróżniono na obrazie pokazanym poniżej:
Krok 7: Umożliwienie określonym użytkownikom dostępu do serwera SSH:
Serwer SSH nie jest serwerem, którego dostęp jest wymagany przez każdego innego użytkownika. Dlatego jego dostęp musi być ograniczony tylko do tych użytkowników, którzy go potrzebują. Aby umożliwić konkretnym użytkownikom dostęp do serwera SSH, musisz dodać zmienną o nazwie „Uprawle” do pliku konfiguracyjnego SSH, a następnie zapisać nazwy wszystkich użytkowników, których chcesz umożliwić dostęp do serwera SSH oddzielonego przez przestrzeń. W naszym przypadku chcieliśmy pozwolić tylko jednemu użytkownikowi uzyskać dostęp do serwera SSH. Właśnie dlatego dodaliśmy jego nazwę, jak podkreślono na poniższym obrazku:
Krok # 8: Ograniczanie liczby prób uwierzytelnienia:
Ilekroć 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 wciąż podejmuje te próby, dopóki nie będzie w stanie uwierzytelnić się, aby uzyskać dostęp do serwera SSH. Jest to uważane za bardzo niepewną praktykę, ponieważ haker może rozpocząć atak brutalnej siły (atak, który wielokrotnie próbuje odgadnąć hasło do momentu znalezienia odpowiedniego meczu). W rezultacie będzie mógł uzyskać dostęp do twojego serwera SSH.
Dlatego zdecydowanie zaleca się ograniczenie liczby prób uwierzytelnienia, aby zapobiec zgadywaniem haseł ataków. Domyślna wartość prób uwierzytelnienia na serwerze SSH jest ustawiona na „6”. Możesz jednak to zmienić w zależności od wymaganego poziomu bezpieczeństwa. W tym celu musisz zlokalizować zmienne „MaxAuthtries”, odkształcić je i ustawić jej wartość na dowolną pożądaną liczbę. Chcieliśmy ograniczyć próby uwierzytelnienia do „3”, jak podkreślono na obrazie pokazanym poniżej:
Krok # 9: Uruchamianie serwera SSH w trybie testowym:
Do tej pory podjęliśmy wszystkie podstawowe kroki w celu zabezpieczenia naszego serwera SSH na Ubuntu 20.04. Jednak nadal musimy upewnić się, że opcje, które właśnie skonfigurowaliśmy, działają poprawnie. W tym celu najpierw zapisamy i zamkniemy nasz plik konfiguracyjny. Po wykonaniu tego postaramy się uruchomić nasz serwer SSH w trybie testowym. Jeśli uruchomi się pomyślnie w trybie testowym, oznacza to, że w pliku konfiguracyjnym nie ma błędów. Możesz uruchomić swój serwer SSH w trybie testowym, uruchamiając następujące polecenie w terminalu:
sudo sshd -t
Gdy to polecenie zostanie pomyślnie wykonane, nie wyświetli żadnego wyjścia na terminalu, jak pokazano na poniższym obrazku. Jeśli jednak pojawią się jakieś błędy w pliku konfiguracyjnym, uruchomienie tego polecenia udzieli tych błędów na terminalu. Następnie będziesz miał naprawić te błędy. Tylko wtedy będziesz mógł kontynuować.
Krok # 10: Załadowanie serwera SSH za pomocą nowych konfiguracji:
Teraz, gdy serwer SSH działał pomyślnie w trybie testowym, musimy go ponownie załadować, aby mógł odczytać nowy plik konfiguracyjny, i.mi., zmiany, które wprowadziliśmy w pliku konfiguracyjnym SSH w wyżej pokazanych krokach. Aby ponownie załadować serwer SSH za pomocą nowych konfiguracji, musisz uruchomić następujące polecenie w terminalu:
sudo service sshd Reload
Jeśli Twój serwer SSH zostanie ponownie uruchomiony, terminal nie wyświetli żadnego wyjścia, jak pokazano na poniższym obrazku:
Zaawansowane kroki w celu zabezpieczenia serwera SSH w Ubuntu 20.04:
Po wykonaniu wszystkich podstawowych kroków w zakresie zabezpieczenia serwera SSH w Ubuntu 20.04, możesz w końcu udać się do zaawansowanych kroków. To tylko krok naprzód, aby zabezpieczyć serwer SSH. Jeśli jednak zamierzasz tylko osiągnąć umiarkowany poziom bezpieczeństwa, kroki opisane powyżej będą wystarczające. Ale jeśli chcesz pójść nieco dalej, możesz wykonać kroki wyjaśnione poniżej:
Krok # 1: Otwarcie ~/.plik ssh/autoryzowany_keys:
Podstawowe etapy zabezpieczenia serwera SSH są zaimplementowane w pliku konfiguracyjnym SSH. Oznacza to, że te zasady będą dobre dla wszystkich użytkowników, którzy będą próbować uzyskać dostęp do serwera SSH. Oznacza również, że podstawowe kroki reprezentują ogólną metodę zabezpieczenia serwera SSH. Jeśli jednak spróbujemy rozważyć zasadę „dogłębnej obrony”, zdamy sobie sprawę, że musimy zabezpieczyć każdy klucz SSH osobno. Można to zrobić, definiując wyraźne parametry bezpieczeństwa dla każdego klucza. Klucze SSH są przechowywane w ~/.plik ssh/autoryzowany_keys, więc najpierw uzyskujemy dostęp do tego pliku, aby zmodyfikować parametry bezpieczeństwa. Uruchomimy następujące polecenie w terminalu, aby uzyskać dostęp do ~//.plik ssh/autoryzowany_keys:
sudo nano ~/.ssh/autoryzowane_keys
Uruchomienie tego polecenia otworzy określony plik z nano edytorem. Możesz jednak użyć dowolnego innego edytora tekstu, aby otworzyć ten plik. Ten plik będzie zawierał wszystkie wygenerowane do tej pory klucze SSH.
Krok 2: Definiowanie określonych konfiguracji dla poszczególnych kluczy:
W celu osiągnięcia zaawansowanego poziomu bezpieczeństwa dostępne są następujące pięć opcji:
Te opcje można zapisać przed dowolnym wybranym kluczem SSH, aby udostępnić je dla tego konkretnego klucza. Nawet więcej niż jedna opcja można również skonfigurować dla jednego klucza SSH. Na przykład chcesz wyłączyć przekazywanie portów dla dowolnego konkretnego klucza lub, innymi słowy, chcesz zaimplementować nie-portfel dla określonego klucza, wówczas składnia będzie następująca:
Bezporty do przodu pożądanego
Tutaj, zamiast pożądanegoSshkey, będziesz mieć rzeczywisty klucz SSH w swoim ~//.plik ssh/autoryzowany_keys. Po zastosowaniu tych opcji dla żądanych kluczy SSH, będziesz musiał zapisać ~//.ssh/autoryzowane plik_keys i zamknij go. Dobrym tym w tej zaawansowanej metodzie jest to, że nie będzie ona wymagać ponownie załadowania serwera SSH po dokonaniu tych modyfikacji. Raczej zmiany te zostaną odczytane przez Twój serwer SSH.
W ten sposób będziesz mógł dogłębić każdy klucz SSH, stosując zaawansowane mechanizmy bezpieczeństwa.
Kilka dodatkowych wskazówek dotyczących zabezpieczenia serwera SSH w Ubuntu 20.04:
Oprócz wszystkich podstawowych i zaawansowanych kroków, które podjęliśmy powyżej, istnieją 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:
Utrzymuj swoje dane zaszyfrowane:
Dane, które znajdują się na serwerze SSH, a także te, które pozostają w tranzycie, muszą być zaszyfrowane, a także z silnym algorytmem szyfrowania. To nie tylko ochroni integralność i poufność danych, ale także uniemożliwi bezpieczeństwo całego serwera SSH przedszczepienie.
Utrzymuj swoje oprogramowanie na bieżąco:
Oprogramowanie działające na serwerze SSH musi być aktualne. Odbywa się to, aby upewnić się, że żadne błędy bezpieczeństwa w oprogramowaniu nie pozostają bez opieki. Raczej należy je dobrze załatać na czas. Pozwoli to zaoszczędzić od wszelkich potencjalnych szkód na dłuższą metę, a także uniemożliwi Twojemu serwerowi upadek lub niedostępność z powodu problemów z bezpieczeństwem.
Upewnij się, że Selinux jest włączony:
Selinux to mechanizm, który określa kamień węgielny bezpieczeństwa w systemach opartych na Linuksie. Działa poprzez wdrożenie obowiązkowej kontroli dostępu (MAC). Wdraża ten model kontroli dostępu, definiując reguły dostępu w swojej polityce bezpieczeństwa. Ten mechanizm jest domyślnie włączony. Jednak użytkownicy mogą zmienić to ustawienie w dowolnym momencie. Oznacza to, że mogą wyłączyć Selinux, kiedy tylko chcą. Jednak zdecydowanie zaleca się, aby zawsze włączyć Selinux, aby mógł zapobiec serwera SSH przed wszystkimi potencjalnymi szkodami.
Użyj surowych zasad haseł:
Jeśli chroniłeś swój serwer SSH za pomocą haseł, musisz utworzyć silne zasady haseł. Idealnie, hasła powinny mieć więcej niż 8 znaków. Należy je zmienić po określonym czasie, powiedzmy, po co 2 miesiące. Nie powinny zawierać żadnych słowników; Powinny raczej być kombinacją alfabetów, liczb i znaków specjalnych. Podobnie możesz zdefiniować inne dodatkowe ścisłe środki dla swoich zasad haseł, aby upewnić się, że są one wystarczająco silne.
Monitoruj i utrzymuj dzienniki audytu swojego serwera SSH:
Jeśli coś pójdzie nie tak z serwerem SSH, pierwszym pomocnikiem może być dzienniki audytu. Dlatego musisz nadal utrzymywać te dzienniki, abyś mógł wyśledzić podstawową przyczynę problemu. Ponadto, jeśli ciągle monitorujesz zdrowie i działanie serwera SSH, to zapobiegnie to również wystąpieniu poważnych problemów.
Utrzymuj regularne kopie zapasowe swoich danych:
Wreszcie, zawsze powinieneś zachować kopię zapasową całego swojego serwera SSH. Wykonanie tego nie tylko zapisze twoje dane przed uszkodzeniem lub całkowicie utraconym; Możesz raczej użyć tego serwera kopii zapasowych, gdy główny serwer upada. Ograniczy to również przestoje serwera i zapewni jego dostępność.
Wniosek:
Zajmując się wszystkimi środkami przepisanymi w tym artykule, możesz łatwo zabezpieczyć lub utwardzić swój serwer SSH w Ubuntu 20.04. Jeśli jednak pochodzisz z tła bezpieczeństwa informacji, musisz być świadomy tego faktu, że nie ma nic takiego jak 100% bezpieczeństwa. Wszystko, co możemy uzyskać, to najlepszy wysiłek, a najlepszy wysiłek będzie bezpieczny do momentu, gdy zostanie również naruszony. Dlatego nawet po podjęciu wszystkich tych środków nie możesz powiedzieć, że Twój serwer SSH jest w 100% bezpieczny; raczej może mieć takie luki, o których nigdy nie pomyślałeś. Takie podatności można zająć tylko wtedy, gdy obserwujemy nasz serwer SSH i nadal go aktualizujemy, gdy jest to wymagane.