Support online obsługa informatyczna dla Firm już od 1499 zł/ms

Usługi sieciowe wymagające od użytkownika podania loginu i hasła mogą stać się łatwym celem botów internetowych lub osób chcących włamać się do systemu. . Zazwyczaj jest to atak słownikowy. Atakujący zasypuje serwer próbami logowania się do danej usługi pobierając hasła ze słownika często używanych haseł. Dlatego ważne jest, aby używać haseł składających się z przypadkowych znaków alfanumerycznych i znaków specjalnych.

Aby odciąć atakującego od systemu, najlepiej jest utworzyć odpowiednią regułę na firewallu. Jeżeli atak jest przeprowadzany przez botnet, wprowadzanie reguł blokujących ręcznie jest wręcz niemożliwe. Dlatego z pomocą przychodzi nam program Fail2Ban.

Na Ubuntu/Debian Instalujemy go poleceniem:

$ sudo apt-get install fail2ban

Na Fedorze

$ sudo dnf install fail2ban

Na Centos/Redhat musimy wcześniej dodać repozytorium Fedory, aby móc zainstalować Fail2Ban.

$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-1.noarch.rpm

$ yum check-update

$ yum install fail2ban

Powyższe polecenia instalują serwer i klienta, który służy do podglądania stanu Fail2Ban oraz wprowadzania zmian w „locie”.

Konfiguracja Fail2Ban jest rozłożona pomiędzy wiele różnych plików konfiguracyjnych. Główny plik /etc/fail2ban/fail2ban.conf zawiera miejsce, gdzie mają być odkładane logi z działania programu, poziom logowania i miejsce trzymania plików pid i socket.

W katalogu /etc/fail2ban/action.d znajdują się pliki konfiguracyjne określające akcje jakie mają być wykonane po wykryciu błędnego logowania. Znajdują się już tam predefiniowane konfiguracje dla iptables oraz różnych jego nakładek (shorewall, apf, bsd-ipfw, osx firewall). Jest również możliwość wysłania powiadomień email o błędnej próbie logowania i zablokowaniu adresu IP.

W katalogu /etc/fail2ban/filter.d są pliki odpowiedzialne za wyszukiwanie informacji o próbach logowania w logach systemowych i aplikacji. Opierają się one na dopasowywaniu wyrażeń regularnych w logach. Tak jak w przypadku plików akcji, tak i tutaj są już gotowe filtry do wykorzystania do takich usług jak ssh, apache, asterisk, różnych daemonów ftp, poczty czy aplikacji webowych (roundcube). Ich składnia jest w miarę prosta i umożliwia nam pisanie własnych filtrów.

W pliku /etc/fail2ban/jail.conf możemy włączać poszczególne akcje i filtry oraz konfigurować zachowanie Fail2Ban. Parametrem ignoreip możemy zdecydować, które z adresów IP mają być ignorowane przez Fail2Ban. Domyślnie jest to tylko 127.0.0.1. Parametr bantime określa ilość sekund na jakie zostanie zablokowany podejrzany host. Jeżeli chcemy dać możliwość podjęcia kilku prób logowania dla uprawnionych użytkowników, którzy przez przypadek źle wpisali hasło, robimy to za pomocą opcji maxretry i findtime. Pierwszy określa ilość prób zanim host zostanie zablokowany, a drugi określa czas badania kolejnych nieudanych prób logowania. Domyślne wartości to maxretry=3 i findtime=600, czyli jeżeli w ciągu 10 minut będąpodjęte 3 błędne próby logowania to host zostanie zablokowany.

Opcja destemail określa adres email do powiadomień, a sendername określa nazwę nadawcy wysyłanych powiadomień. Są przydatne jeżeli chcemy skonfigurować reguły klienta poczty tak, aby powiadomienia wpadały do odpowiednich folderów.

Domyślną akcją jest blokowanie adresu IP przez polecenie iptables. Jeżeli chcemy to zmienić ustawiamy parametr banaction. Odpowiada on nazwom plików w katalogu /etc/fail2ban/action.d.

Plik /etc/fail2ban/jail.conf może być modyfikowany przez aktualizację systemu, więc autorzy zalecają zrobienie jego kopii do pliku /etc/fail2ban/jail.local.

$ cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Aby włączyć wykrywanie podejrzanych akcji w danej usłudze np. ssh znajdujemy sekcję odpowiedzialną za daną usługę.

