Назад | Перейти на главную страницу

Как указать несколько файлов журнала для тюрьмы в fail2ban?

Эй,

Я использую Ubuntu 15.10 и fail2ban 0.9.3. Apache настроен с набором виртуальных хостов Apache.

У меня есть файлы журнала Apache2, расположенные в подкаталогах, по одному на локальный хост, например '/var/log/apache2/vwww_example_vhost_com/ и файлы журнала под этим как error.log или access.log (или ssl_error.log и ssl_access.log).

Основные файлы журнала apache2 (для localhost и по умолчанию) находятся в /var/log/apache2.

В идеале я хотел бы иметь возможность использовать подстановочный знак для подкаталога и читать fail2ban в любых файлах журнала в этом подкаталоге.

На странице руководства jail.local указано, что для указания нескольких файлов журнала вы должны поместить новую строку и пробел между каждым файлом журнала. Это не работает с каталогами с подстановочными знаками.

Вот конфигурация по умолчанию для одной из тюрем:

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

В настоящее время я пробовал:

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

С дополнительным путем к файлу журнала на новой строке с ведущими пробелами. Это ошибки и service fail2ban restart дает загадочное (и бесполезное) сообщение об ошибке.

Это не удается:

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

Попытка переопределить %(apache_error_log)s переменная в /etc/fail2ban/paths-overrides.local также не удается:

[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

Указание масок файла журнала с пробелом дает мне ошибку "голова или хвост" в /var/log/fail2ban.log но сервис запустится. Однако тогда он вообще не использует файлы журнала. Разделение масок файлов журнала точкой с запятой останавливает перезапуск fail2ban.

Я пришел к выводу, что мне придется вручную определить имена каталогов для виртуальных хостов в jail.local но я не нашел ничего, что конкретно говорило бы, что вы не можете использовать подкаталог с подстановочными знаками.

Есть ли у кого-нибудь представление об этом или обходной путь?

Изменить: я просто попытался указать несколько каталогов файлов журнала (с указанием имени каталога) и с такими же масками имен файлов с подстановочными знаками в paths-overrides.local и это также приводит к тому, что fail2ban не запускается.

Пока что похоже, что глобус каталога не имеет никакого эффекта.

Единственное решение, которое я нашел, - создать отдельную запись для каждого подкаталога.

У каждого из моих виртуальных хостов есть соответствующие журналы ошибок / доступа в подкаталоге / var / log / httpd.

Чтобы получить список журналов ошибок (например), я использовал:

(ls -F /var/log/httpd/ | awk '/\// {print "/var/log/httpd/"$1"*error.log"}') | \
while read line; do \
    sed -i "/apache_error_log/a \\\t$line" /etc/fail2ban/paths-overrides.local ;
done

И, конечно же, повторил ту же команду, заменив «ошибка» на «доступ».

(ls -F /var/log/httpd/ | awk '/\// {print "/var/log/httpd/"$1"*access.log"}') | \
while read line; do \
    sed -i "/apache_access_log/a \\\t$line" /etc/fail2ban/paths-overrides.local ;
done

При проверке на fail2ban списки файлов отображаются должным образом

# fail2ban-client status apache-auth
Status for the jail: apache-auth
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 0
|  `- File list:    /var/log/httpd/error_log /var/log/httpd/myvhost/error_log
`- Actions
   |- Currently banned: 0
   |- Total banned: 0
   `- Banned IP list:   

Возможно, это не совсем то, что вы искали, но я надеюсь, что это поможет.

~ Крайло Адаран