Jak zainstalować Fail2Ban, aby chronić SSH na CentOS/RHEL 8
Fail2ban to bezpłatne, szeroko stosowane narzędzie do zapobiegania włamaniom o otwartym kodzie źródłowym, które skanuje pliki dziennika w poszukiwaniu adresów IP, które wykazują złośliwe oznaki, takie jak zbyt wiele niepowodzeń haseł i wiele innych, a także blokuje je (aktualizuje zaporę sieciową zasady odrzucania adresów IP). Domyślnie jest dostarczany z filtrami dla różnych usług, w tym sshd.
Przeczytaj także: Wstępna konfiguracja serwera z CentOS/RHEL 8
W tym artykule wyjaśnimy, jak zainstalować i skonfigurować fail2ban, aby chronić SSH i poprawić bezpieczeństwo serwera SSH przed atakami brute-force na CentOS/RHEL 8.
Instalowanie Fail2ban na CentOS/RHEL 8
Pakiet fail2ban nie znajduje się w oficjalnych repozytoriach, ale jest dostępny w repozytorium EPEL. Po zalogowaniu się do systemu uzyskaj dostęp do interfejsu wiersza poleceń, a następnie włącz repozytorium EPEL w swoim systemie, jak pokazano.
dnf install epel-release
OR
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Następnie zainstaluj pakiet Fail2ban, uruchamiając następujące polecenie.
dnf install fail2ban
Konfigurowanie Fail2ban do ochrony SSH
Pliki konfiguracyjne fail2ban znajdują się w katalogu /etc/fail2ban/, a filtry są przechowywane w katalogu /etc/fail2ban/filter.d/ katalog (plik filtra dla sshd to /etc/fail2ban/filter.d/sshd.conf).
Globalny plik konfiguracyjny dla serwera Fail2ban to /etc/fail2ban/jail.conf, jednak nie zaleca się bezpośredniej modyfikacji tego pliku, gdyż prawdopodobnie zostanie on nadpisany lub poprawiony w przypadku pakietu uaktualnić w przyszłości.
Alternatywnie zaleca się utworzenie i dodanie konfiguracji w pliku jail.local lub oddzielnych plikach .conf
w katalogu /etc/fail2ban/jail. d/ katalog. Pamiętaj, że parametry konfiguracyjne ustawione w jail.local zastąpią wszystko, co jest zdefiniowane w jail.conf.
Na potrzeby tego artykułu utworzymy osobny plik o nazwie jail.local w katalogu /etc/fail2ban/, jak pokazano.
vi /etc/fail2ban/jail.local
Po otwarciu pliku skopiuj i wklej w nim poniższą konfigurację. Sekcja [DEFAULT]
zawiera opcje globalne, a sekcja [sshd]
zawiera parametry więzienia sshd.
[DEFAULT]
ignoreip = 192.168.56.2/24
bantime = 21600
findtime = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd
[sshd]
enabled = true
Wyjaśnijmy pokrótce opcje w powyższej konfiguracji:
- ignoreip: określa listę adresów IP lub nazw hostów, które nie mają być blokowane.
- bantime: określ liczbę sekund, na jaką host jest blokowany (tj. efektywny czas trwania bana).
- maxretry: określa liczbę błędów, po których host zostanie zbanowany.
- findtime: fall2ban zbanuje hosta, jeśli wygenerował „maxretry” w ciągu ostatnich sekund „findtime”.
- banacja: blokowanie akcji.
- backend: określa backend używany do pobierania modyfikacji pliku dziennika.
Powyższa konfiguracja oznacza zatem, że jeśli adres IP zawiódł 3 razy w ciągu ostatnich 5 minut, należy go zablokować na 6 godzin i zignorować Adres IP 192.168.56.2.
Następnie uruchom i włącz na razie usługę fail2ban i sprawdź, czy działa, używając następującego polecenia systemctl.
systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban
Monitorowanie nieudanego i zablokowanego adresu IP przy użyciu klienta Fail2ban
Po skonfigurowaniu fail2ban w celu zabezpieczenia sshd, możesz monitorować uszkodzone i zbanowane adresy IP za pomocą klienta Fail2ban. Aby wyświetlić bieżący status serwera Fail2ban, uruchom następującą komendę.
fail2ban-client status
Aby monitorować więzienie sshd, uruchom.
fail2ban-client status sshd
Aby odblokować adres IP w Fail2ban (we wszystkich więzieniach i bazach danych), uruchom następującą komendę.
fail2ban-client unban 192.168.56.1
Aby uzyskać więcej informacji na temat Fail2ban, przeczytaj następujące strony podręcznika.
man jail.conf
man fail2ban-client
To podsumowuje ten przewodnik! Jeśli masz jakieś pytania lub przemyślenia, którymi chcesz się podzielić na ten temat, nie wahaj się z nami skontaktować za pośrednictwem poniższego formularza opinii.