记一次 网站index.php 入口文件 频繁 被篡改内容的解决方案。
in 技术Server with 0 comment

记一次 网站index.php 入口文件 频繁 被篡改内容的解决方案。

in 技术Server with 0 comment

近期一个朋友说是服务器项目经常出问题。发现最核心的问题是:

几kb的index.php 经常被篡改成几十kb的html内容,甚至会被注入很多关键字 js脚本等。烦不胜烦,所引发的后果也是很头疼的。

导致后果一(提示非法网站钓鱼网站):
微信图片_20190110131540.png

导致后果二(域名被封):
微信图片_20190110131633.jpg

前期他靠着 每天覆盖index.php 短暂的解决问题,但是一过晚上12点后左右,index.php 就会被篡改写入。

由于他的项目 用的框架系统都比较老,如dz 和一些老的cms系统。 甚至服务器系统用的是Windows。
一说到这,可能就会 引发框架之争,服务器系统之争,其实非也。

期间帮他重装过系统,Windows,Linux皆一样,如果防范做的不好,同样会被篡改 ,曾将index.php 在Linux 上改为444权限 ,照常会被修改到,只是有一点好,Linux在权限这块比较严格,Windows被篡改后 会导致无法删除 已被篡改的 index.php 文件 ,总权限用户都无法删除,会弹出警告框,但是Linux上可以删除掉,网站已被挂马,换了系统也是于是无补。

所以一直试图找出这个漏洞在哪,怀疑过是代码程序的后门,但是发现很多系统都会出现这个问题,项目又多,很难去排查。
所以只能防范。

解决方案:

最快速的解决方法 就是借用 工具。在这里推荐宝塔的防篡改工具插件.

微信图片_20190110132708.png

但是这个插件是有些系统无法支持的。
如微擎,宝塔官方说的是不支持微擎是微擎更新频繁的原因,开启了后会导致微擎无法更新。当然其实可以通过更改项目目录名称去让宝塔支持微擎,但是 这个方法得不偿失,因为这套系统的设计原因,关键目录,不是采用常量去定义的,而是直接写死在了大量 的 html 和css 和php 各种代码中去加以引入。 试过全文件替换,但是要替换之处太多,会替换错。
他们的屏蔽规则能突破,但是得花大精力去改项目结构,得不偿失,也不是持久之计。

所以对于这类系统,我们需要记得将index.php 的权限改为600。

重点来了(不开启文件保护的话就算你chmod 权限设置为000 还是会被改到):
同时 需要 执行
chattr +i index.php

这样root权限用户都无法修改此文件了。

那可能有人说,既然chattr +i index.php就可以了,为什么还需要用到一些安全插件。其实是因为网站被挂马后,会有大量恶意请求,攻击,甚至会自己开启一些进程,导致服务器内存大量被占用。

所以需要做出更多防范,不仅仅是保证入口文件从此不再被篡改!

Responses