[ssh]

enabled  = true

port     = ssh

filter   = sshd

logpath  = /var/log/auth.log

maxretry = 6

Opcja enabled określa czy usługa ma być monitorowana. Parametr port określa numer portu tcp (numer portu pobierany jest z /etc/services). Z kolei filter wskazuje nazwę pliku filtra, który znajduje się w katalogu /etc/fail2ban/filter.d. logpath to oczywiście ścieżka dostępu do pliku logu systemowego bądź aplikacji, który ma być badany pod kątem podejrzanych zachowań.

Konfiguracja obserwowania usługi może nadpisywać ustawienia ogólne. Możemy zmienić ilość dozwolonych prób logowania przez opcję maxretry czy zmienić akcję podjętą przez Fail2Ban. W ten sposób możemy skonfigurować Fail2Ban tak, aby nie blokował połączeń, ale wysyłał powiadomienia o błędnych próbach.

Ciekawą opcją konfiguracyjną jest opcja recydywy.

[recidive]

enabled  = true

filter   = recidive

logpath  = /var/log/fail2ban.log

action   = iptables-allports[name=recidive]

           sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]

bantime  = 604800  ; 1 week

findtime = 86400   ; 1 day

maxretry = 5

Fail2Ban obserwuje swój własny log i jeżeli było podjętych 5 akcji przez Fail2Ban, host zostanie zablokowany na tydzień.

Stan Fail2Ban możemy podglądać przez program klienta.

$ fail2ban-client status

Status

|- Number of jail:       3

`- Jail list:                    apache, ssh, ssh-ddos

Jeżeli chcemy podejrzeć stan konkretnej usługi wpisujemy polecenie:

$ fail2ban-client status ssh

Status for the jail: ssh

|- filter

|  |- File list:    /var/log/auth.log

|  |- Currently failed:  1

|  `- Total failed:         7

`- action

   |- Currently banned:           1

   |  `- IP list:    62.244.147.78

   `- Total banned:       1

Czasem może zdarzyć się, że zostanie zablokowany użytkownik, który po prostu zapomniał hasła i kilkukrotnie podał błędne. W takim przypadku również używamy klienta, aby odblokować hosta.

$ fail2ban-client set ssh unbanip 62.244.147.78

Dzięki modułowej budowie Fail2Ban możemy dodawać nowe filtry i akcje. Dobrym przykładem jest wtyczka wp-fail2ban, którą możemy pobrać z https://wordpress.org/plugins/wp-fail2ban/.

Plik wp-fail2ban.php kopiujemy do katalogu (główny katalog wordpressa)/wp-content/plugins/wp-fail2ban/. Włączamy wtyczkę w kokpicie WordPressa.

WordPress wtyczki

Plik wordpress.conf kopiujemy do katalogu filtrów /etc/fail2ban/filter.d/

Następnie w pliku /etc/fail2ban/jail.local dopisujemy następujące liniki:

[wordpress]

enabled = true

filter = wordpress

logpath = /var/log/auth.log

maxretry = 3

Po trzech próbach błędnego logowania się do kokpitu WordPressa nastąpi zablokowanie hosta.

Fail2Ban to nie tylko ochrona przed próbami zgadnięcia hasła, ale również przed atakami DDoS. Dzięki zablokowaniu podejrzanego ruchu z sieci zaoszczędzamy moc obliczeniową i pamięć. Własny plik logowania akcji pozwala łatwo wyłowić zagrożenia. Jak zabezpieczyc strone WWW? Modułowa budowa oraz możliwość wykorzystania wyrażeń regularnych w filtrach powoduje, że możemy stworzyć własne filtry np. do sklepów internetowych czy systemów zarządzania treścią.

Nasza firma od 2002 roku dba o rozwój technologiczny i bezpieczeństwo klientów. Oferujemy kompleksowe uslugi informatyczne, oparte na długoletnim doświadczeniu i wiedzy. Przeprowadzimy audyt bezpieczeństwa i zaproponujemy indywidualne rozwiązanie do twojej firmy. IT support to nasza specjalność!

Marcin Kukiełka

Marcin Giziński
Manager Działu Handlowego w Support Online

BLOG

Zobacz inne nasze artykuły

Bezpłatna wycena ✍️