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

Heyo,

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

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

Основные лог-файлы apache2 (для localhost и default) находятся в /var/log/apache2,

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

Страница man 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 не запускаться.

2 ответа

Решение

Похоже, что глобальный каталог не имеет никакого эффекта.

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

Каждый из моих виртуальных хостов имеет соответствующие журналы ошибок / доступа в подкаталоге /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:   

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

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

Что касается меня, я просто делаю это простым в своем файле конфигурации тюрьмы:

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

То же самое для доступа

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

Затем, чтобы проверить это после перезагрузки клиента Fail2ban:

      sudo fail2ban-client status apache-auth
sudo fail2ban-client status php-url-fopen
Другие вопросы по тегам