Hi Yassine,

The shorewall action does not ban on a per-jail basis, but puts all ip-addresses on a single blacklist, as that is how shorewall works.

In the original recidive implementation (which I wrote) it was especially mentioned that you shouldn't use the same jail action for the recidive jail as for the other jails just because of this: I used the shorewall jail too.

In short: don't use the 'shorewall' action, or use the 'iptables' action for the recidive jail (and 'shorewall' for the regular jails).

Kind regards,
        Tom

On 07-07-2020 15:22, Yassine Chaouche wrote:
Thank you Peter, that was much appreciated.

Maybe the problem comes from the shorewall action I am using, which isn't as feature-rich as the iptables action. Compare :

root@messagerie[10.10.10.19] ~ # removeblanks /etc/fail2ban/action.d/iptables.conf
[INCLUDES]
before = iptables-blocktype.conf
[Definition]
actionstart = iptables -N fail2ban-<name>
               iptables -A fail2ban-<name> -j RETURN
              iptables -I <chain> -p <protocol> --dport <port> -j fail2ban-<name> actionstop = iptables -D <chain> -p <protocol> --dport <port> -j fail2ban-<name>
              iptables -F fail2ban-<name>
              iptables -X fail2ban-<name>
actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]'
actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype>
actionunban = iptables -D fail2ban-<name> -s <ip> -j <blocktype>
[Init]
name = default
port = ssh
protocol = tcp
chain = INPUT
root@messagerie[10.10.10.19] ~ # removeblanks /etc/fail2ban/action.d/shorewall.conf
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = shorewall <blocktype> <ip>
actionunban = shorewall allow <ip>
[Init]
blocktype = reject
root@messagerie[10.10.10.19] ~ #


(removeblanks is just an alias)

root@messagerie[10.10.10.19] ~ # type removeblanks
removeblanks is aliased to `egrep -v '(^[[:space:]]*#|^$|^[[:space:]]*//)''
root@messagerie[10.10.10.19] ~ #

This explains why there are no fail2ban-* chains in iptable, everything seems to done in the dynamic chain.

root@messagerie[10.10.10.19] ~ # iptables -vnL | grep fail
root@messagerie[10.10.10.19] ~ #


Yassine.

Le 2020-07-07 13:35, Peter Heirich a écrit :


Am 07.07.2020 um 13:32 schrieb Yassine Chaouche:

Let us examine what f2b logs for 185.143.72.27 say :

1. Is is banned/unbanned by *postfix-sasl* 4 times

2. on the fifth occurence, it is first banned by the *postfix-sasl* jail then by the *recidive* jail. Curiously, the *recidive* jail doesn't detect that it has already been banned before. Maybe because each ban is related to a jail. Since the *recidive* jail hasn't seen this IP before, it bans it.

3. After 10 minutes, the ban set by *postfix-sasl* expires, and that jail unbans the IP, cancelling the *recidive* jail ban ?


Dont't worry !

No jail does know about another one.

recidive jail only scans the log of fail2ban for "NOTICE [ xxxxxx] Ban <ip>"

However, xxxxxx may not be "revidive" to prevent a loop. That's the (?!%(_jailname)s\]) part in filter.

Because _jailname is defined as "recidive" some lines above %(_jailname)s expands to recidive.

So finaly (?!recidive\]) is used. That is a negative forward lookup, if found "recidive]" the whole regex fails

All other Ban 's ( note: not Restore Ban ) are counted within the findtime window, if exceeds maxretry= the ip is banned within the recidive jail.


So, you are seeing right, first ban ist postfix-sasl (probably false password for smtp), log entry is done for that. And this log entry triggers the recidive ban.

After the bantime of postfix-sasl ip is removed from posfix-sasl jail. But that doesn't mean to be removed from recidive jail.

However a faulty setup ( one ip-set for all jails ) can cause mailfunction, because the first unban removes ip from ipset.

Usualy each jail has its own ipset or chain in ip-tables.

I, for myself, found a problem also with jailing a ip longer then 55h on my Centos 6 within ipset. Therefor i'm jailing recidive ip's within 2 chains in iptables.

(2 chains: one for input, one for output, output to make live hard for a hacker, who already started code on my system[maybe by stackoverflow]. In this case, maybe a "call-to-home" program should be prevented from call to home; OK in real they are 4 chains: 2 for IPv4 and 2 for IPv6 of course)

Try "ipset list" command, if you are run ipset based jails, "iptables -vn -L" otherwise

You should find some f2b-<jailname> ipsets or chains in iptables, i.e. f2b-postfix-sasl and f2b-recidive too.

Peter





_______________________________________________
Fail2ban-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fail2ban-users




_______________________________________________
Fail2ban-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fail2ban-users

Reply via email to