Fail2Ban Integration
Fail2ban scans log files (e.g. /var/log/nginx/error.log) and bans IPs that show malicious signs -- too many password failures, seeking for exploits, etc. Generally Fail2Ban is then used to update firewall rules to reject the IP addresses for a specified amount of time, although any arbitrary other action (e.g. sending an email/notification) could also be configured.
- Fail2ban installed and configured
Go to your
filter.d
folder in your Fail2Ban install location /etc/fail2ban/filter.d
and create a file called organizr-auth.conf
and add the following:[Definition]
failregex = {"log_level":"WARNING","message":"Wrong Password".*,"remote_ip_address":"<HOST>"
ignoreregex =
Edit the
jail.local
file in the Fail2Ban directory and add the following: [organizr-auth]
enabled = true
port = http,https
filter = organizr-auth
logpath = /var/www/html/db/logs/organizr*.log
ignoreip = 192.168.1.0/24
The ignore IP is so that fail2ban won’t ban your local IP. Check out https://www.aelius.com/njh/subnet_sheet.html if you are wondering what your CIDR notation is. Most often it will be /24 (netmask 255.255.255.0)
To find your netmask run
ipconfig /all
on windows or ifconfig | grep netmask
on linux.Restart Fail2Ban with
sudo service fail2ban restart
Normal Install
/var/www/html/db/logs/organizr*.log
Docker Install
/config/db/logs/organizr*.log
Because the Organizr container only logs the docker IP addresses e.g
172.17.0.2
you need to add this in the Organizr default nginx site file. Go to \organizr\nginx\site-confs\default
and add the following inside the server block:# get real IP
real_ip_header X-Forwarded-For;
set_real_ip_from 172.17.0.0/16;
real_ip_recursive on;
If you're using
organizr/organizr
it's already added and you only need to uncomment the set_real_ip_from
line. Then restart the container:
docker restart organizr
The Fail2ban filter folder is in
/<appdatafolder>/swag/fail2ban/filter.d
For this to work you need the SWAG container to be able to read the
organizr-<date>.log
file in the Organizr container. Mount the Organizr log like this:
-v <path/to/organizr/config/db/logs:/organizrlog:ro
And set the log path in the Fail2Ban
jail.local
file to /organizrlog/organizr*.log
The
fail2ban.log
file should output something like this:2017-08-08 21:51:13,777 fail2ban.filter [262]: INFO [organizr-auth] Found 5.153.234.107 - 2017-08-08 21:51:12
2017-08-08 21:51:18,811 fail2ban.filter [262]: INFO [organizr-auth] Found 5.153.234.107 - 2017-08-08 21:51:18
2017-08-08 21:51:43,965 fail2ban.filter [262]: INFO [organizr-auth] Ignore 192.168.1.1 by ip
2017-08-08 21:51:51,008 fail2ban.filter [262]: INFO [organizr-auth] Ignore 192.168.1.1 by ip
2017-08-08 21:51:57,045 fail2ban.filter [262]: INFO [organizr-auth] Ignore 192.168.1.1 by ip
2017-08-08 21:52:03,080 fail2ban.filter [262]: INFO [organizr-auth] Ignore 192.168.1.1 by ip
2017-08-08 21:53:25,578 fail2ban.filter [262]: INFO [organizr-auth] Found 104.160.20.131 - 2017-08-08 21:53:24
2017-08-08 21:53:31,617 fail2ban.filter [262]: INFO [organizr-auth] Found 104.160.20.131 - 2017-08-08 21:53:30
2017-08-08 21:53:36,650 fail2ban.filter [262]: INFO [organizr-auth] Found 104.160.20.131 - 2017-08-08 21:53:36
2017-08-08 21:53:42,688 fail2ban.filter [262]: INFO [organizr-auth] Found 104.160.20.131 - 2017-08-08 21:53:41
2017-08-08 21:53:48,726 fail2ban.filter [262]: INFO [organizr-auth] Found 104.160.20.131 - 2017-08-08 21:53:47
2017-08-08 21:53:48,733 fail2ban.actions [262]: NOTICE [organizr-auth] Ban 104.160.20.131
If you managed to ban yourself or a friend banned themself you can run one of these commands:
fail2ban-client unban <ip>
#OR
docker exec letsencrypt fail2ban-client unban <ip>
Thanks to rix1337 for the fail2ban config:
Last modified 1yr ago