Эй,
Я использую 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:
Возможно, это не совсем то, что вы искали, но я надеюсь, что это поможет.
~ Крайло Адаран