[SOLVED] fail2ban nie banuje

Instalacja i konfiguracja oprogramowania sieciowego.
okapi
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 05 lip 2014, 13:40
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Brak
Architektura: x86

[SOLVED] fail2ban nie banuje

Post autor: okapi »

Mam serwer, który chciałbym ochronić przed atakiem brute force (na początek przez ssh). Zainstalowałem w tym celu chyba najlepsze, co jest czyli fail2ban. Jak na ironię za Chiny nie mogę go zmusić, żeby mnie zbanował. Oto kilka konfiguracji:

Plik /etc/fail2ban/jail.local:

Kod: Zaznacz cały

[DEFAULT]
bantime  = 300
findtime = 600
maxretry = 4
backend = auto
usedns = warn
destemail = moj.adres@gmail.com
banaction = iptables-multiport
mta = sendmail
protocol = tcp
chain = INPUT

(...)
action = %(action_mw)s

(...)

[ssh]

enabled  = true
port     = anyport
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 4
Jedynym włączonym kanałem jest ssh. Wszystkie pozostałe mają ustawione

Kod: Zaznacz cały

enabled = false
, więc pomijam kod jako nieistotny.

W pliku mam ustawione, że powinno mnie banować po 4 próbach, tymczasem wyrzuca mnie dopiero po 6, ale nie banuje. Oto jak zapisało się takich 6 nieudanych prób logowania w /var/log/auth.log (chyba prawidłowo):

Kod: Zaznacz cały

Jul  8 09:51:09 nazwaserwera sshd[1798]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=abod34.neoplus.adsl.tpnet.pl  user=my-admin
Jul  8 09:51:10 nazwaserwera sshd[1798]: Failed password for my-admin from 83.8.19.34 port 56451 ssh2
Jul  8 09:51:27 nazwaserwera sshd[1798]: message repeated 5 times: [ Failed password for my-admin from 83.8.19.34 port 56451 ssh2]
Jul  8 09:51:27 nazwaserwera sshd[1798]: Disconnecting: Too many authentication failures for my-admin [preauth]
Jul  8 09:51:27 nazwaserwera sshd[1798]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=abod34.neoplus.adsl.tpnet.pl  user=my-admin
Dodatkowe informacje:

- używam niestandardowego portu do łączenia się przez SSH, więc w pliku /etc/ssh/sshd_conf ustawiłem:

Kod: Zaznacz cały

Port 4444
- po zmianach konfiguracji pamiętam o restartowaniu usług (fail2ban, ssh), więc to nie jest problem
- co ciekawe Fail2Ban przysyła mi maile na wskazany adres, ale tylko informujące, że usługa fail2ban została zatrzymana/uruchomiona

A oto wyjście po wpisaniu polecenia sudo iptables -L

