我们正在运行一个内部专用服务器,上面有 100 个网站。其中一些网站非常不安全,而且服务器管理得也不太好。有人闯进来,搞乱了一堆东西,还通过破坏一些网站、索要钱财等方式来骚扰我们。
我们做了很多修复,但仍然存在某种后门,他可以通过它进入。我们找到并删除了一些类似黑客控制面板的文件,但由于该文件只是名为 contactUs.php,所以不可能知道这些文件的所有实例是否都已被删除。
我意识到这是一个非常广泛的主题,也是一个可能很难回答的问题,但人们会采取什么步骤来找出这个人是如何进入系统的呢?
这是一台主要运行 PHP 站点的 Fedora 机器。
答案1
老实说,如果你经营一家企业,我不会试图研究攻击者,我只会将他们拒之门外,然后继续前进。与这样的人斗智斗勇,不值得花费时间、精力和挫折。以下是摆脱他们的一些想法:
- 使用已知良好的介质从头开始重新安装盒子。
- 在开始将任何网站放在上面之前,请确保它已完全修补并保持最新状态。如果您正在运行过时的 Fedora 版本(未主动接收安全更新的版本),请升级到最新版本(或使用具有适当安全支持的版本)。
- 不要通过 运行 PHP 脚本
mod_php
,因为利用不可避免的权限问题(由于必须授予 Web 服务器对系统各个部分的写入权限)是小菜一碟。请使用 suexec 或 suphp。 - 以与主“FTP 帐户”(或等效帐户)不同的用户身份运行 PHP 脚本,因此如果您有用户
example
(用于站点example.com
),则以名为(或等效帐户)的用户身份运行其动态内容example-cgi
。然后仅授予用户example-cgi
对文件系统树中需要它们的部分的写入权限。(这需要修改 suexec 的权限检查,但值得这样做)。这样,攻击者就无法运行修改站点 PHP 代码的脚本,并且他们必须付出更多努力才能注入漏洞。 - 主动、持续地查找并销毁所有可在全球范围内写入的文件。
- 限制来自已知位置的 FTP 和 SSH 连接,而不是允许整个互联网连接。
- 使用类似 PAM 的 cracklib 模块来强制使用强密码 - 或者更好的是,完全摆脱 FTP 并要求使用 SSH 密钥才能进入机器。
可能还有一堆我目前想不起来的事情,但这会让你坚持一段时间。
答案2
一些想法:
如果您能获得他修改的文件的证据,那么您可能就能获得一个时间戳,您可以将它与服务器本身或中间框(防火墙等)上的一些日志关联起来。如果这个人自己清理了,有重复的日志或在他登录的框上设置了远程日志记录 - 这样他就无法抹去证据。互关联至少可以说很棘手,尤其是在您的负载下。
除此之外,使用 rkhunter、chkrootkit 和 OSSEC,看看结果如何。或者设置一个蜜罐,看看它是否会上钩 :)