是否可以设置 fail2ban 以仅禁止某些虚拟主机的 IP 地址?例如,我有一个过滤器,可以检测在网站结构内运行 *.php 文件的各种尝试。我想禁止它。我在服务器上有多个网站。
答案1
不会。Fail2ban 禁止防火墙上的 IP 地址。虚拟主机在协议栈的 HTTP/SSL 级别上定义,而 Linux 防火墙仅在 IP/TCP 级别上工作。
因此,防火墙对虚拟主机一无所知,也不知道是否允许流量。
答案2
您可以在 apache 虚拟主机定义中分离日志文件。然后您可以告诉 fail2ban 仅考虑这些特定的日志文件:
例如
1)编辑apache2虚拟主机定义日志路径:
<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