如何取消服务器/主机空间目录脚本的执行权限
如遇蓝奏网盘打不开lanzous替换成lanzoux尝试!
网站安全中,对目录的执行权限是非常敏感的,一般来说,可以写入的目录是不能够拥有脚本的执行权限的,像DedeCMS系统,可写入的有两个目录data、uploads,data目录主要是基本配置文件和缓存数据,uploads则是附件上传保存的目录,本篇将针对不同服务器环境来介绍如何取消这两个目录的执行权限,当然我们也建议用户其他一些生成纯静态html的目录,拥有可写入权限的也统统去除执行权限,这样系统会更为安全。
打开IIS中站点,在站点uploads目录、data目录以及静态html生成目录点击右键,菜单中选择“属性”,在目录属性面板选择执行权限为“无”即可。(如图1)
(图1)
IIS7也类似于IIS6.0,选择站点对应的目录,data、uploads及静态html文件目录,双击功能试图面板中的“处理程序映射”(如图2)
(图2)
在“编辑功能权限……”中,我们直接去除脚本的执行权限即可。(如图3)
(图3)
在Apache中,没有Windows 下IIS的图形管理界面,我们需要手工修改下apache的配置文件,来进行目录脚本的执行权限的设定。
首先我们找到apache的配置文件httpd.conf,通常情况下,该配置文件在apache安装目录下的conf文件夹中(如图4)。
(图4)
打开httpd.conf文件,找到内容中如图5的位置:
(图5)
将需要限制执行脚本文件的目录配置添加到下方:
配置内容为:
1
2
3
Deny from all
4
5
配置内容中的DIR为需要限制执行脚本文件的目录,FilesMatch后的内容为需要限定的执行的脚本后缀名。例如:这里需要禁止测试站点uploads文件夹下的PHP,ASP,JSP脚本的运行,则进行如下图6配置:
(图6)
在配置完成后,重启一下apache,配置便生效!
在操作前,uploads文件夹下我新建了一个index.php文件,图7为未作配置前访问情况
(图7)
图8为重启apache后访问该页面的效果。
(图8)
在配置前需要确认你的空间是否支持.htaccess和rewrite,该方法基于.htaccess文件中使用rewrite来达到禁止指定脚本的运行效果。
规则内容如下:
1
RewriteEngine on RewriteCond % !^$
2
RewriteRule uploads/(.*).(php)$ – [F]
3
RewriteRule data/(.*).(php)$ – [F]
4
RewriteRule templets/(.*).(php)$ – [F]
针对uploads,data,templets 三个目录做了执行php脚本限制;
将如上内容存储至到.hatccess文件中,将该文件存放到你的站点根目录下,
这样,目录脚本的执行权限就控制好了,规则上传前后的效果同图7,图8。
我们不建议用户把栏目目录设置在根目录,原因是这样进行安全设置会十分的麻烦,在默认的情况下,安装完成后,目录设置如下:
(1) data、templets、uploads、a或5.3的html目录,设置可读写,不可执行的权限;
(2) 不需要专题的,建议删除special 目录,需要可以在生成HTML后,删除special/index.php 然后把这目录设置为可读写,不可执行的权限;
(3) include、member、plus、后台管理目录设置为可执行脚本,可读,但不可写入(安装了附加模块的,book、ask、company、group 目录同样如此设置)。
(1) 虽然对install 目录已经进行了严格处理,但为了安全起见,我们依然建议把它删除;
(2) 不要对网站直接使用MySQL root用户的权限,给每个网站设置独立的MySQL用户帐号,许可权限为:
SELECT, INSERT , UPDATE , DELETE
CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES
由于DEDE并没有任何地方使用存储过程,因此务必禁用FILE、EXECUTE 等执行存储过程或文件操作的权限。
对于会用Linux 的用户,相信大多数都已经懂得这些东西,IIS用户,请看下图:
3.1设置目录为只读权限
首先复制下权限
设置目录为只读权限
3.2设置目录不允许执行脚本
此外还需要注意问题是,不管IIS还是Apache都不要把.php和.inc文件加入mime中,这样系统会禁止下载这些文件。
如果是Windows2003下,可以对Apache进行如下操作:
4.1在计算机管理里的本地用户和组里面创建一个帐户,例如:DedeApache,密码设置为DedeApachePWD,加入guests组(如果出现问题,可以赋予user权限);
4. 2 打开开始->管理工具->本地安全策略,在“用户权限分配”中选择“作为服务登陆”,添加DedeApache用户;
4.3.计算机管理里面选择服务,找到apache2.2,先停止服务,右击->属性,选择登陆,把单选框从本地系统帐户切换到此帐户,然后查找选择DedeApache,输入密码DedeApachePWD,然后点确定(这个时候apache还不能正常启动,一般情况肯定会报错:Apache2.2 服务因1 (0x1) 服务性错误而停止。);
4.4.赋予apache安装目录(比如:D:/apache2.2)以及web目录(比如D:/wwwroot)DedeApache帐号的可读写权限,去除各磁盘根目录除administror与system以外的所有权限,赋予DedeApache安装目录所在的磁盘根目录apache帐户的可读取列目录权限
我们在站点配置中可以添加如下内容:
01
02
03
Order Allow,Deny
04
Deny from all
05
06
07
08
09
Order Allow,Deny
10
Deny from all
11
12
13
14
15
Order Allow,Deny
16
Deny from all
17
18
19
20
21
Order Allow,Deny
22
Deny from all
23
24
这里对应就取消了对应目录的脚本执行权限。
另外在DedeCMS V5.7中用户也可以设定data目录到上一级非web访问目录,基本操作如下:
5.1.将data目录移动到上一级目录中,这里直接剪切过去就可以了;
5.2.配置include/common.inc.php中DEDEDATA文件
define(‘DEDEDATA’, DEDEROOT.’/data’);
可以改成类如:
define(‘DEDEDATA’, DEDEROOT.’/http://www.dede58.com/a/data’);
5. 3.后台设置模板缓存路径