How do I specify multiple logfiles for a jail in fail2ban?

Heyo,

I'm using Ubuntu 15.10 and fail2ban 0.9.3. Apache is set up with a bunch of Apache virtualhosts.

I have my Apache2 logfiles located in subdirectories, one per localhost, e.g. '/var/log/apache2/vwww_example_vhost_com/ and logfiles under that as error.log or access.log (or ssl_error.log and ssl_access.log).

The main apache2 logfiles (for localhost and default) are in /var/log/apache2.

Ideally I'd like to be able to wildcard the subdirectory and have fail2ban read in any logfiles under that subdirectory.

The jail.local manpage indicates that in order to specify multiple logfiles you must put a newline and whitespace between each logfile. This does not appear to work with wildcarded directories.

Here's the default config for one of the jails:

[apache-auth]
port     = http,https
logpath  = %(apache_error_log)s
enabled  = true

Currently I have tried:

[apache-auth]
port     = http,https
logpath  = %(apache_error_log)s
           /var/log/apache2/*/*error.log
enabled  = true

With the secondary logfile path on a newline with leading whitespace. This errors and service fail2ban restart fails with a cryptic (and useless) error message.

This fails:

[apache-auth]
port     = http,https
logpath  = /var/log/apache2/*/*error.log
enabled  = true

Trying to override the %(apache_error_log)s variable in /etc/fail2ban/paths-overrides.local also fails:

[DEFAULT]
apache_error_log = /var/log/apache2/*error.log
               /var/log/apache2/*/*error.log

apache_access_log = /var/log/apache2/*access.log
               /var/log/apache2/*/*access.log

Specifying the logfile masks with a space gives me 'head or tail' error in /var/log/fail2ban.log but the service will launch. However, it's not using the logfiles at all then. Separating the logfile masks with a semicolon stops fail2ban from restarting.

My conclusion is that I'm going to have to manually define the directory names for the virtualhosts in jail.local but I haven't found anything that specifically says you can't use a wildcarded subdirectory.

Does anyone have insight on this or a workaround?

Edit: I just tried specifying multiple logfile directories (with the directory name spelled out) and with the same wildcarded filename masks in paths-overrides.local and that is also causing fail2ban not to start.


Solution 1:

For me i just keep it simple in my custom jail config file:

[apache-auth] 
enabled = true 
logpath = %(apache_error_log)s
          /var/log/apache2/*/*error.log

Same For The access

[php-url-fopen]
enabled = true
logpath = %(apache_access_log)s
          /var/log/apache2/*/*access.log

Then to test it after i reload the fail2ban-client:

sudo fail2ban-client status apache-auth
sudo fail2ban-client status php-url-fopen