Apache多站点分用户权限设置/按站点设置不同运行用户

分享下apache的每个站单独分配一个用户,先假设下,系统 /data 目录下 有www.abc.com 和www.bbs.com ,要实现的目的就是比如www.abc.com被入侵,入侵者看不到并且修改不了www.bbs.com站内的文件。www.abc.om 用abc用户,www.bbs.com用bbs用户。

apache装完都有www-data用户www-data用户组,所以网站都是以这个用户用户组运行,要权限单独出来先建两个用户。

useradd -g www-data -d /dev/null -s /usr/sbin/nologin abc
useradd -g www-data -d /dev/null -s /usr/sbin/nologin bbs

然后 apt-get install apache2-mpm-itk (安全权限分离的安全模块)

再添加虚拟主机时候添加下指定用户

<VirtualHost *:80>
DocumentRoot “/var/www/www.abc.com”
ServerName www.abc.com
CustomLog /var/log/apache2/www.abc.com.log combined
AssignUserId abc www-data
<Directory “/var/www/www.abc.com”>
allow from all
Options -Indexes
</Directory>
</VirtualHost>

然后重启下apache,这样每个网站运行用户就分离出来了,然后就是设置目录以及文件权限了,

chown root.root /data
chmod 751 /data  (这样就可以禁止其它组查看该目录的权限,入侵者就看不到/data下有那些网站目录,当然你可以来个711 什么的)

cd /data
chown abc.www-data www.abc.com
chmod 500 www.abc.com
cd www.abc.com
chmod -R 700 upload 因为这个目录要上传,所以要给写人的权限
chmod -R 500 images 图片目录给500就可以,不需要写入,400也应该可以
chmod -R 500 *.php 防止php或者html被挂马,给个500或者400就行

就这些,就算自己做了个笔记,以后这块的安全设置还是用的着。

后续一:

经过几天的运行感觉这模块会限制流量,服务器只能跑到10M的流量,怎么都不会超过这个值,然后网站打开很慢,开始以为机房限速了,网线和接口都换 了还是不能超过10M,再怀疑网卡问题,服务器两个网卡对换下还是不行,因为前面是LVS,我就把这台后端给切掉,用另外一台4G内存没装这个模块的服务 器跑,到到10多M速度照样很快,开始真有点想不通,不可能是系统问题,再说也是8G内存,比4G大了一倍,过了一天才想到这个问题,后来 aptitude purge apache2-mpm-itk  后才恢复,看样子 apt-get的确实有问题,即使网站没AssignUserId abc www-data 没调用这个模块都会限速。所以这个模块需要编译安装试下。

后续二:

过了几天,去GG搜了搜,发现国外很多论坛关于apache这模块,有这样的设置:

<IfModule itk.c>
AssignUserID www-data www-data
StartServers 5
MinSpareServers 10
MaxSpareServers 20
ServerLimit 1500
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>

这才让我恍然大悟,apache2ctl -l 查看下,发现还是用的 itk.c 模块,所以 aptitude purge apache2-mpm-itk  后才让他恢复默认的 mpm_prefork 模式。

# apache2ctl -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
itk.c
http_core.c
mod_so.c

发表于: 2011-07-12,修改于: 2011-07-12 15:13

from http://blogold.chinaunix.net/u/26257/showart_2597688.html

发表评论?

0 条评论。

发表评论