PHP文件上传及执行预防

PHP文件上传及执行预防

我是共享 Linux 网站托管的安全管理员。我已尽最大努力在可能的限制内以多种方式保护服务器。这意味着,由于它是共享托管,将有数千个不同的网站,我无法使 safe_mode=on 或简单地关闭 file_upload。由于它是共享托管,大多数客户可能需要许多选项,因此我必须提供所有选项,同时确保服务器安全。

我认为,如果我做这项工作,它可以进一步加强共享服务器。你可以假设,我已经完成了互联网上为保护 Linux 系统而提供的大部分安全提示。

我已经安装了 cxs 来扫描网络和 ftp 上传,它工作得很好,而且我还修改了上传钩子,这样恶意代码就被阻止了。但 cxs 并不能 100% 阻止恶意代码

除了采取上述所有安全措施外,我还想实现一件事。我想找出所有网站中的所有上传目录并禁用这些目录的执行权限,我该如何实现呢?例如:如果任何网站都有文件夹“upload”或“user_uploads”目录,我想使用 PHP 或 shell 脚本找出这些目录并禁用 php 引擎或删除这些目录的可执行权限。所以,如果我能实现它,即使恶意代码被上传到服务器,也可以阻止其执行。

请帮帮我,我该如何实现这个目标?

注意:我可以根据以下情况阻止 php 执行https://stackoverflow.com/questions/2618908/how-to-prevent-a-specific-directory-from-running-php-html-and-javascript-langu

答案1

您可能在寻找错误的保护措施。即使是专业的 WAF 也只是对一个有点专注的攻击者来说是一个小障碍,您的自定义解决方案也不会好到哪里去 - 一个疏忽就搞砸了。

您可以扫描脚本文件扩展名的 HTTP 上传,从而防止最简单的上传攻击。

但总的来说,你应该改变你的方法,并期待成功的攻击。专注于你可以做的事情,以将它们保持在单个网络空间内(并制定良好的备份策略)。

首先不要将 PHP(或其他脚本)作为 Apache 模块运行。FPM/(f)cgi 允许您将所有脚本作为 Web 空间自己的 UID/GID 运行。这使您能够更加稳固地保护您的服务器,因为除了配置错误之外,影响整个服务器的唯一因素就是操作系统本身的权限提升漏洞 - 但最终只有一种策略可以应对某些漏洞:备份、升级、祈祷。

答案2

根据我的经验,你永远无法充分锁定服务器以防止代码执行(并留住用户/客户)。因此,你应该努力将某人执行代码的影响降到最低。如果你限制要上传/执行的静态编译二进制文件的执行选项(即:noexec mount webroot/userdirs),那么使用无二进制文件或最少二进制文件对网络服务器进行 chroot 会大有帮助。

还要考虑您的日志记录选项,以捕获任何可能突破您的防御的东西。

相关内容