如何find未经授权的人进入服务器的入口点

我们正在运行一个内部有100个站点的专用服务器。 其中一些网站是非常不安全的,箱子pipe理得不好。 有人进来了,弄乱了一堆东西,通过玷污一些网站,要钱等等来缠着我们。

我们做了很多的修复,但是还有一些他可以进入的后门。我们find并删除了一些黑客控制面板的文件,但是由于这个文件被称为contactUs.php,所以不可能知道这些文件的所有实例都被删除了。

我意识到这是一个非常广泛的话题,可能难以回答的问题,但是我们会采取哪些步骤来弄清楚这个人如何进入系统?

这是一个主要运行PHP网站的Fedora机器。

老实说,如果你经营一家公司,我不会试图研究攻击者,我只是locking他们,继续前进。 与这样的人进行斗智斗勇的时间,麻烦和挫败感是不值得的。 一些想法摆脱他们:

  • 重新安装盒子,从头开始,使用已知良好的媒体。
  • 在开始放置任何网站之前,请确保已完成修补并保持最新状态。 如果您正在运行过时的Fedora发行版(不积极接收安全更新的版本),请升级到最新版本(或者使用具有适当安全支持的东西)。
  • 不要通过mod_php运行PHP脚本,因为这是孩子们的玩法,要利用不得不授予Web服务器对系统各个部分的写入权限所导致的不可避免的权限问题。 使用suexec或suphp。
  • 将PHP脚本作为独立用户从主“FTP帐户”(或等价物)运行,因此,如果您有一个用户example (对于站点example.com ),则可以使用名为example-cgi (或等效)的用户运行其dynamic内容, 。 然后只允许example-cgi用户写入访问文件系统树的那些需要它们的部分。 (这需要修改suexec的权限检查,但这是值得的)。 这样攻击者就不能运行修改网站PHP代码的脚本,而且他们必须更加努力地注入漏洞。
  • 在积极的,持续的基础上寻找和摧毁所有世界可写的文件。
  • 限制来自已知位置的FTP和SSH连接,而不是允许整个Internet连接。
  • 使用类似PAM的cracklib模块来强化密码 – 或者,更好的办法是完全摆脱FTP,并要求使用SSH密钥才能进入机器。

可能还有其他的东西我现在还想不起来,但是这会让你暂时停下来。

一些想法:

如果你能得到他修改过的文件的证据,你可能会得到一个时间戳,你可以在服务器本身或中间盒(防火墙等)上logging一些日志。 如果这个人自己清理完毕,在他login的盒子上有重复的日志或者设置远程login – 这样他就不能抹去证据。 互相关将是棘手的至less可以说,尤其是在你的负载。

除此之外,使用rkhunter,chkrootkit和OSSEC,看看它发生了什么。 或者build立一个蜜jar,看看他是否咬了:)