Kod: Zaznacz cały

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-ssh (0 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
Nie wiem, jak sprawić, żeby fail2ban banował włamywacza na 300 sekund (tak jak to ustawiłem w jail.local). Szukałem wczoraj przez pół nocy w Google i próbowałem różnych rozwiązań, ale nadal można bezkarnie próbować się logować.

Nie wiem czy to ma jakieś znaczenie, ale w logu /var/log/fail2ban.log po restarcie fail2ban zapisują się następujące informacje:

Kod: Zaznacz cały

2014-07-08 11:26:12,538 fail2ban.server : INFO   Stopping all jails
2014-07-08 11:26:13,141 fail2ban.jail   : INFO   Jail 'ssh' stopped
2014-07-08 11:26:13,142 fail2ban.server : INFO   Exiting Fail2ban
2014-07-08 11:26:16,825 fail2ban.server : INFO   Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.11
2014-07-08 11:26:16,826 fail2ban.jail   : INFO   Creating new jail 'ssh'
2014-07-08 11:26:17,024 fail2ban.jail   : INFO   Jail 'ssh' uses pyinotify
2014-07-08 11:26:17,141 fail2ban.jail   : INFO   Initiated 'pyinotify' backend
2014-07-08 11:26:17,142 fail2ban.filter : INFO   Added logfile = /var/log/auth.log
2014-07-08 11:26:17,144 fail2ban.filter : INFO   Set maxRetry = 4
2014-07-08 11:26:17,145 fail2ban.filter : INFO   Set findtime = 600
2014-07-08 11:26:17,145 fail2ban.actions: INFO   Set banTime = 300
2014-07-08 11:26:17,438 fail2ban.jail   : INFO   Jail 'ssh' started
2014-07-08 11:26:17,619 fail2ban.actions.action: ERROR  iptables -N fail2ban-ssh
iptables -A fail2ban-ssh -j RETURN
iptables -I INPUT -p tcp -m multiport --dports anyport -j fail2ban-ssh returned 200
Ostatnio zmieniony 10 lip 2014, 14:08 przez okapi, łącznie zmieniany 1 raz.
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: fail2ban nie banuje

Post autor: jacekalex »

Failban, to przeżytek z czasóœ ipchains, zainteresuj się ipsetem i modułami firewalla: limit, connlimit, hashlimit i recent dają takie możliwości, że failban przy nich się nadaje na konserwy dla psów. :twisted:

Tu masz przykład zabawy z ipsetem:
http://forum.dug.net.pl/viewtopic.php?pid=269357

Pozdro
:craz:
okapi
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 05 lip 2014, 13:40
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Brak
Architektura: x86

Re: fail2ban nie banuje

Post autor: okapi »

Na moje potrzeby fail2ban zupełnie by wystarczał. Wydaje się być prostym i dość eleganckim rozwiązaniem. Gdyby tylko jeszcze działał...

Na razie chyba nie do końca rozumiem w jaki sposób funkcjonuje to narzędzie. Wiem, że analizuje zawartość pliku /var/logs/auth.log, która zmienia się m. in. po każdym nieudanej próbie logowania. Z tego wynikałoby, że fail2ban musi monitorować zmiany w pliku auth.log i przy każdej takiej zmianie wykonać jakąś akcję.

Tymczasem okazuje się, że gdy loguję się z błędnym hasłem fail2ban nic nie robi. Przynajmniej w logu /var/log/fail2ban.log nie jest odnotowany fakt nieudanej próby logowania (a raczej akcji wywołanej taką próbą). A ustawiłem najwyższy loglevel: 4 (DEBUG). Chyba właśnie tu jest pies pogrzebany. Bo nawet gdybym miał coś źle w konfiguracji to fail2ban powinien przynajmniej spróbować poszukać czegoś w pliku auth.log (bo się zmienił). Ale wygląda na to, że tego nie robi.

-- 10 lip 2014, o 14:03 --

Znalazłem przyczynę.

W jail.local miałem ustawione maksymalną liczbę powtórzeń wprowadzania hasła:

Kod: Zaznacz cały

maxretry = 4
Tak więc fail2ban powinien szukać w pliku auth.log czterech wystąpień wzorca w określonym przedziale czasowym. I szukał. Tyle tylko, że niezależnie od tego ile razy wprowadzałem hasło, wzorzec występował tylko raz albo dwa razy. Widać to na przykładzie poniżej, gdzie zamiast 6 wierszy jest jeden i kolejny z komunikatem "message repeated 5 times"

Kod: Zaznacz cały

Jul  8 09:51:10 nazwaserwera sshd[1798]: Failed password for my-admin from 83.8.19.34 port 56451 ssh2
Jul  8 09:51:27 nazwaserwera sshd[1798]: message repeated 5 times: [ Failed password for my-admin from 83.8.19.34 port 56451 ssh2]
Rozwiązanie:

W pliku /etc/rsys.conf zmienić wartość RepeatedMsgReduction z on na off. Następnie zrestartować usługi rsyslog i fail2ban. Ufff :)
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: [SOLVED] fail2ban nie banuje

Post autor: jacekalex »

FailBan żeby działać, musi być uruchomiony i failban i rsyslog, jest podatny na błędy przy aktualizacjach systemu, pythona i jego modulów, itp.
Firewall takie bzdurki załatwia na poziomie kernela, a tam nic nie zależy od sysloga i failbana.
Dlatego to o niebo stabilniejsze i bardziej przewidywalne zabezpieczenie.
:rotfl:

Kod: Zaznacz cały

ipset list wypad
Name: wypad
Type: hash:net
Revision: 4
Header: family inet hashsize 1024 maxelem 65536 timeout 3600
Size in memory: 19712
References: 4
Members:
206.59.6.219 timeout 1064
222.174.5.5 timeout 85375
219.235.4.122 timeout 906
192.3.88.77 timeout 204
68.64.174.166 timeout 2314
116.10.191.218 timeout 82697
61.176.222.185 timeout 2439
222.136.82.146 timeout 3484
Tych gostków z netu, co się zameldowali u mnie do tablicy wypad ipseta możesz ode mnie pozdrowić. :rotfl:

Pozdro
:craz:
Ostatnio zmieniony 10 lip 2014, 17:29 przez jacekalex, łącznie zmieniany 1 raz.
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
okapi
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 05 lip 2014, 13:40
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Brak
Architektura: x86

Re: [SOLVED] fail2ban nie banuje

Post autor: okapi »

Dzięki za radę. Na pewno przyda się w przyszłości. To dopiero moje początki z Linuksem i z administrowaniem serwerem także na razie stawiam na rozwiązania dla mnie najbardziej zrozumiałe. Z czasem pewnie przejdę na te bardziej stabilne.
Awatar użytkownika
siwiuski
Piegowaty Guziec
Piegowaty Guziec
Posty: 12
Rejestracja: 05 lut 2008, 19:12
Płeć: Mężczyzna
Wersja Ubuntu: 18.04
Środowisko graficzne: Brak

Re: [SOLVED] fail2ban nie banuje

Post autor: siwiuski »

