fail2ban - для конкретного виртуального хоста
Можно ли настроить fail2ban для запрета IP-адресов только для определенного виртуального хоста? Например, у меня есть фильтр, который обнаруживает различные попытки запустить файл *.php внутри структуры сайта. Который я бы хотел забанить. У меня есть несколько веб-сайтов на сервере.
2 ответа
Нет. Fail2ban запрещает IP-адреса на брандмауэре. Виртуальные хосты определяются на уровне HTTP / SSL в стеке протоколов, тогда как брандмауэр Linux работает только на уровне IP / TCP.
Таким образом, брандмауэр ничего не знает о виртуальных хостах и о том, разрешать ли трафик или нет.
Вы можете разделить свои лог-файлы в определении apache viritualhosts. Тогда вы можете сказать fail2ban рассматривать только эти конкретные файлы журналов:
например
1) Измените определение виртуального хоста apache2. Logpaths:
<VirtualHost *:80>
ServerName www.foo.com
# if you want this vhost to listen to extra names, uncomment the next line
# ServerAlias foo.com www.bar.com bar.com
DocumentRoot /var/www/www.foo.com/htdocs
CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
</VirtualHost>
2) Отредактируйте настройки Fail2ban jail.local:
Настройте Fail2ban, как вам нравится. Вот несколько хороших примеров: https://www.digitalocean.com/community/tutorials/how-to-protect-an-apache-server-with-fail2ban-on-ubuntu-14-04
Для примера Virtualhost выше ваш лог-путь в jail.local должен выглядеть так:
logpath = /var/log/apache/www.foo.com-*.log