chaihongjun.me

隐藏dedecms特征信息,降低被攻击风险

很久之前写过一篇文章《织梦系统(DedeCMS)程序文件结构详解》,里面写到有个目录data

后台静态数据(如:自动更新、文档作者、来源、菜单等)

特别是data里面的admin目录:

隐藏dedecms特征信息,降低被攻击风险

记录了很多信息,网站系统的版本(ver.txt),网站内容的作者(writer.txt)等等,熟悉dedecms系统的人可以根据上述文件的内容,迅速判断出网站是由dedecms搭建的,因此,如果让用户访问不到这些文件,也就间接的保护了网站特征。通过在nginx上配置相关代码即可:

方法一:

location ^~/data/admin {
	return 404;
}
## 注意admin后面没有"/",表示禁止整个目录及目录下面的所有文件;
## 如果有"/",则表示只是禁止此目录。

方法二:(推荐使用)

location ~ /data/admin/ {
        location ~ .*\.txt$
        {
         return 404;
        }
}
## 首先是匹配到admin目录
## 然后是匹配admin目录下的任意以.txt结尾的文件
## "~" 表示区分大小写的匹配,
## "." 表示任意一个字符,
## ".*"表示任意字符的多次重复,
## "\." 表示转义"."本身,
## "$"是表示以前面的字符结尾,txt$以txt结尾。
##  以及data目录和admin目录整个目录的读取
location ~ /data/ {   
         return 404;
}
location ~ /data/admin/ {   
         return 404;
}

以上方法都可以隐藏相应目录内的文件,但是唯一的区别就是,第一种方法还可以隐藏相应的目录。除了/data/admin/目录,其他的目录及文件隐藏都可以依此方法来执行。

###############################  2016.10.26 新增 ################################

使用谷歌搜索

inurl:login.php?dospost=showad

隐藏dedecms特征信息,降低被攻击风险

你会发现很多有趣的东西,点击这些搜索结果链接, 你会惊讶于这个不就是暴露了dedecms网站的后台路径了么?所以还得给这个路径加上锁来保密:(推荐使用)

##1.首先去robots.txt 添加一条下面的规则,禁止搜索引擎抓取页面的带有参数的动态链接
User-agent: * 
Disallow: /*?*
##本身建站就是希望全静态,因此屏蔽动态链接没什么关系
##2.然后就是在nginx配置下面这段代码
if ( $request_uri = "/后台目录/login.php?dopost=showad" ) {
    return 404;
}
##这样当访问这个页面将返回的是404,而非感人的“广告联系”

###############################  2016.10.27 新增 ##################################

修改plus目录,plus目录是dedecms默认的一个动态目录,里面的文件会暴露一定的安全隐患,所以将这个目录改名会是一个保护系统的好方法:(推荐使用)

  1. 修改plus目录名称为其他名称,比如dynamic

  2. 进入include目录找到common.inc.php文件,然后编辑此文件将

$cfg_plus_dir = $cfg_cmspath.'/plus';
<!-- 改成 -->
$cfg_plus_dir = $cfg_cmspath.'/dynamic';

完成以上两步骤,就将默认的plus目录改名了,且不影响正常的使用,若希望更加安全,可以删除不需要的文件

隐藏dedecms特征信息,降低被攻击风险

比如,ad_js.php,car.php等。

###############################  2017.06.21 新增 ##################################

通过dedecms的模板路径可以得知,很多人的模板放在了默认路径,还有一些则通过使用模板里面的资源文件(css,js,图片等)暴露了模板的路径,可以通过给读取包含templets目录的htm文件设置一个返回为404的页面,起到迷惑保护的的作用:(推荐使用)

location ~ /(templets)/.*\.(htm)?$ {  #读取路径包含templets,并且只读取.htm文件,则返回404
        return 404;
}

如果使用的是默认的模板路径则建议将templets和默认的模板路径也封闭:

location ~ /templets/ { 
        return 404;
}
location ~ /templets/default/ { 
        return 404;
}

####################2017.10.10 整合

将以上的内容整合起来:(有部分新增)

# .htm 或者 .html后缀的模板文件
location ~ /(templets)/.*\.(htm|html)?$ {
        return 404;
}
# /data/admin/目录下的一些txt文件
location ~ /data/admin/ {
        location ~ .*\.txt$
        {
         return 404;
        }
}
## 首先是匹配到admin目录
## 然后是匹配admin目录下的任意以.txt结尾的文件
## "~" 表示区分大小写的匹配,
## "." 表示任意一个字符,
## ".*"表示任意字符的多次重复,
## "\." 表示转义"."本身,
## "$"是表示以前面的字符结尾,txt$以txt结尾。
##  以及data目录和admin目录整个目录的读取

location ~ /data/ {   
         return 404;
}

location ~ /data/admin/ {   
         return 404;
}

location ~ /plus/search.php {

        return 404;
}
location ~ /include/dialog/select_soft.php {

       return 404;
}
location ~ /include/dialog/config.php {

        return 404;
}

以上内容可以写到一个配置文件中,比如guard_dedecms.conf,然后主机配置文件加载此文件。



知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。作者:柴宏俊»

相关推荐