Php 来自localhost的这些.env GET请求是否表示有攻击?

Php 来自localhost的这些.env GET请求是否表示有攻击?,php,security,nginx,heroku,websecurity,Php,Security,Nginx,Heroku,Websecurity,在Heroku托管的站点上出现了一些间歇性的5xx错误后,我刚刚查看了日志,在那里我发现了许多来自localhost的错误,它们是对隐藏文件的请求,通常是.env,但也有类似“.well-known/assetlinks.json”的内容,偶尔还有不存在的子文件夹中的.env 这些请求并不频繁(每天15-30次),但似乎已经持续了一周。他们还遇到了一个“规则禁止的访问”,据我所知是nginx 请求类似于: 2020/09/28 14:37:44[错误]160#0:*1928规则禁止访问,客户端:

在Heroku托管的站点上出现了一些间歇性的5xx错误后,我刚刚查看了日志,在那里我发现了许多来自localhost的错误,它们是对隐藏文件的请求,通常是.env,但也有类似“.well-known/assetlinks.json”的内容,偶尔还有不存在的子文件夹中的.env

这些请求并不频繁(每天15-30次),但似乎已经持续了一周。他们还遇到了一个“规则禁止的访问”,据我所知是nginx

请求类似于:

2020/09/28 14:37:44[错误]160#0:*1928规则禁止访问,客户端:10.45.153.152,服务器:localhost,请求:“GET/.env HTTP/1.1”,主机:已删除


我在服务器上没有任何ENV文件,而且nginx似乎在阻止请求,所以感觉没有任何危害。重新启动所有的dynos似乎扼杀了这项活动(基于几个小时过去的情况),但让我担心的是,这些似乎是“从房子里来的”。这里有什么我应该关心的吗?这是机器人利用具有本地访问权限的系统中的错误进行攻击的情况吗?

/.env
的请求无论如何都是恶意的

许多应用程序(例如基于Laravel的应用程序)使用
.env
文件来保存数据库密码等非常敏感的数据。黑客/他们的自动化脚本试图检查
.env
是否可供公众访问

如果他们首先可以删除
.env
文件,这表明服务器配置不正确,并且服务器管理员以如此糟糕的方式设置了服务器,则应视为对后果负责

后果通常是一回事。黑客一旦获得
.env
数据,就拥有数据库凭据,并且几乎不需要嗅探就能找到PhpMyAdmin的URL。因为通常,“错误配置”包括可公开访问的PhpMyAdmin

下一件事你知道,他们给你发电子邮件说你的数据库不见了,他们已经有了。除非你有备份,否则要想找回它,唯一的办法就是支付一些加密货币

怎么办 首先确保
.env
不在可公开访问的目录中。 即使是,也让NGINX拒绝访问它们,例如拒绝访问所有隐藏文件:

location ~ /\. {
    deny all;
}
无论您的系统上是否有任何
.env
文件,您都可以确定与在web上请求这些文件相关的流量是恶意的。要减少任何CPU负载并防止他们进一步尝试查找网站漏洞,您可以使用,例如:

。。。将触发针对尝试读取
.env
文件的IP的即时防火墙禁令。
这证明是有用的,因为
.env
攻击可能只是许多其他可能的攻击中的一种,而且由于相关的IP被阻止,它不能再尝试了。

我认为或更适合问这个问题。我更担心的是本地主机方面,机器人似乎在本地运行,暗示服务器上存在漏洞。重启dynos似乎会扼杀这一点,因此,如果允许访问,那就不是磁盘访问。不是很好,但不是最坏的情况。您指出的蜜罐方法对我来说是新的,看起来非常有用,因此感谢您向我指出了这个方向。从您的日志条目中,
10.45.153.152
似乎是一个内部网(LAN区域)IP地址,
服务器:localhost
不保证客户端在同一台机器上。您可能有一个名为localhost的
服务器,但可以从外部访问,因为它是默认服务器(因此任何点击服务器IP的人都会“请求”该服务器块),或者远程客户端在与您的服务器IP通话时发送
主机:localhost
location ~ /\.env$ {
    include includes/honeypot.conf;
}