Craft fail2ban rules to mitigate spambots attacks (#4461)
This commit is contained in:
parent
b58bc5dd94
commit
0cc71a7ebe
29
fail2ban/README.md
Normal file
29
fail2ban/README.md
Normal file
@ -0,0 +1,29 @@
|
||||
# fail2ban rules for XMPP
|
||||
|
||||
fail2ban rules created to mitigate spambots acting since April 2020.
|
||||
Random accounts are created with different IPs (probably zombie machines)
|
||||
and then always the same 3 XMPP accounts (on other XMPP servers) are targeted.
|
||||
The new chapril account ask for presence subscription to those external JIDs
|
||||
and immediately send them random messages without waiting for an answer.
|
||||
|
||||
ejabberd detects the suspicious fast presence subscriptions and logs something
|
||||
easy to capture:
|
||||
|
||||
grep Flooder /var/log/ejabberd/ejabberd.log
|
||||
|
||||
So we use these log warnings to trigger IP ban.
|
||||
|
||||
## Quickstart guide
|
||||
|
||||
```
|
||||
cd /etc/fail2ban/filter.d
|
||||
ln -s /srv/xmpp.chapril.org/tools/fail2ban/filter.d/xmpp-flooders.conf
|
||||
cd /etc/fail2ban/jail.d
|
||||
ln -s /srv/xmpp.chapril.org/tools/fail2ban/jail.d/chapril-xmpp.conf
|
||||
systemctl restart fail2ban
|
||||
```
|
||||
|
||||
Check that the jail is active:
|
||||
|
||||
fail2ban-client status
|
||||
fail2ban-client status xmpp-c2s
|
10
fail2ban/filter.d/xmpp-flooders.conf
Normal file
10
fail2ban/filter.d/xmpp-flooders.conf
Normal file
@ -0,0 +1,10 @@
|
||||
[INCLUDES]
|
||||
|
||||
before = common.conf
|
||||
|
||||
[Definition]
|
||||
|
||||
failregex = ^%(__prefix_line)s \[warning\] <[0-9\.]+>@mod_pres_counter:update:[0-9]+ Flooder detected: [a-zA-Z0-9\.@/-]+, on IP: <HOST> ignoring sent presence subscriptions$
|
||||
|
||||
ignoreregex =
|
||||
|
10
fail2ban/jail.d/chapril-xmpp.conf
Normal file
10
fail2ban/jail.d/chapril-xmpp.conf
Normal file
@ -0,0 +1,10 @@
|
||||
# :vi ft=dosini
|
||||
[xmpp-c2s]
|
||||
enabled = true
|
||||
filter = xmpp-flooders
|
||||
port = 5222,5223
|
||||
logpath = /var/log/ejabberd/ejabberd.log
|
||||
findtime = 1d
|
||||
maxretry = 1
|
||||
bantime = 2d
|
||||
|
Loading…
Reference in New Issue
Block a user