Fail2ban – zapobieganie włamaniom typu brute-force na serwerze
Fail2Ban to program służący ochronie serwera poprzez blokowanie ataków typu brute-force na najważniejsze usługi systemowe (ssh/ftp/apache/mail).
W wypadku przekroczenia określonej w konfiguracji liczby błędnych logowań, fail2ban blokuje włamywaczowi, robotom albo użytkownikowi dostęp do systemu poprzez ustawienie blokady jego IP w regułach firewalla.
fail2ban ustawia zwykle następnie tzw. unban (odblokowanie) IP po określonym czasie, tak aby nie „zablokować” na stałe prawdziwego użytkownika, który próbował przypomnieć sobie hasło :). Jednakże czas zablokowania jest na ogół na tyle długi aby powstrzymać większość złośliwych ataków robotów i zmniejszyć prawdopodobieństwo ataku słownikowego.
Fail2ban i Denyhosts – porównanie programów
Fail2ban jest podobny do DenyHosts … ale w przeciwieństwie do DenyHosts który koncentruje się na SSH, fail2ban jest stworzony do monitorowania wszelkich usług, które odnotowują zdarzenia do plików dziennika, a oprócz użycia /etc/hosts.deny (DenyHosts), fail2ban wykorzystuje zaporę sieciową (netfilter/iptables) oraz Wrappery TCP (Wrappery to procesy opakowujące, które działają między stosem TCP/IP a właściwą usługą. W klasycznym przypadku odbywa się to we współpracy z superserwerem (x)inetd.).
instalacja i konfiguracja fail2ban
apt-get install fail2ban cat /etc/fail2ban/jail.conf touch /etc/fail2ban/jail.local
Główny plik konfiguracyjny programu to jail.conf, ale nie powinniśmy go edytować, zamiast tego należy utworzyć plik jail.local i tam umieścić polecenia, które chcemy zmienić:
W ścieżce ignoreip definiujemy IP, które jest pomijane (tzn. nigdy nie zostanie zablokowane), w tej linii możemy podawać adresy IP, maski CIDR lub nazwy hostów DNS, wartości oddzielamy spacją W wierszu poniżej – bantime – definiujemy czas blokady w sekundach, domyślnie jest ustawione na 10 minut, dla zmylenia przeciwnika możemy ustawić 12 🙂
Ilość możliwych nieudanych prób logowania definiujemy w polu maxretry
ignoreip = 127.0.0.1 280.168.46.140 bantime = 720 maxretry = 3
Fail2ban – sekcja JAILS
Każda sekcja odpowiada za jakąś usługę, jeśli dane więzienie (ang. jail) ma być włączone to ustawiamy
enabled = true, jeśli wylączone to enabled = false
ważnym parametrem jest logpath w którym definiujemy ścieżkę do logów z danej usługi, które fail2ban ma śledzić. To, że fail2ban analizuje logi zamiast bezpośrednio monitorować ruch jest jego dużą zaletą, bowiem został tak zaprojektowany aby nie obciążać zasobów systemu. Jeśli nie ingerowaliśmy w strukturę logów systemowych, ścieżki logpath najlepiej pozostawić domyślne.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
jak ustawić wysyłanie maili o próbie zalogowania w fail2ban?
W dalszym ciągu pozostając przy edycji pliku jail.local, ustawiamy adres e-mail na który mają być wysyłane powiadomienia. destemail = nasz_email@gmail.com a w sekcji # ACTIONS (action=) zmieniamy tryb z „action” (samo banowanie) na „action_mwl” (banowanie z powiadomieniem na email)action = %(action_mwl)s Należy pamiętać aby po każdej zmianie pliku konfiguracyjnego fail2ban zrestartować program: /etc/init.d/fail2ban restart
podglądamy cały plik dziennika:
nano /var/log/fail2ban.log
lub przeglądamy co dopisuje w czasie rzeczywistym
tail -f /var/log/fail2ban.log
lub szukamy zbanowanych
cat fail2ban.log | grep -i WARNING
przykładowy wynik
2011-06-20 02:40:31,925 fail2ban.actions: WARNING [ssh] Ban 186.80.0.189 2011-06-20 02:50:32,560 fail2ban.actions: WARNING [ssh] Unban 186.80.0.189 2011-06-22 05:50:05,105 fail2ban.actions: WARNING [ssh] Ban 190.44.131.77 2011-06-22 06:00:05,740 fail2ban.actions: WARNING [ssh] Unban 190.44.131.77 2011-06-22 09:08:41,607 fail2ban.actions: WARNING [ssh] Ban 201.238.244.98 2011-06-22 09:18:42,241 fail2ban.actions: WARNING [ssh] Unban 201.238.244.98 2011-06-23 03:32:33,744 fail2ban.actions: WARNING [ssh] Ban 190.142.147.139 2011-06-23 03:42:34,379 fail2ban.actions: WARNING [ssh] Unban 190.142.147.139
Aby zobaczyć reguły iptables należy użyć polecenia:
iptables -L
Komentarze