fail2ban und nftables | f2b-chain-Regeln werden nicht in die nftables geschrieben werden | Ubuntu 24.04.1 LTS

Mutti

Member
Ich habe festgestellt, dass es doch ein harter und steiniger Weg ist, ein OS ohne Admin-Panel. :)

Die Gelegenheit möchte ich nutzen, mein Setup von iptables auf nftables umzustellen. Leider funktioniert die Kombination von fail2ban und nftables nicht wie erhofft.

Laut dem fail2ban-Log werden die Ketten zwar erstellt, jedoch nicht von nftables in die Regeln übernommen.

Log

Code:
2024-11-13 08:13:42,381 fail2ban.CommandAction [7278]: DEBUG Set actionstart = "nft add table inet f2b-table\nnft -- add chain inet f2b-table f2b-chain { type filter hook input priority -1; }\nnft add set inet f2b-table <addr_set> { type <addr_type>; }\nfor proto in $(echo 'tcp' | sed 's/,/ /g'); do\nnft add rule inet f2b-table f2b-chain $proto dport { $(echo 'ssh' | sed s/:/-/g) } <addr_family> saddr @<addr_set> reject\ndone"
2024-11-13 08:13:42,389 fail2ban.CommandAction [7278]: DEBUG Set actioncheck = "nft list chain inet f2b-table f2b-chain | grep -q '@<addr_set>[ \t]'"
2024-11-13 08:13:42,389 fail2ban.CommandAction [7278]: DEBUG Set actionban = 'nft add element inet f2b-table <addr_set> { <ip> }'
2024-11-13 08:13:42,390 fail2ban.CommandAction [7278]: DEBUG Set actionunban = 'nft delete element inet f2b-table <addr_set> { <ip> }'
2024-11-13 08:13:42,391 fail2ban.jail [7278]: INFO Jail 'sshd' started
2024-11-13 08:13:42,395 fail2ban.jail [7278]: INFO Jail 'apache-badbots' started
2024-11-13 08:13:42,398 fail2ban.filtersystemd [7278]: INFO [sshd] Jail is in operation now (process new journal entries)
2024-11-13 08:13:42,399 fail2ban.filtersystemd [7278]: INFO [apache-badbots] Jail is in operation now (process new journal entries)

Für Ideen, vielen Dank voraus.
 
Hallo zusammen, die Firewall sperrt mittlerweile, aber...

Ich konnte heute gerade ein Phänomen reproduzieren nachdem mir der Log über 8 Minuten vollgelaufen ist.
Sobald mehrere Request dauerhaft und schnell eingehen sperrt fail2ban nicht sofort bzw. wird es nicht sofort in die
Firewall geschrieben. Erst nach einer kleinen Pause ist die IP gebannt.

Code:
2024-12-09 00:39:29,116 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:29
2024-12-09 00:39:29,317 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:29
2024-12-09 00:39:29,458 fail2ban.actions        [691]: NOTICE  [apache-badbots] xx.xx.xx.xxx already banned
2024-12-09 00:39:29,518 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:29
2024-12-09 00:39:29,678 fail2ban.actions        [691]: NOTICE  [apache-badbots] xx.xx.xx.xxx already banned
2024-12-09 00:39:29,719 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:29
2024-12-09 00:39:30,320 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:29
2024-12-09 00:39:30,320 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:30
2024-12-09 00:39:30,522 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:30
2024-12-09 00:39:30,723 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:30
2024-12-09 00:39:30,879 fail2ban.actions        [691]: NOTICE  [apache-badbots] xx.xx.xx.xxx already banned
2024-12-09 00:39:35,327 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:35
2024-12-09 00:39:35,482 fail2ban.actions        [691]: NOTICE  [apache-badbots] xx.xx.xx.xxx already banned
2024-12-09 00:39:36,530 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:36
2024-12-09 00:39:37,732 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:37
2024-12-09 00:39:37,933 fail2ban.filter         [691]: INFO    [apache-badbots] Found xx.xx.xx.xxx - 2024-12-09 00:39:37
2024-12-09 00:39:38,105 fail2ban.actions        [691]: NOTICE  [apache-badbots] xx.xx.xx.xxx already banned

die jail dazu ist diese hier...

Code:
# WordPress Bad Bots
[apache-badbots]
enabled = true
filter = apache-badbots
logpath = /var/www/*/logs/access_log
          /var/www/*/logs/error_log
maxretry = 3
findtime = 300
bantime = 48h
action = nftables[name=ApacheBadBots, chain=input, table=filter, protocol=tcp, port="http,https"]

Für eine zündene Idee, danke voraus... :)
 
@Mutti Ich sehe da aber bei den actions kein neuen Ban, nur den Hinweis, dass die IP früher schon geblockt wurde.
Und ist dir da eine Sekunde bis zum Block zu langsam. Kann ich verstehen.
Wie die Ressourcen auf deinem Server sind, die Last, ob shared VServer oder Dedicated, weiß ich bei dir nicht.
Und die Konfiguration von Fail2Ban kenn ich nicht. Entdeckt Failban Änderungen polled oder notify? Welche Datenbank benutzt fail2ban selbst?

Ich sehe gerade auf meinem server dass es ca. 100—250 ms dauert zwischen Found und Ban.
 
Hallo, shared VServer und die Datenbank ist fail2ban.sqlite3. Für die Änderungen "polled".
 
Warum nicht pynotify gesetzt? Nicht python3-pyinotify installiert?
Schau mal, ob sich dann in fail2ban die Performance für das Blocken bessert.
 
Danke Gwen. :)
Habe ich gerade mal nachgeschaut. Das hört sich auf jeden Fall interessant an.

Danke wieder für die Inspiration.
 
Ich kann fast mithalten.... 533ms. Ich muss aber auch gestehen dass es auch eine falsche Konfiguration war,
Ist dir das nun schnell genug?

Was war das Problem mit der Konfiguration? Hilfesuchende können bestimmt was Lernen.
 
Ja, das Problem war offensichtlich die falsche Konfiguration der Jail. (s.o.) ;)

Das ist die funktionierende Konfiguration:

Code:
[DEFAULT]

maxretry = 3
findtime = 300
bantime = 48h
mode = aggressive

# Sperraktion mit nftables
banaction = nftables
banaction_allports = nftables-allports

#
# JAILS
##########################

#
# Apache Authentication
#
[apache-auth]
enabled = true
filter = apache-auth
logpath = /var/log/apache2/access.log
                /var/log/apache2/error.log
#
# WordPress Bad Bots
#
[apache-badbots]
enabled = true
filter = apache-badbots
logpath = /var/www/*/logs/access_log
                /var/www/*/logs/error_log
 
Back
Top