On 9/2/2020 5:43 AM, Phillip Carroll wrote:
On 9/1/2020 6:04 PM, Richard Shaw wrote:
On Tue, Sep 1, 2020 at 7:45 PM Phillip Carroll <[email protected] <mailto:[email protected]>> wrote:

    I have been using csf/lfd as my firewall for several years on several
    versions of CentOS, currently CentOS7. I am using several ipset-managed
    blocklists supported directly by csf. Some of these are fairly huge
    (such as whole country blocks), and it changes them in fractions of a
    second. Very happy with everything it does.

    However, csf syntax for custom regex applied to logs is relatively
    clumsy and error-prone so I have installed fail2ban in hopes of using
    that for custom log-based bans.

    For my initial testing I have set up one jail and a corresponding
    filters. (I found that all very simple.)

    My intent:
    On filter matches, immediately ban the host IP for one full day. Use
    ipset to implement the bans.

    The test case basically watches my exim reject.log (using inotify) and
    unerringly finds the naughty hosts I want to ban.

    My setup:
    jail.local has:

     > [exim-reject]
     > mode      = normal
     > port      = smtp,ssmtp
     > logpath   = /var/log/exim/reject.log
     > filter    = exim-reject
     > maxmatches = 1
     > maxretry   = 1
     > backend   = auto
     > bantime   = 1d
     > banaction = iptables-ipset-proto6
     > enabled   = true

    And exim-reject.conf contains:

     > [INCLUDES]
     > before = exim-common.conf
     > [Definition]
     > failregex = <HOST> is listed at zen.spamhaus.org
    <http://zen.spamhaus.org>
     >             \[<HOST>\]:25 dropped: too many syntax or protocol errors

    The contents of fail2ban.log indicates everything is working. It
    says it
    found the lines I expected it to find, and has issued bans (and
    unbans a
    day later).

    However, when I list the ipset sets on the console, the only sets
    listed
    are those managed by csf. Clearly I have implemented something
    incorrectly. I am hoping somebody on the list can set me straight.
    Is it
    possibly a permissions problem?


That quite a bit more complex installation than I use so can't help you there, but fail2ban version and source (EPEL, self install, etc) would be helpful.

Thanks,
Richard

@Richard,

This server has only prebuilt packages from the standard repos, managed using yum. It is a pretty typical headless server.

I don't use selinux because of conflicts with the ISP provided kernel. (Linode)

 From yum list installed:
fail2ban.noarch                       0.11.1-9.el7.2             @epel fail2ban-server.noarch                0.11.1-9.el7.2             @epel ipset.x86_64                          7.1-1.el7                  @base ipset-libs.x86_64                     7.1-1.el7                  @base iptables.x86_64                       1.4.21-34.el7              @base iptables-services.x86_64              1.4.21-34.el7              @base

Phil


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

I turned on DEBUG and restarted fail2ban. Following is the result in fail2ban.log.

The difficulty I have is understanding the content of the scripting macros used in the various commands at the time the commands are issued. For instance, what does "<ipmset>" contain at the time of the ipset create command? The log would appear to indicate the scripting is such that values are used before they are defined. After the create, I see the value set as 'f2b-<name>' which is dependent on the value of <name> which is set on a subsequent set command as 'exim-reject'.

If this order is the actual sequence it would explain the fact that the set f2b-exim-reject' does not exist after the restart of fail2ban.
However, perhaps I just don't understand the inner workings.

The log:

2020-09-02 08:34:17,939 fail2ban.server         [4077]: INFO    Reload all jails
2020-09-02 08:34:17,939 fail2ban.server         [4077]: INFO    Reload jail 
'exim-reject'
2020-09-02 08:34:17,940 fail2ban.filter         [4077]: DEBUG   Setting usedns 
= warn for FilterPyinotify(Jail('exim-reject'))
2020-09-02 08:34:17,940 fail2ban.server         [4077]: DEBUG     failregex: 
'<HOST> is listed at zen.spamhaus.org'
2020-09-02 08:34:17,940 fail2ban.server         [4077]: DEBUG     failregex: 
'\\[<HOST>\\]:25 dropped: too many syntax or protocol errors'
2020-09-02 08:34:17,940 fail2ban.filter         [4077]: INFO      maxRetry: 1
2020-09-02 08:34:17,940 fail2ban.filter         [4077]: INFO      encoding: 
UTF-8
2020-09-02 08:34:17,940 fail2ban.filter         [4077]: INFO      findtime: 600
2020-09-02 08:34:17,940 fail2ban.actions        [4077]: INFO      banTime: 86400
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG   Created <class 
'fail2ban.server.action.CommandAction'>
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set actionunban = 'ipset 
del <ipmset> <ip> -exist'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set actionflush = 
'ipset flush <ipmset>'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set actionstop = '<iptables> -D INPUT 
-p tcp -m multiport --dports smtp,ssmtp -m set --match-set <ipmset> src -j <blocktype>\nipset 
flush <ipmset>\nipset destroy <ipmset>'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set actionstart = 'ipset create 
<ipmset> hash:ip timeout 600<familyopt>\n<iptables> -I INPUT -p tcp -m multiport --dports 
smtp,ssmtp -m set --match-set <ipmset> src -j <blocktype>'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set actionprolong = 'ipset add 
<ipmset> <ip> timeout <bantime> -exist'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set actionban = 'ipset add 
<ipmset> <ip> timeout <bantime> -exist'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set protocol 
= 'tcp'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set chain = 
'<known/chain>'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set 
lockingopt = '-w'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set ipmset = 
'f2b-<name>'
2020-09-02 08:34:17,941 fail2ban.CommandAction  [4077]: DEBUG     Set blocktype 
= 'REJECT --reject-with icmp-port-unreachable'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set 
default-timeout = '600'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set 
blocktype?family=inet6 = 'REJECT --reject-with icmp6-port-unreachable'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set port = 
'smtp,ssmtp'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set actname = 
'iptables-ipset-proto6'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set iptables = 
'iptables <lockingopt>'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set 
familyopt?family=inet6 = '<sp>family inet6'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set familyopt 
= ''
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set 
returntype = 'RETURN'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set 
ipmset?family=inet6 = 'f2b-<name>6'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set 
iptables?family=inet6 = 'ip6tables <lockingopt>'
2020-09-02 08:34:17,942 fail2ban.CommandAction  [4077]: DEBUG     Set name = 
'exim-reject'
2020-09-02 08:34:17,942 fail2ban.server         [4077]: INFO    Jail 
'exim-reject' reloaded
2020-09-02 08:34:17,943 fail2ban.actions        [4077]: NOTICE  [exim-reject] 
Flush ticket(s) with iptables-ipset-proto6
2020-09-02 08:34:17,943 fail2ban.actions        [4077]: DEBUG     Unbanned 7, 7 
ticket(s) in 'exim-reject'
2020-09-02 08:34:17,943 fail2ban.actions        [4077]: DEBUG   exim-reject: 
action iptables-ipset-proto6 terminated
2020-09-02 08:34:17,943 fail2ban.server         [4077]: INFO    Reload finished.



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

Reply via email to