我想在 Debian 服务器上为少数不受信任的 PHP 网站设置安全环境。目前所有内容都在同一个 Apache2 上运行,使用 mod_php5 和 vsftpd 进行管理文件访问,因此还有改进的空间。
这个想法是使用 nginx 而不是 apache,通过 OpenSSH 而不是 vsftpd 进行 SFTP 和 chrooted(在 sshd_config 中),每个网站的单个用户都有自己的 PHP 进程池。所有这些用户和 nginx 都属于同一组。
现在理论上我可以为所有 PHP 脚本设置 700 个权限,为 nginx 必须提供的静态文件设置 750 个权限。理论上,如果一个网站被攻破,其他所有用户的数据都是安全的,对吗?
是否有更好的解决方案,可以减少每个网站的设置时间和内存需求?
干杯
答案1
在 php-fpm 配置中使用 chroot 指令,应该可以保证足够的安全性;然后,只要正确配置 Apache,允许用户只停留在 chrooted ftp(或 scp)内就足够了(不要让符号链接欺骗他!:P)。
然后,将所有内容 chrooted,应该就足够了:您甚至不需要在文件上设置 che 权限,因为它们无法从另一个 chrooted 环境中读取。:)
其他解决方案,让您避免消耗内存是可能的……只需使用 varnish 或类似的东西进行缓存(顺便说一句,我知道对于不受信任的用户来说配置起来并不容易)。
答案2
考虑到你对 nginx 所需的待办事项配置,我刚刚遇到了一个很棒的bash 脚本设计用于Debian和 Ubuntu 可以自动执行大多数需要执行的任务,以实现与您描述的类似的设置场景。
bash 脚本会自动在 nginx 上创建新的虚拟主机(服务器块),并允许您运行多个 PHP 池。PHP-FPM 处理从主池派生的所有进程,并让每个池以不同的用户和/或组身份运行。通过在 chroot 环境中运行并覆盖每个池的默认 php.ini 值,可以进一步隔离每个池。
请访问开发者的网站进行查看:
该脚本还做了什么:
- 为网站创建新的系统用户
- 使用基本模板为 nginx 创建新的 vhost 配置文件
- 创建一个新的 PHP-FPM 池,并将 uid 和 gid 设置为新系统用户的 uid 和 gid
- 在新用户主目录中为网站创建新目录
- 重新加载 Nginx 以允许检测到新的 vhost
- 重新启动 PHP-FPM 以生成新的 PHP 工作池
我希望它能帮助您优化设置时间。