- Wdrożenie systemu dynamicznego blokowania adresów IP w oparciu o analizę logów dostępowych.
- Korzystanie z plików konfiguracyjnych .local w celu zapobiegania utracie ustawień podczas aktualizacji systemu.
- Możliwość ochrony wielokanałowej dla krytycznych usług, takich jak SSH, serwery WWW, bazy danych i FTP.
- Zarządzanie banami i odbanowywaniem w czasie rzeczywistym przy użyciu narzędzia wiersza poleceń fail2ban-client.
Wystawienie serwera Linux na działanie sieci to w zasadzie magnes dla botów. Jeśli nie skonfigurowałeś żadnych zabezpieczeń, prawdopodobnie masz już w logach tysiące nieudanych prób logowania; zautomatyzowane maszyny nieustannie próbują wprowadzić kombinację nazwy użytkownika i hasła, aby przejąć kontrolę nad Twoim komputerem za pomocą ataków siłowych.
Tu właśnie pojawia się Fail2ban, narzędzie, które działa jak niestrudzony strażnik. Nie jest to zapora sieciowa w najściślejszym tego słowa znaczeniu, ale analizuje logi systemowe i, gdy wykryje, że ktoś próbuje się włamać, zatrzaskuje mu drzwi przed nosem, blokując adres IP za pomocą narzędzi takich jak iptables lub nftables. Zobaczmy, jak skonfigurować Fail2ban, aby Twój serwer był twardym orzechem do zgryzienia.
Czym dokładnie jest Fail2ban i jak działa?
Mówiąc najprościej, Fail2ban to demon, który stale monitoruje pliki dziennika usług. Gdy znajdzie podejrzane wzorce pasujące do predefiniowanych reguł, zwanych filtrami , rozpoczyna zliczanie błędów. Jeśli adres IP osiągnie limit dozwolonych prób w określonym czasie, program wykonuje działanie , które zazwyczaj polega na dodaniu tego adresu IP do czarnej listy zapory sieciowej.
Konfiguracje te są zorganizowane w tzw. więzienia . Więzienie to zasadniczo zestaw reguł stosowanych do konkretnej usługi (takiej jak SSH, Apache lub MySQL). W ten sposób można mieć bardzo rygorystyczną politykę dostępu zdalnego i bardziej liberalną dla serwera WWW, zapewniając automatyczne blokowanie intruzów bez konieczności ręcznego sprawdzania logów co pięć minut.

Instalacja zgodnie z dystrybucją Linuxa
Polecenie instalacji różni się nieznacznie w zależności od używanego systemu, ale generalnie jest ono dostępne w niemal wszystkich oficjalnych repozytoriach.
- W Ubuntu i Debianie: To bardzo proste, wystarczy biec
sudo apt updatenastępniesudo apt install fail2ban. - W systemach Rocky Linux i AlmaLinux: Ponieważ są to dystrybucje Enterprise, należy najpierw włączyć repozytorium EPEL za pomocą
sudo dnf install epel-releasea następnie zainstaluj pakiet za pomocąsudo dnf install fail2ban fail2ban-firewalld. - W systemie Alpine Linux: Użyj menedżera APK z
sudo apk add fail2banPonieważ korzysta z OpenRC, należy włączyć tę funkcję za pomocąsudo rc-update add fail2ban defaulti zacznij odsudo rc-service fail2ban start.

Konfiguracja główna: sekret pliku .local
Bardzo częstym błędem jest bezpośrednia edycja pliku. jail.confNie rób tego! Ten plik może zostać nadpisany podczas aktualizacji systemu. Złotą zasadą jest utworzenie kopii o nazwie jail.localWszystkie parametry dodane do drugiego pliku będą miały pierwszeństwo przed parametrami oryginalnymi, a zmiany zostaną nadpisane. bezpieczny przed aktualizacjami.
Na początek możesz sklonować oryginalny plik za pomocą sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local a następnie otwórz go w ulubionym edytorze, takim jak nano lub vim. W sekcji [DEFAULT] W tym miejscu definiujesz ogólne zachowanie systemu:
- czas banicji: Czas, przez który złośliwy adres IP pozostanie zamrożony. Może być wyrażony w sekundach lub minutach (np. 10 minut).
- findtime: Przedział czasu, w którym Fail2ban sprawdza błędy. Jeśli ktoś popełni błąd 5 razy w ciągu godziny, ale czas znalezienia błędu wynosi 10 minut, nie zostanie zbanowany.
- maksretry: Liczba nieudanych prób, które mogą wystąpić przed wyświetleniem komunikatu przez system Wystarczy i zablokuj IP.
- ignorujip: Niezbędne, aby uniknąć bana. Tutaj musisz wpisać swój publiczny adres IP lub zasięg Twojej sieci VPN.

