当前位置: 首页 > 知识库问答 >
问题:

如何使用故障2ban为Nginx错误"主脚本未知"

皇甫夕
2023-03-14

我使用Ubuntu20.04和Fail2ban,但是像这样的错误不会被过滤。此错误出现在/var/log/nginx/error中。html" target="_blank">日志如何在Fail2ban中设置以阻止这样的机器人程序?

2020/12/31 18:02:34[错误] 674#674:*1003 FastCGI在stderr中发送:"主脚本未知",同时读取来自上游的响应头,客户端:xxx.xxx.xxx.xxx,服务器:mydomain.com,请求:"GET /wp-content/plugins/eshop-magic/download.php?file=../../../../wp-config.phpHTTP/1.1",上游:"fastcgi://unix:/var/run/php/php7.4-fpm.sock:",主机:"www.mydomain.com"

注意:我想使用fail2ban阻止所有试图访问不存在的网页的IP地址。我无法在筛选器上构建正确的正则表达式。D

共有2个答案

姜良哲
2023-03-14

既然你提到阻止脚本访问wp-Content的PHP脚本...

大多数好的插件只能通过WordPress的前端控制器(/index.php)执行,并且有很好的SEO URL,这是一个非常有效的说法。

一个好的插件将不允许它的执行从链接排序/wp-Content/plugins/

因此,如果您保持插件库干净,您就没有这样的插件,可以将任何请求视为/wp content/*。php恶意。

阻止这些操作可以自动完成,但是Fail2Ban在那里不是一个很好的选择,因为它需要首先扫描日志。相反,为什么不直接将此类恶意请求路由到一个脚本,该脚本会自动禁止防火墙中的此类IP呢。无日志扫描,立即阻塞。

我已经在蜜罐阻塞和WordPress的安全NGINX配置的最后几段中介绍了这种方法:

    location /wp-content/ { 
        # other PHP files cause automatic ban:
        location ~ \.php$ {
            include includes/honeypot.conf;
        }
    }

不幸的是,蜜罐文章是针对FirewallD的,但是您可以轻松地将其应用于其他发行版中的任何其他防火墙。

刘辰钊
2023-03-14

在您的监狱中添加[nginx badbots]部分。本地

[nginx-badbots]

enabled  = true
port     = http,https
filter   = nginx-badbots
logpath  = /var/log/nginx/error.log
maxretry = 2

创建名为nginx badbots的过滤器文件。conf内部过滤器。d

[Definition]

failregex = FastCGI sent in stderr: "Primary script unknown" .*, client: <HOST>

ignoreregex =

重新启动故障2ban

service fail2ban restart

检查您的nginx badbotsjail

fail2ban-client status nginx-badbots
 类似资料:
  • 这是我的错误。来自nginx的日志: 2014/10/02 14:51:29[错误] 15936#0:*1 FastCGI在stderr中发送:"主脚本未知",同时读取来自上游的响应头,客户端:134.106.87.55,服务器:sumomo.shitteru2.net,请求:"GET/index.phpHTTP/1.1",上游:"fastcgi://unix:/var/run/php5-fpm.

  • 本文向大家介绍使用脚本实现故障时自动重启Apache,包括了使用脚本实现故障时自动重启Apache的使用技巧和注意事项,需要的朋友参考一下 最近不知道为什么博客总是莫名其妙地挂掉, 重启Apache就好了,我也懒得去研究到底是哪里出了问题。 只是每次都需要手工SSH上去重启Apache,有点麻烦。 而且有时候在夜里挂掉,一晚上博客就都不能访问了。 后来终于忍无可忍,写了一段脚本来做这件事,代码如下

  • 我正在尝试用6台机器实现一个Redis集群。我有一个由六台机器组成的流浪集群: 运行redis服务器 我编辑了上述所有服务器的/etc/redis/redis.conf文件,添加了这个 然后我在六台机器中的一台上运行了这个程序; Redis集群已启动并运行。我通过在一台机器上设置值手动检查它显示在其他机器上。 我的问题是,当我关闭或停止任何一台主机上的redis server时,整个集群都会停止运

  • 我正在尝试使用JavaSeleniumWebDriver捕获网页的所有javascripts错误。 下面是我的代码示例: 作为Firefox驱动程序,我使用的是这个版本:geckodriver-v0。30.0-linux64。焦油广州 以下是我的Selenium版本: 我的问题是,在运行前面的代码时,出现以下异常: 司机信息:司机。版本:组织上的RemoteWebDriver。openqa。硒。j

  • 每当我试图运行我的GUI时,我在Eclipse WindowBuilder中都会得到奇怪的结果,左上角的区域出现了错误的文本(我真的不知道该怎么称呼这个问题)。我试着到处搜索,但显然没有其他人遇到这个问题。 图像问题:显示显示为Displa,“搜索”被置乱。 问题图片: 我试着创建一个新项目,试着重新安装eclipse,删除我所有的eclipse元文件,重新下载WindowBuilder,甚至从我

  • 有一种方法可以控制作业失败后在Azkaban中发生的事情,我的意思是,如果特定的作业失败,就做特定的事情,假设一个对hive的加载失败了,我想向splank发送错误,这可能吗?或者我应该创建特定的作业来插入并像python那样处理失败 谢谢