用PHP-FPM和SFTP保护PHP环境

我想为Debian服务器上的less量不受信任的PHP网站设置安全的环境。 现在所有的东西都运行在同一个Apache2上,mod_php5和vsftpd用于pipe理文件访问,所以还有改进的空间。

这个想法是使用nginx而不是apache,SFTP通过OpenSSH而不是vsftpd和chroot(在sshd_config中),每个网站的个人用户拥有自己的PHP进程池。 所有这些用户和nginx都是同一个组的一部分。

现在理论上我可以在所有PHP脚本上设置700个权限,而在Nginx必须提供的静态文件上设置750个权限。 从理论上讲,如果一个网站遭到破坏,所有其他用户的数据都是安全的,对吗?

是否有更好的解决scheme,每个网站需要更less的设置时间和内存?

干杯

使用php-fpmconfiguration中的chroot指令,应该保证足够的安全性; 那么允许用户只留在chrooted ftp(或scp)内,对于正确的Apacheconfiguration就足够了(不要让符号链接愚弄他!:P)。
然后,把所有的chroot都足够了:你甚至不需要在这些文件上设置权限,因为它们不能从另一个chroot环境读取。 🙂
其他的解决scheme,使您避免消耗内存是可能的…只是使用caching与清漆或类似的东西(我知道这不会很容易configuration不信任的用户顺便说一句)。

考虑到您对nginx的期望待办configuration,我刚刚遇到了一个很棒的bash脚本,专门用于Debian和Ubuntu,它可以自动执行大多数需要执行的任务,以便实现类似的设置场景你描述。

bash脚本自动在nginx上创build新的虚拟主机(服务器块),并允许您运行多个PHP池。 PHP-FPM处理从主服务器产生的所有池,并使每个池作为不同的用户和/或组运行。 通过在chroot环境中运行,并通过覆盖每个池的默认php.ini值,可以进一步隔离每个池。

在开发人员的网站上查看:

http://www.sebdangerfield.me.uk/2012/05/nginx-and-php-fpm-bash-script-for-creating-new-vhosts-under-separate-fpm-pools/

脚本还做了什么:

  • 为该站点创build一个新的系统用户
  • 使用基本模板为nginx创build一个新的vhostconfiguration文件
  • 创build一个新的PHP-FPM池,将uid和gid设置为新系统用户的池
  • 在新用户主目录中为该站点创build一个新的目录
  • 重新加载Nginx以允许检测到新的虚拟主机
  • 重新启动PHP-FPM以生成新的PHP工作者池

我希望它能帮助您优化您的设置时间。