Ochrona konkretnych usług krok po kroku
Po skonfigurowaniu ustawień ogólnych nadszedł czas na aktywację jailów dla usług, które najbardziej Cię niepokoją. Aby ochrona działała, musisz ją skonfigurować. enabled = true w odpowiedniej sekcji w ramach jail.local.
Dostęp SSH (najbardziej krytyczny punkt)
Port 22 jest celem numer jeden. Solidna konfiguracja zdefiniowałaby maxretry = 3 oraz bantime = 3600 (jedna godzina). Fail2ban odczyta plik. /var/log/auth.log (na Debianie/Ubuntu) lub / var / log / secure (w systemach CentOS/RHEL) w celu wykrycia błędów uwierzytelniania i uniemożliwienia dostępu atakującemu.
Serwery WWW (Apache i Nginx)
Jeśli masz witrynę internetową lub sklep internetowy, boty będą próbowały uzyskać dostęp do wrażliwych tras, takich jak: /wp-admin o /login.phpMożesz tworzyć niestandardowe filtry w /etc/fail2ban/filter.d/ aby wykryć te wzorce. Na przykład, aby Chroń WordPressaMonitorowane są błędy 403 lub nieudane próby wp-login.php, blokując adres IP, jeśli przekroczy on limity ustawione w więzieniu Apache lub Nginx.
Bazy danych i FTP
W przypadku MySQL można monitorować dziennik błędów dla frazy Dostęp zabroniony dla użytkownikaW przypadku FTP (takiego jak ProFTPD) kluczowe jest zapewnienie, że logpath dopasuj rzeczywistą ścieżkę do logów, ponieważ jeśli Fail2ban nie znajdzie pliku logu, ochrona po prostu nie zadziała.
Zaawansowane zarządzanie z fail2ban-client
Nie zawsze musisz edytować pliki i restartować usługi, aby wprowadzić szybkie zmiany. Polecenie fail2ban-client Umożliwia zarządzanie systemem na bieżąco z poziomu konsoli.
Aby zobaczyć, które więzienia są aktywne i ile adresów IP jest zablokowanych, użyj sudo fail2ban-client statusJeśli chcesz dokładniej przeanalizować usługę, np. SSH, uruchom sudo fail2ban-client status sshdPonadto, jeśli przez pomyłkę Zablokowałeś współpracownika Możesz też szybko samodzielnie zwolnić adres IP za pomocą polecenia sudo fail2ban-client set sshd unbanip IP_A_DESBLOQUEAR.
Konserwacja i rozwiązywanie problemów
Jeśli zauważysz, że Fail2ban nie blokuje tak, jak powinien, pierwszym miejscem, w którym należy to sprawdzić, jest plik dziennika narzędzia. /var/log/fail2ban.log. Za pomocą tail -f Możesz zobaczyć na bieżąco, kto jest banowany i dlaczego.
Pamiętaj, że Fail2ban przechowuje status blokady w bazie danych SQLite /var/lib/fail2ban/fail2ban.sqlite3Jeśli zatem zrestartujesz serwer, zablokowane adresy IP zostaną odblokowane. pozostanie zablokowany do czasu wygaśnięcia okresu karnego. Za każdym razem, gdy wprowadzasz zmiany w plikach konfiguracyjnych, nie zapomnij zastosować zmian. sudo systemctl restart fail2ban.
Wdrożenie tego narzędzia przekształca serwer z łatwego celu w zautomatyzowaną fortecę, redukując obciążenie procesora poprzez odrzucanie złośliwego ruchu na poziomie sieci i pozwalając spać spokojnie, wiedząc, że boty nie będą w stanie dostać się do systemu metodą siłową. Łącząc użycie plików .local, zarządzanie określonymi więzieniami i stałe monitorowanie logów, uzyskujesz system obrony dogłębnej, niezbędny dla każdego administratora systemu Linux.