Fail2ban hat das angepasste Jail akzeptiert, das Ereignis jedoch nicht erkannt.

Fail2ban hat das angepasste Jail akzeptiert, das Ereignis jedoch nicht erkannt.

dieses Problem macht mich verrückt. Ich habe ein Jail konfiguriert, um übermäßige HTTP-Posts an meinen Webserver zu verhindern.

Scheint, als ob der Fail2ban-Server mein neues Jail akzeptiert, aber nichts wird auf dem Fail2ban-Server wirksam.

Im Folgenden finden Sie einen Teil meiner jail.local-Konfiguration (sshd in fail2ban funktioniert übrigens perfekt).

#global setting
bantime  = 1h 
findtime  = 1h
maxretry = 5
backend = systemd
banaction = firewallcmd-rich-rules[actiontype=]
banaction_allports = firewallcmd-rich-rules[actiontype=]
[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode   = normal
enabled  = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

[webpost]
enabled  = true
filter   = webpost
logpath  = /var/log/message

Es folgt die Datei webpost.conf im Ordner filter.d/:

[Definition]
failregex = ^.*myserver python3.6\[.*\]: <HOST> - - \[.*\] ".*POST \/enquiry HTTP.*".*-$
ignoreregex =
datepattern = ^%%b  %%d %%H:%%M:%%S

Der Regex-Test in fail2ban funktioniert, die Ausgabe ist unten:

fail2ban-regex /var/log/messages /etc/fail2ban/filter.d/webpost.conf
Running tests
=============
Use   failregex filter file : webpost, basedir: /etc/fail2ban
Use      datepattern : ^%b  %d %H:%M:%S : ^MON  Day 24hour:Minute:Second
Use         log file : /var/log/messages
Use         encoding : UTF-8
Results
=======
Failregex: 115 total
|-  #) [# of hits] regular expression
|   1) [115] ^.*myserver python3.6\[.*\]: <HOST> - - \[.*\] ".*POST \/enquiry HTTP.*".*-$
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
|  [115989] ^MON  Day 24hour:Minute:Second
`-
Lines: 115989 lines, 0 ignored, 115 matched, 115874 missed
[processed in 2.65 sec]

Das Fail2ban-Protokoll zeigt auch, dass alles geladen wurde und einwandfrei funktioniert hat.

2023-09-07 17:27:09,868 fail2ban.filtersystemd  [969]: NOTICE  [webpost] Jail started without 'journalmatch' set. Jail regexs will be checked against all journal entries, which is not advised for performance reasons.
2023-09-07 17:27:10,061 fail2ban.filtersystemd  [969]: INFO    [webpost] Jail is in operation now (process new journal entries)
2023-09-07 17:27:10,063 fail2ban.jail           [969]: INFO    Jail 'webpost' started

Nachdem ich viele HTTP-Post-Anfragen an meine Website gesendet habe, sieht es so aus, als hätte Fail2ban keine der HTTP-Posts aus /var/log/message erkannt. Fail2ban erkennt nur die SSHD-Versuche. KEINE Webpost-Anfragen werden überhaupt erkannt!

2023-09-07 17:36:46,206 fail2ban.filter         [969]: INFO    [sshd] Found 180.101.88.228 - 2023-09-07 17:36:45
2023-09-07 17:36:48,739 fail2ban.filter         [969]: INFO    [sshd] Found 180.101.88.228 - 2023-09-07 17:36:48
2023-09-07 17:36:52,034 fail2ban.filter         [969]: INFO    [sshd] Found 180.101.88.228 - 2023-09-07 17:36:51
2023-09-07 17:36:55,241 fail2ban.filter         [969]: INFO    [sshd] Found 180.101.88.228 - 2023-09-07 17:36:54
2023-09-07 17:37:57,290 fail2ban.filter         [969]: INFO    [sshd] Found 180.101.88.228 - 2023-09-07 17:37:56
2023-09-07 17:37:57,769 fail2ban.actions        [969]: NOTICE  [sshd] Ban 180.101.88.228
2023-09-07 17:37:57,795 fail2ban.filter         [969]: INFO    [pam-generic] Found 180.101.88.228 - 2023-09-07 17:37:57
2023-09-07 17:37:59,280 fail2ban.filter         [969]: INFO    [sshd] Found 180.101.88.228 - 2023-09-07 17:37:58

Ich weiß nicht, wo das Problem liegt.

Antwort1

fail2ban.filtersystemd [969]: NOTICE [webpost] Jail started without 'journalmatch' set...

Ihre Standardeinstellung backendscheint zu sein systemd, was bedeutet, dass das Systemd-Journal und nicht der Protokollpfad überwacht wird.

backend = autoFügen Sie dem Gefängnis einfach hinzu :

  [webpost]
  ...
  logpath  = /var/log/message
+ backend = auto

verwandte Informationen