使用mpm-peruser为apache的虚拟主机提供一个绝对安全的单用户进程访问机制

前段时间再给自己的linux配置服务 碰到了些问题 主要是关于apache访问用户方面的 这里说下自己对于linux下apache安全配置的心得

首先 在中国用apache的人很多 但是 真的遇见问题tmd搜索引擎一点东西都找不出来 包括一些大的技术论坛 涉及到最简单的安全问题 还有人会有常识性的错误 本文主要解决的是apache下的虚拟主机的安全问题 我所使用的 使每个虚拟主机对应单独用户进程的方法

虚拟主机主要是单ip下 给80口通过不同的域名请求 映射到相应的域名服务 使他看上去像一个独立的ip主机 这个很简单 因为基本一般的网站都使用虚拟主机 我们在实际操作中会遇见一些问题 默认的apache安装完毕之后 会建立www-data这个用户以及www-data这个用户组 所有的web请求都会通过apache使用这个用户名和组来访问linux系统的资源 如果整个主机上的虚拟主机都是你的 比如某些公司的主机 那么安全可能不是特别重要 一个用户进程也ok 当然这也不对 要防止本身程序的漏洞 如果是多人合用的 那么每个用户都应该有一个单独的进程 这样不会产生跨目录访问的问题

举例子 /var/www/www.aaa.com 是一个虚拟主机 /var/www/www.bbb.com 是另外一个虚拟主机 如果他们都是用www-data权限的话 www-data的权限在整个/var/www目录 他们在www.bbb.com主机上的用户 可以轻松获得www.aaa.com主机上文件所有文件 包括 包含密码的配置文件

在一般操作中 可能apache多是和php结合 我们可以再虚拟主机配置文件中使用 php_admin_value open_basedir /var/www/www.bbb.com 来锁定他的php权限 但是这样不是一个最好的做法 这样 可能会让某些session cache cookie目录失去作用 因为他们在权限以外 更大的问题是 这个设置命令仅仅对php有效 如果其他语言python perl都无用

所以思路是 让每个虚拟主机的访问请求都被转换成一个对应的用户来访问到linux系统的资源

首先介绍下apache2的suexec 从apache文档可以看到这样一句话 suEXEC特性使得Apache可以使用与调用web服务器的用户不同的用户身份来运行CGI和SSI程序。而通常情况下,CGI或者SSI程序执行时使用和web服务器相同的用户身份。

suexec主要代替了apache2之前的user group命令 在配置中使用 SuexecUserGroup user group 这样的命令 要注意的地方有2点 suexec只能限制cgi和ssi 也就是说php需要运行在cgi模式下 然后一点就是通过apt-get安装出来的apache2没有带suexec 需要apt-get install apache2-suexec 这里额外说下 ubuntu9.04的默认apt源里没有suexec你需要编辑 /etc/apt/sources.list 把注释掉的源开启! 然后apt-get update 那样就能找到suexec了 en

suexec在使用过程中效果不错 不过毕竟他需要托管的程序都在cgi模式下 需要寻找一个更好的办法 这里额外说明一点 再一次配置中 我的php没有在cgi模式下 suexec仍然起作用 不过后来没有尝试出来 因为有了更好的办法

suexec的补充就是 还有一个类似的包裹存在 叫做suphp 看名字就知道专门为php设计 可以google搜索到

最后的重点来了 apache 的mpm-peruser多路处理器 我们知道apache2引来了mpm这个概念 不同操作系统版本的apache2都有不同的mpm 这样可以有最佳的速度 unix下的默认mpm是prefork 我们要使用mpm-peruser 他支持每个虚拟主机使用不同的身份访问linux资源 他不存在兼容语言模式问题 因为他运行在最高级的mpm 他的速度比suexec快 在此看来 这是一个完美的选择 使用apt-get 安装实在太方便 apache2-mpm-itk 就ok了 在虚拟主机配置文件中 ServerEnvironment user group 完成配置 重启apache 安全的apache2出现了 当然 速度比prefork mpm慢 但是 安全第一!

最后 我想说iis下设置单独虚拟主机的身份要方便很多 iis7是划时代的 使用任何软件都是为了完成目标 在linux下我就用apache2 支援的模块多 libapache2-svn等 但许多人都通过软件来代表自己的口味 维护软件就好像维护自己的面子 觉得自己很新潮 就上Zeus nginx 使用新软件无可厚非 但是通过使用的软件来标榜自己就很晕菜 起码得先用好他 好像用了windows就是官僚 不思进取 用了linux就是自由 真的 适合自己才是最好 en....

发表评论

最新日记

关闭