块重复403年被禁止的请求与Fail2Ban

HTTP 403禁止当对web服务的登录失败或访问者试图访问不应该访问的文件时,web服务器发出。然而,一些访问者——好吧,大多数机器人——并不总是得到消息,并不断发送一个又一个请求。这可以是强行登录尝试或其他脚本尝试获得对系统的访问的一部分。

尽管发出403响应应该已经足够了,但有时还需要应用更强大的工具来防止坏参与者浪费服务器容量。Fail2Ban是一个工具,它可以读取您的服务器日志,并在识别出不希望的行为后,使用临时防火墙规则阻止重复的违法者。

本菜谱假设Fail2Ban已经安装,但未配置,并且Apache web服务器已经在运行并生成日志。这两种软件都可以在大多数Linux和*BSD发行版的包存储库中找到。

Fail2Ban需要一个过滤器定义文件和监狱配置文件。前一个文件指示Fail2Ban在Apache的日志文件中查找什么,第二个文件指示它如何响应匹配。

要设置过滤器文件,请在中创建一个文件/etc/fail2ban/filter.d/httpd-forbidden.conf包含以下几点:yabo亚博体育下载

【定义】failregex = > <主机——。* HTTP /[0 - 9] +([0 - 9] +) ?”AH01797:客户端拒绝

注意上面提到的failregex指令由分布在两行上的两个独立正则表达式组成。第一个过滤器regex匹配Apache访问日志中的403个响应,例如那些由WordPress和其他内容系统在登录尝试不正确后生成的响应。yabo亚博体育下载第二个筛选器正则表达式将与服务器配置本身阻塞的资源匹配,使用Apache错误日志格式。这两个过滤器都假设使用默认的日志格式;如果使用非标准日志记录格式,则必须调整过滤器。

在Fail2Ban中部署新过滤器之前,您可以使用fail2ban-regex包含在Fail2Ban中的实用程序。运行实用程序,第一个参数指向日志文件,第二个参数指向新的过滤器文件。您可能需要根据您的系统调整日志文件的路径。

2 .设置fail2ban-regex /var/log/httpd/error_log /etc/fail2ban/filter.d/httpd-forbidden.conf

如果您的日志包含一些已记录的403响应,那么在运行命令后,您应该看到相同数量的匹配。生成一些403个响应,这样您的日志就有一些示例匹配。

要设置监狱配置文件,请在中创建一个文件/etc/fail2ban/jails.d/httpd-forbidden.conf包含以下几点:yabo亚博体育下载

[httpd-forbidden] enable = true filter = httpd-forbidden backend = polling logpath = /var/log/ error_log /var/log/httpd/access_log bantime = 3600 maxretry = 6

这里的配置选项非常简单。使用我们前面创建的过滤器(通过名称而不是文件路径引用),导入两个标准Apache日志,并在30分钟内阻塞6个请求的任何IP地址,持续一小时。的banaction将默认端口改写为针对两个默认web端口80和443的多目标端口规则。

万一你不小心把自己锁了,你可以通过SSH登录,通过运行以下命令(用your代替示例IP地址)来解除你的IP阻塞:yabo亚博体育下载

客户端设置http -forbidden unbanip 192.0.2.42

方法中包含将返回403响应的任何地址是很重要的/ robots . txt指令文件。这将防止好的机器人遵守机器人指令文件,如Bingbot和Googlebot无意中被识别为坏机器人,并暂时锁定您的网站。