是否存在静态的服务器端漏洞/病毒/恶意软件/ BadThings™扫描器?

我们用通常的LAMP堆栈运行一个共享的托pipenetworking服务器。 它在很多年前就已经开始运行(Apache-1.3和PHP-3),并经历了许多次迭代。 我们力求有良好的系统pipe理政策,比如保持所有堆栈是最新的,检查弱密码,最小化攻击面,使用suhosin,关注系统日志等等。 当然,每个虚拟主机都被限制在它的目录中(对于FTP访问和php open_basedir)。

但在一天结束的时候,它总是一个运行不受信任的PHP垃圾网站服务器上传(通过阅读:未知和大多愚蠢的用户没有任何IT经验)与HTTP暴露在世界(networkingforms和whatnot)…这些情况是不太less见:

  • 用户将其密码提供给太多人,并且其网站​​受到攻击
  • 用户的个人电脑被盗用,FTP /networking应用程序/密码被盗
  • 用户安装蹩脚的PHP的东西,它会受到影响
  • 用户安装良好的PHP的东西(它甚至存在?),但不会在几年内更新,它会受到影响
  • 用户写自己的PHP的东西( ARGH!他们正在走出———-墙!
  • 等等。 你有这个想法。

当调查受到攻击的PHP / JS / HTML /无论什么东西,我们有时会以javascript的forms(无论是在.js文件或embedded在HTML的东西)的恶意软件,有时我们甚至find与Microsoft Windows内的恶意软件/病毒的.zip文件。

有了这样一个狂野的环境,就不可能在网站上反复运行自动化的漏洞testing,可能也不会太有用。 我也认为在这样一个共享的,通用的,失控的环境中,像mod_security这样的东西是没有问题的。

但是我想知道是否有任何类似杀毒软件的东西可以运行在服务器端,至less要查找已知的javascript或可执行文件泄漏的网站,或者老版本的PHPnetworking应用程序中已知的漏洞。 每天晚上从cron运行的东西,并得到一个不错的电子邮件报告。

有这样的事吗? clamav能检测一些令人讨厌的JS东西吗? (我假设我们已经可以使用它来检测Win32恶意软件上传的zip文件)还有什么我没有想到的,可以运行服务器端进行静态扫描? 那么存储在MySQL中的内容(例如,从表单上载的JavaScript存储在SQL中,以便以后在网页上显示)呢?

除ClamAV外,请考虑使用Maldet进行其他恶意软件检测。 根据文档,它有能力与ClamAV集成,虽然我没有亲自设置。

恶意软件上传时,Snort可以检测到。 此外,使用云Linux或SELinux等,这样可以防止许多作品妥协的网站,如果configuration这样做。 您也可以在Web服务器上运行卡巴斯基扫描,它可以检测到一些东西,但并不总是正确地对其进行消毒。 最重要的是,您可以按照这种方式实施策略,即上传的内容必须具有受限制的访问权限,而且您可以执行的操作是防止覆盖除了特殊文件夹以外的文件,这些文件无法链接到外部。 这是可能的,有很多方法来做到这一点。 ACL,SELinux,SUEXEC等

Clam AntiVirus是你想要的工具。 它在邮件系统中看到了常见的责任,但没有理由不能监视通过Web应用程序进入的上传。

请记住,您可能需要更改应用程序代码才能有效地使用它。 这将需要处理的事实,即ClamAV将扫描,检测,并可能删除/阻止文件独立于您的应用程序。 最好的select是从您的应用程序中为每次上传调用ClamAV,但这可能比您想投资的开发时间更长。

我build议您尝试使用Linux恶意软件检测( http://www.rfxn.com/projects/linux-malware-detect/ )。 把它放到cron运行定期扫描:

0 * * * * / usr / local / sbin / maldet -r〜>输出