2、以单独的用户和用户组运行Apache
Apache可能默认地以nobody或daemon运行。让Apache运行在自己没有特权的帐户比较好。例如:用户apache。
创建apache用户组和用户。
- groupadd apache
- useradd -d /usr/local/apache2/htdocs -g apache -s /bin/false apache
更改httpd.conf,正确地设置User和Group。
- # vi httpd.conf
- User apache
- Group apache
之后重启apache,执行ps -ef命令你会看到apache以“apache”用户运行(除了第一个都是以root运行之外)。
- # ps -ef | grep -i http | awk '{print $1}'
- root
- apache
- apache
- apache
- apache
- apache
3、限制访问根目录(使用Allow和Deny)
在httpd.conf文件按如下设置来增强根目录的安全。
- <Directory />
- Options None
- Order deny,allow
- Deny from all
- </Directory>
在上面的:
- Options None –设置这个为None,是指不激活其它可有可无的功能。
- Order deny,allow – 这个是指定处理Deny和Allow的顺序。
- Deny from all –阻止所有请求。Deny的后面没有Allow指令,所以没人能允许访问。
4、为conf和bin目录设置适当的权限
bin和conf目录应该只允许授权用户查看。创建一个组和把所有允许查看/修改apache配置文件的用户增加到这个组是一个不错的授权方法。
下面我们设置这个组为:apacheadmin
创建组:
- groupadd apacheadmin
允许这个组访问bin目录。
- chown -R root:apacheadmin /usr/local/apache2/bin
- chmod -R 770 /usr/local/apache2/bin
允许这个组访问conf目录。
- chown -R root:apacheadmin /usr/local/apache2/conf
- chmod -R 770 /usr/local/apache2/conf
增加合适的用户到这个组。
- # vi /etc/group
- apacheadmin:x:1121:user1,user2
5、禁止目录浏览
如果你不关闭目录浏览,用户就能看到你的根目录(或任何子目录)所有的文件(目录)。
比如,当他们浏览http://{your-ip}/images/而images下没有默认首页,那么他们就会在浏览器中看到所有的images文件(就像ls -l输出)。从这里他们通过点击就能看到私人的图片文件,或点点击子目录看到里面的内容。
为了禁止目录浏览,你可以设置Opitons指令为“None“或者是“-Indexes”。在选项名前加“-”会强制性地在该目录删除这个特性。
Indexes选项会在浏览器显示可用文件的列表和子目录(当没有默认首页在这个目录)。所以Indexes应该禁用。
- <Directory />
- Options None
- Order allow,deny
- Allow from all
- </Directory>
- (or)
- <Directory />
- Options -Indexes
- Order allow,deny
- Allow from all
- </Directory>
6、禁用.htaccess
在htdocs目录下的特定子目录下使用.htaccess文件,用户能覆盖默认apache指令。在一些情况下,这样不好,应该禁用这个功能。
我们可以在配置文件中按如下设置禁用.htaccess文件来不允许覆盖apache默认配置。
- <Directory />
- Options None
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
(责任编辑:ken)