5 najlepszych praktyk zapobiegających atakom logowania Brute Force SSH w Linux

5 najlepszych praktyk zapobiegających atakom logowania Brute Force SSH w Linux

Serwery działające Ssh są zwykle miękkim celem ataków brutalnej siły. Hakerzy ciągle wymyślają innowacyjne narzędzia programowe i boty do automatyzacji ataków brutalnej siły, co dodatkowo zwiększają ryzyko ingerencji.

W tym przewodniku badamy niektóre wskazówki, które można wdrożyć, aby zabezpieczyć swoje serwery SSH przed atakami na rynek brutalnych na dystrybucje Linux oparte na RHEL i instrumenty pochodne Debian.

Wyłącz uwierzytelnianie hasła SSH i włącz uwierzytelnianie Key SSH

Domyślna metoda uwierzytelniania Ssh Czy uwierzytelnianie nazwy użytkownika/hasła. Ale jak widzieliśmy, uwierzytelnianie hasła jest podatne na ataki z siły brutalnej. Aby być po bezpiecznej stronie, zaleca się wdrożenie uwierzytelniania SSH opartego na kluczu, w którym uwierzytelnianie jest możliwe dzięki pary kluczy publicznych i prywatnych. Klucz prywatny pozostaje na komputerze klienta, gdy klucz publiczny jest kopiowany na serwer.

Podczas uwierzytelniania klucza SSH serwer sprawdza, czy komputer klienta posiada klucz prywatny. Jeśli czek zakończy się powodzeniem, tworzona jest sesja powłoki lub polecenie wysyłane na serwer zdalny jest wykonywane pomyślnie. Mamy kompleksowy przewodnik na temat skonfigurowania uwierzytelniania opartego na kluczu SSH.

Nawet po skonfigurowaniu uwierzytelniania opartego na kluczu serwer jest nadal podatny na ataki brutalnej siły z tego prostego powodu, że uwierzytelnianie hasła jest nadal aktywne. To musi być wyłączone.

Dlatego edytuj domyślny plik konfiguracyjny SSH.

$ sudo vim/etc/ssh/sshd_config 

Ustaw HasłoAuthentication parametr do NIE jak pokazano.

Hasło Automatyka nr 
Wyłącz uwierzytelnianie hasła SSH

Następnie zapisz plik i ponownie załaduj SSH, aby zastosować zmiany.

$ sudo systemCtl Reload SSH 

Wdrożyć narzędzie zapobiegające Igle2ban Intrusion

Napisane w Pyton, Fail2ban to open source ramy zapobiegania włamaniom, które skanuje pliki dziennika usług w celu awarii uwierzytelniania i zakazów IPS, które wielokrotnie zawodzą kontrole uwierzytelniania hasła przez określony czas.

Fail2ban Ciągle monitoruje pliki dziennika serwera pod kątem prób włamań i innych nikczemnych aktywności, po predefiniowanej liczbie awarii uwierzytelnienia - w większości przypadków 3 nieudane próby logowania - Fail2ban automatycznie blokuje hosta zdalnego dostępu do serwera, a host jest przechowywany w A 'Więzienie„Przez określony czas.

W ten sposób, Fail2ban Znacząco zmniejsza szybkość niepoprawnych prób uwierzytelniania hasła. Sprawdź nasz przewodnik na temat instalacji i skonfigurowania awarii2ban w systemie Linux, aby zabezpieczyć serwer przed atakami bruteforce.

Ogranicz maksymalną liczbę prób uwierzytelnienia SSH

Kolejnym prostym sposobem ochrony serwera przed atakami brutalnej siły jest ograniczenie liczby prób logowania SSH. Domyślnie jest to ustawione 3, Ale jeśli przypadkiem jest to ustawione na wyższą wartość, ustaw go na 3 próby połączenia.

Na przykład, aby ustawić maksymalne próby połączenia na 3, ustaw Maxauthtries parametr do 3 jak pokazano

MaxAuthtries = 3 

Jeszcze raz zapisz zmiany i ponownie załaduj usługę SSH.

$ sudo systemCtl Reload SSH 

Wdrożyć opakowania TCP, aby ograniczyć dostęp do SSH od klientów

TCP Wrappers to biblioteka, która zapewnia hosta Lista kontroli dostępu (ACL) To ogranicza dostęp do usług TCP przez zdalnych klientów na podstawie ich adresów IP

Zdalne hosty od dostępu do usług w systemie. Opakowania TCP używa /etc/hosts.umożliwić I /etc/hosts.zaprzeczyć pliki konfiguracyjne (w tej kolejności) w celu ustalenia, czy klient zdalny może uzyskać dostęp do określonej usługi, czy nie.

Zwykle pliki te są komentowane, a wszystkie hosty są dozwolone przez warstwę opakowań TCP. Zasady umożliwiające dostęp do danej usługi są umieszczane w /etc/hosts.umożliwić złożyć i mieć pierwszeństwo przed regułami w /itp./Hosts.zaprzeczyć plik.

Najlepsze praktyki zaleca blokowanie wszystkich połączeń przychodzących. Dlatego otwórz /etc/hosts.zaprzeczyć plik.

$ sudo vim /etc /hosts.zaprzeczyć 

Dodaj następującą linię.

WSZYSTKO WSZYSTKO 

Zapisz zmiany i wyjdź z pliku.

Następnie uzyskaj dostęp do /etc/hosts.umożliwić plik.

$ sudo vim /etc /hosts.umożliwić 

Skonfiguruj hosty lub domeny, które mogą łączyć się z serwerem za pośrednictwem SSH, jak pokazano. W tym przykładzie zezwalamy tylko dwóm zdalnym hostom na połączenie z serwerem (173.82.227.89 I 173.82.255.55) i odmawianie reszty.

SSHD: 173.82.227.89 173.82.255.55 SSHD: Wszystko: Odmowa 
Ogranicz dostęp SSH do klientów

Zapisz zmiany i wyjdź z pliku konfiguracyjnego.

Aby to przetestować, spróbuj połączyć się z serwerem z hosta, który nie jest wśród tych, do których pozwoliłeś dostępowi. Powinieneś uzyskać błąd uprawnienia, jak pokazano.

$ ssh [e -mail chroniony] KEX_EXCHANGE_IDIDIFICACJA: odczyt: Reset połączenia przez połączenie rówieśnicze Resetuj o 173.82.235.7 Port 22 utracone połączenie 

Wdrożyć uwierzytelnianie dwóch czynników SSH

Uwierzytelnianie dwóch czynników Zapewnia dodaną warstwę bezpieczeństwa uwierzytelniania hasła, dzięki czemu serwer jest bardziej bezpieczny przed atakami brutalnej siły. Powszechnie używany Uwierzytelnianie dwóch czynników Rozwiązanie to Aplikacja Google Authenticator i mamy dobrze udokumentowany przewodnik o tym, jak możesz skonfigurować uwierzytelnianie dwóch czynników.

Wniosek

To było podsumowanie 5 najlepszych praktyk, które można wdrożyć, aby zapobiec SSH brutalna siła Zaloguj się i upewnij się, że bezpieczeństwo serwera. Możesz także przeczytać, jak zabezpieczyć i utwardzić serwer OpenSsh.