推荐的方式来限制Apache用户

接下来为什么要限制Apache用户 ,另外两个问题就出现了:

  1. 限制Apache用户可以在文件系统中遍历和读取的地方的build议方法是什么?
  2. 如何处理叉炸弹和其他shell脚本问题? (bash脚本是允许的)

我可能的解决scheme(我喜欢知道你select哪个解决scheme,为什么):

  1. chroot或者mod_chroot
  2. 禁用bash或使用受限制的BASH

如果您觉得合适,请提供其他解决scheme。 (也许selinux是?)

当前状态:

  • 用户可以执行bash脚本(例如通过PHP)
  • suexec是活动的
  • Apache请求与FastCGI for PHP一起提供

编辑:

对不起,没有提供赏金呢。 我需要知道的最后一件事是关于问题#2:当通过PHP允许bash脚本时,我怎样才能防止我的系统受到攻击(叉炸弹,读取敏感数据)? SELinux / Apparmor能抵御这些事情吗?

SELinux或Apparmour是实现真正的高级安全性的严肃方式,而不仅仅是Web应用程序。 虽然他们并不简单,但是很多现代化的发行版在整合Redhat / SELinux和Ubuntu / Apparmour方面做了很多工作(后者被认为更容易维护)。

如果安全是你想仔细阅读的东西,我build议尽快开始他们!

使用suexec ,运行PHP作为一个FastCGI服务(可能与safe_modeopen_basedir但这些将来会被弃用)。 由于suexec他们不应该被允许进入其他目录,假设每个网站都有自己的专门用户,例如user1用于/var/www/www.website1.com/user2用于/var/www/www.website2.com/

修改你的/etc/fstab文件,使其不允许在/tmp可执行文件。

如果真是偏执狂,你可以一起禁用CGI / FastCGI,并将Apache设置为代理软件(Ruby on Rails应用程序,Catalyst应用程序等)的独立应用程序。 而这又由其各自的用户执行。

目前的趋势就是运行轻型虚拟化(openvz,lxc等)和分离系统中的客户。

这不会使您100%分离资源,但会大大降低与多个客户之间共享资源相关的风险。

一般来说共享主机==共享安全,不pipe你有多强硬,都可以确定有人会滥用它;)

为了确保Apache生成的CGI以拥有它们的用户身份运行,我依赖于suPHP ; 它不限于PHP,可以用任何解释器处理任意的CGI,并提供一个相对可控的环境来执行它们。 一旦将用户定位为非特权帐户,就需要像平常那样通过login权限保护系统(每个用户的进程和内存限制,用于保护系统文件的非SELinux策略)用户等)。