Przeczytałem cały temat i u mnie niestety nadal nie banuje :/ Co może być nie tak ?

-- 15 paź 2014 08:38 --

W pliku jail.local pomimo zmian próby logowania na 3

Kod: Zaznacz cały

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 3600
findtime = 3600
maxretry = 3

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3

Cały czas mogę wprowadzać hasło 6 razy

Może tu jest problem bo auth.log pokazuje mi jeden z takich logów:

Kod: Zaznacz cały

PAM service(sshd) ignoring max retries; 6 > 3
Co z tym można zrobić ?
krab
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 06 paź 2016, 14:51

fail2ban nie banuje

Post autor: krab »

mkoze ktos mi pomoze
w logach mam taki wpis
2016-10-06 14:42:09 INFO 80.254.53.15 Joomla FAILURE: Username and password do not match or you do not have an account yet.

chce zrobic regex do trgo, ale cos zle dzila
np
failregex = ^.*<HOST>\tJoomla FAILURE.*

daje dziwna blokade ip=0.0.0.5
to log z joomla, pomiedzy wyrazami sa znaki tabulacji - nie spacje
ktos cos ? :-))
z gory dzieki
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: [SOLVED] fail2ban nie banuje

Post autor: jacekalex »

Na jakim serwerze masz tą Joomlę (Apache, Nginx, Lighttpd, inny) i która to wersja Joomli?

Zrób sobie autoryzację na poziomie serwera WWW do folderu Administratora:
https://www.siteground.com/tutorials/jo ... .htm#admin

I zabezpiecz ją najlepiej nie hasłem, tylko certyfikatem PKCS#12.

Rzuć okiem na to:
https://morfitronik.pl/certyfikat-chron ... -wp-admin/
https://morfitronik.pl/generowanie-cert ... -easy-rsa/

I jeszcze to:
https://morfitronik.pl/wordpress-kilku- ... zy-danych/

Pozdro
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
krab
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 06 paź 2016, 14:51

Re: [SOLVED] fail2ban nie banuje

Post autor: krab »

Dzieki za info, nie chodzi mi jednak o zabezpieczenie dostepu - ale o wylapanie prob swiadomego wlamania sie na konto joomla i zablokowanie takowych ip
joomla mam na apache - co tez jest bez znaczenia

zastanawiam sie nad parametrami reg, z ktorym nie potrafier sobie poradzic,

log
2016-10-06 14:42:09 INFO 80.254.53.15 Joomla FAILURE: Username and password do not match or you do not have an account yet.
regex
failregex = ^.*<HOST>\tJoomla FAILURE.*
napisalem wiele swoich conf dla fail2ban, ale niegdy nie mialemtakiego problemu, z powyzszego w efekcie blokowany jest ip=0.0.0.5 ktorego w tej linijce nie ma
zasami jest to z inna cyfra na koncu np 0.0.0.9

jak inaczej zapisalibyscie regex dla takiej linijki loga jw ? bo brakuje mi pomyslow :-))
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: [SOLVED] fail2ban nie banuje

Post autor: jacekalex »

Jak sobie chcesz, jak lubisz ślęczeć nad logami, zamiast spławić skrypciarzy na wieki wieków, aż się nauczą łamać certyfikaty SSL,
twoja sprawa. :twisted:

Rzuć okiem na to:
https://forum.dug.net.pl/viewtopic.php?id=22977
Zdaje się, że o podobną sprawę chodzi.


PS.
Nie wiem, jaką składnie używa Fail2ban, bo jego nigdy nie zacznę używać, ale rzuć okiem na wynik:

Kod: Zaznacz cały

echo "2016-10-06 14:42:09 INFO 80.254.53.15 Joomla FAILURE: Username and password do not match or you do not have an account yet." | grep FAILURE | awk '$5 == "Joomla" { print $4 }'
PS2:
https://baxeico.wordpress.com/2014/03/3 ... -file2ban/

PS3:
Joomla jest napisana w PHP.
Czy nie byłoby lepiej postawić jakiś socket lub fifo unix, i do tego kawałek skrypta z Joomli, który wyśle IP na ten socket, gdzie odbierze go inny program, i doda adres do tablicy ipseta?
Zainteresuj się skryptem httpd-guardian do Apacha, który można spiąć z mod-security2 albo mod-evasive.

https://www.trustwave.com/Resources/Spi ... e-Attacks/
http://apache-tools.cvs.sourceforge.net ... n?view=log

Zwłaszcza mod-security2 ma daleko większe możliwości, aniżeli fail2ban, mod-security to firewall aplikacyjny do Apacha i Nginxa, który potrafi filtrować całą komunikację między serwerem WWW a klientami.
UTFG: https://www.google.pl/#q=mod+security+joomla :twisted:

TO by było na tyle
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
ODPOWIEDZ

Wróć do „Sieci, serwery, Internet”

Kto jest online

Użytkownicy przeglądający to forum: Bing [Bot] i 16 gości