Как мне указать несколько лог-файлов для тюрьмы в 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