【织梦dedecms网站安全设置】织梦Dedecms网站安全优化之重定义目录

更新时间:2019-02-15    来源:php安全    手机版     字体:

【www.bbyears.com--php安全】

很久之前就在寻找重新定义织梦(dede)目录结构的教程,但是苦苦寻找之后还是无果!

前段时间,用织梦做了一个学校的网站,放到服务器上没过一周,网站就被注入黑链。相比之前学校新闻网,这次来的更狠,前台后台一并注入,并嵌入很多隐藏的iframe。没办法,这次我也得狠点。

更改织梦默认目录名,只是在一定程度上加大黑客判断网站系统为dede,从而加到攻击难度。(用点简单的seo/seo.html" target="_blank">搜索引擎技巧,就可以找到一片织梦站点,如:inurl:/plus/view.php?aid=作关键字百度谷歌一下)。

接下来,简单说一下到底要做什么。首先把织梦安装在站点的子目录,然后再把常用的模块及目录转移到网站的根目录,并重新命名。如此,就可以把你排除在那一片的织梦站点外了。

关于织梦安装到子目录,就不多说了。如果你想把根目录的织梦站点转移到子目录,你可以参考:织梦网站搬家及常见问题解决汇总。
织梦安装在子目录,新闻显示在根目录

关于织梦新闻要显示和根目录一样,有如下三个步骤。

    配置当前位置中的主页链接http://www.111cn.Net

    下面截一张图,如下:

DEDE-CMS后台参数设置1

    DEDE-CMS后台参数设置1

    按以上操作之后,网站中,当前位置的“主页”链接就变成了”http://www.111cn.net/”
    生成网站首页

    如果你选择网站浏览方式为静态的话,你必须把下图中的主页位置中的“../index.html”更改为“../../index.html”。

织梦主页更新向导

    织梦主页更新向导

    如果你更喜欢网站为动态浏览的话,你可以新建一个名为index.php文件,并在里面加入如下内容,然后放到网站的根目录即可。

                include "cms/index.php";
        //cms为你织梦安装的子目录名
        ?>

    使生成的新闻内容出现在网站的根目录

    图1中的文档HTML默认保存路径,是新闻生成主目录,也就是默认的所有的HTML文档都会生成在这个目录之下,方便管理。下面,打开织梦栏目编辑窗口,如下图所示:

织梦栏目快捷编辑窗口

    织梦栏目快捷编辑窗口

    把“文件保存目录”中“{cmspath}”给去掉即可。

    以上提供的方法仅适用于栏目为静态浏览方式,如果栏目为动态浏览的话,网址中又会出现在织梦安装目录,具体解决方案请见下文中“把plus目录移到站点根目录”部分。

通过以上的设置,基本上已经实现了根目录浏览效果。但是仔细想想,织梦安装目录其实仍然暴露在外。下面,将介绍把plus,templets,uploads目录移到站点根目录,并重新命名。
织梦目录重定义
把织梦模板目录移到站点根目录

打开网站,查看源代码,你就很容易根据链接的CSS文件路径,分析出织梦的安装目录,所以把templets目录移到站点根目录也是有必要的。下面来说一下如何操作:

    打开织梦的目录配置文件include/common.inc.php
    把更改第18行的代码,下面贴出了原来的代码和更改后的代码。

        //更改之前的代码
        define("DEDETEMPLATE", DEDEROOT."/templets");
        
        //更改之后的代码,表示把模板目录放到网站根目录下,并重命名为style目录
        define("DEDETEMPLATE", DEDEROOT."/../style");

    接着,找到文件第185行,修改代码如下:

        //模板的存放目录
        $cfg_templets_dir = $cfg_cmspath."/templets";
        
        //把以上代码更改为以下即可:(模板的存放目录)
        $cfg_templets_dir = "/style";

在按照以上操作之后,访问网站首页时可能会提示“无法在这个位置找到: head.htm”。主要是织梦的标签{dede:include filename=”head.htm”/}无法正常载入文件,从而引起错误。下面来说一下解决方案:

    打开include/dedetag.class.php文件,到1000行(可以通过查找“IncludeFile”,定位到此位置),找到如下代码:

        if( file_exists(DEDEROOT."/templets/".$filename) )
        {
        $okfile = DEDEROOT."/templets/".$filename;
        }
        else if(file_exists(DEDEROOT."/templets/".$cfg_df_style."/".$filename) )
        {
        $okfile = DEDEROOT."/templets/".$cfg_df_style."/".$filename;
        }
        else
        {
        return "无法在这个位置找到: $filename";
        }

    把以上代码更改为:

        if($filename=="")
        {
        return "";
        }
        if( file_exists(DEDEROOT."/../style/".$filename) )
        {
        $okfile = DEDEROOT."/../style/".$filename;
        }
        else if(file_exists(DEDEROOT."/../style/".$cfg_df_style."/".$filename) )
        {
        $okfile = DEDEROOT."/../style/".$cfg_df_style."/".$filename;
        }
        else
        {
        return "无法在这个位置找到: $filename";
        }

把织梦上传目录移到站点根目录

相比把模板目录移到根目录,上传目录的移动也是很有意义的。下面来说一下如何来把uploads目录移到站点根目录并重命名为upload。

    首先进入网站后台,“系统基本参数设置”中把“图片/上传文件默认路径:”更改为“/upload”。
    打开include/common.inc.php文件,找到第208行,按以下进行更改:

        //附件目录
        $cfg_medias_dir = $cfg_cmspath.$cfg_medias_dir;
        $cfg_mediasurl = $cfg_mainsite.$cfg_medias_dir;
        
        //把以上代码更改为
        //附件目录
        $cfg_member_dir = $cfg_member_dir;
        $cfg_mediasurl = $cfg_mainsite.$cfg_medias_dir;

把织梦plus目录移到站点根目录

plus目录中的部分文件提供了站点的动态访问功能,比如说一篇文章可以这样来访问:/2012/1213/36.html;你其实还可以这样来进行访问:/plus/view.php?aid=36,这也就轻易的暴露了织梦的安装目录,你可以通过如下方式来把plus目录移到站点的根目录,并重新命名。

    打开include/common.inc.php 文件,找到第192行
    按如下空行后的代码更改:

        //插件目录,这个目录是用于存放计数器、投票、评论等程序的必要动态程序
        $cfg_plus_dir = $cfg_cmspath."/plus";
        
        //下面是对上面代码进行更改之后的
        //插件目录,这个目录是用于存放计数器、投票、评论等程序的必要动态程序
        $cfg_plus_dir = "/plug";

    接着,把plus目录剪切到网站的根目录,并把plus目录更名为plug

    打开plug目录中的所有文件,把

        require_once(dirname(__FILE__)."/../include/common.inc.php");

    替换成

        require_once(dirname(__FILE__)."/../cms/include/common.inc.php");

    注意:上面提到的”cms”为对应的织梦安装目录,记得更改。
    如果你的网站只是一个基本的新闻类站点,你还可以对该目录下的文件进行删除,最后只保留list.php、view.php、count.php即可。

除了对程序进行一些修改之后服务器安全则是重中之点了,我们以iis为实例来看看dedecms iis安全配置

 

Windows下的IIS IIS6.0
打开IIS中站点,在站点uploads目录、data目录以及静态html生成目录点击右键,菜单中选择“属性”,在目录属性面板选择执行权限为“无”即可。(如图1)


IIS7
IIS7也类似于IIS6.0,选择站点对应的目录,data、uploads及静态html文件目录,双击功能试图面板中的“处理程序映射”(如图2)
 

在“编辑功能权限……”中,www.111CN.Net我们直接去除脚本的执行权限即可。(如图3)

其实上面只是介绍了如果取消执行权限,根据官方的推荐还需要设置目录写权限的设置方法,这里脚本之家简单的介绍下
例如a目录,一般是生成静态页面用的,那么我们就需要服务器端设置(dederun是iis中运行网站匿名用户)


Apache下目录脚本的执行权限设置 独立主机配置
在Apache中,没有Windows 下IIS的图形管理界面,我们需要手工修改下apache的配置文件,来进行目录脚本的执行权限的设定。
首先我们找到apache的配置文件httpd.conf,通常情况下,该配置文件在apache安装目录下的conf文件夹中(如图4)。
 

(图4)

打开httpd.conf文件,找到内容中如图5的位置:

(图5)

Directory "DIR">

Deny from all



配置内容中的DIR为需要限制执行脚本文件的目录,FilesMatch后的内容为需要限定的执行的脚本后缀名。例如:这里需要禁止测试站点uploads文件夹下的PHP,ASP,JSP脚本的运行,则进行如下图6配置:

 

(图6)

 

在配置完成后,重启一下apache,配置便生效!
在操作前,uploads文件夹下我新建了一个index.php文件,图7为未作配置前访问情况

 

本文来源:http://www.bbyears.com/jiaocheng/48043.html

热门标签

更多>>

本类排行