Fail2ban narzędzie niezbędne dla administratora Unix. Nie tylko administrator poczty ale każdego systemy opartego na *nuxach. Pewnie większość miała lub ma do czynienia z tym programem wiec nie będzie to bardzo szczegółowy opis tego programu
Cele
Program fail2ban ma za zadanie czytać na bieżąco pliki (najczęściej są to logi). na podstawie zdefiniowanych wzorców w plikach można podjąć działania. Wielką siłą programu jest możliwość definiowania własnych wzorców i działań. Daje to ogromne możliwości filtrowania zdarzeń i podejmowania działań związanych z nimi.
Trzeba pamiętać o ograniczeniach programu. Po pierwsze logi zawsze są generowane z jakimś opóźnieniem wiec odczytanie wzorca zajmie chwile. Drugi to reakcja programu która też zajmuje chwilę.
Instalacja
Instalacja programu jest prosta. We wszystkich dystrybucjach znajdują się pakiety tego programu. W zależności od dystrybucji instalujemy aptitude, yum,apt lub czymś innym.
Konfiguracja
Główny plik konfiguracyjny to /etc/fail2ban/jail.conf. Omówię teraz pokrótce zmienne tego pliku.
Lista domyślnych wartości dla zdefiniowanych sekcji. W każdej sekcji można zdefiniować indywidualnie te wartości
ignoreip -lista ignorowanych ip dla których nie będą podejmowane działania. Dobrze dopisać do tej sekcji IP siedziby.
bantime – czas na jaki adres IP jest blokowany(w sekundach)
maxretry i findtime podjęcie działania jeśli wzorzec zostania znaleziony maxretry razy w ciągu findtime sekund
banaction jaką domyślna akcję z podejmuje system, Domyślnie można ustawić
iptables-multiport co znaczy blokowanie kilku portów (np imap i imaps)
Każde z tych wartości możemy zmieniać indywidualnie w zależności od wzorca.
Sekcje.
To najważniejsza część tego pliku. Definiujemy tutaj działania jakie należy podjąć dla każdego pliku. Omówienie przykładowej sekcji.
[ssh-iptables] #enabled = false enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] # mail-whois[name=SSH, dest=yourmail@mail.com] #logpath = /var/log/sshd.log logpath = /var/log/auth.log maxretry = 5
W nawiasach [] nazwa sekcji w tym przypadku ssh-iptables
enabled – czy ma zostać włączona czy nie dana skecja
filter – nazwa filtru. w tym przypadku filtr sshd.conf w katalogu filter.d Filtry będą omówione w następnym punkcie.
action– podjęte działania czyli iptables dla portu ssh w protokole tcp. Podjęcie działania iptables.conf z katalogu actions.d
logpath – plik jaki ma być obserwowany
maxretry – zmienna omówiona wcześniej tu jak widać zmieniona dla tej sekcji.
Filtry
W filtrach definiujemy wychwytywanie zdarzeń w plikach obserwowanych.
Np w pokazywanym przykładzie może być w pliku /etc/fail2ban/filter.d/sshd.conf
failregex = Authentication failure for .* from <HOST> Failed [-/\w]+ for .* from <HOST> ROOT LOGIN REFUSED .* FROM <HOST> [iI](?:llegal|nvalid) user .* from <HOST>
failregex – wzorce (każdy w osobnej linijce) zdefiniowane w postaci wyrażeń regularnych. Bardzo przydatna zmienna <HOST> która przechwytuje adres IP
W pierwszej linijce przechwytujemy adres IP jeśli w pliku logu pojawi się tekst Autherntication failure for itd.
Trzeba się zaznajomić z wyrażeniami regularnymi aby móc w pełni korzystać z tego programu.
Podsumowując przykład chronimy i blokujemy adresy IP jeśli w pliku /var/log/auth.log pojawi się np tekst z Autherntication failure
Więcej o konfiguracji programu fail2ban znajduje się na stronie Ulos w w tym artykule .
I oczywiście na głównej stronie fail2ban
fail2ban można użyć tez do zwalczania spamu ale o tym w następnych odcinkach