Linux下dede程序系统安全防护

更新时间:2023-04-10 23:41:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Linux 下Dede 程序系统安全防护

安全狗第1页共15页Linux 下Dede 程序系统安全防护

于亮

安全狗技术支持部

2014年5月

Linux 下Dede 程序系统安全防护

安全狗第2页共15页目录

第1章

概述...................................................................................................................................11.1

目的...................................................................................................................................11.2

适用范围............................................................................................................................11.3

适用版本............................................................................................................................1第2章

DEDE 程序目录权限..................................................................................................................................................................................................................222.1

设置D EDE 程序文件权限..................................................................................................2第3章

设置DEDE 目录PHP 执行权限..............................................................................................................................................................................333.1

A PACHE 下设置D EDE 系统可写目录无PHP 执行权限......................................................23.2

NGINX 下设置D EDE 系统可写目录无PHP 执行权限........................................................3第4章

迁移DEDE 风险目录................................................................................................................................................................................................................444.1

迁移DATA 目录迁移到WEB 以外目录...............................................................................44.2

后台管理目录移出,并且创建独立站点..........................................................................6第5章

PHP.INI 禁用掉某些风险函数........................................................................................115.1

PHP.INI 中DISABLE _FUNCTIONS 禁止风险函数.................................................................115.2

PHP.INI 中OPEN _BASEDIR 控制PHP 执行路径.................................................................11第6章

MYSQL 账号..................................................................................................................136.1

使用独立M Y SQL 用户权限............................................................................................13第7章

其它需注意问题..............................................................................................................147.1其它需注意问题.. (14)

Linux 下Dede 程序系统安全防护

安全狗第1页共15页第1章概述

1.1目的

Dede 是一个非常好的CMS 程序,简单容易用,造福了许许多多中小站长。Dede 的安全问题一直使人质疑,本文档主要讲述Dede 网站如何防止被挂黑链或木马,防止系统被入侵。

1.2适用范围

本文档使用者包括:服务器系统管理员、Linux 工程师、网络安全从业人员。

1.3适用版本

Linux 系列服务器;

Linux 下Dede 程序系统安全防护

安全狗第2页共15页第2章Dede 程序目录权限

2.1设置Dede 程序文件权限

2.1.1Linux 的安全权限基本概念

读权限R 。简单的说就是打开文件查看内容的权限,在web 服务器中,若文件没有打开权限,则web 服务器则视为该文件不存在,发送404file not found 错误,用数字4表示。

写权限W 。一个文件若没有写的权限,那么该文件则无法更改,文件夹若没有写权限,则该文件夹下无法创建新文件,用数字2表示。

执行权限X 。程序文件若要执行,必须有执行权限,否则无法执行。打开一个文件夹也是执行,所以文件夹若没有执行权限,则无法被打开。用数字1表示。

很多人发现Linux 系统按照Dede 论坛的安全设置后,登陆后台一片空白,

或者访问主站也是一片空白,因为你没有给文件X 的权限,所以没法执行。

Linux 后台会有3个组,其中一个是用户组,只要给用户组执行的权限就可以后台打开了,其它2个组不要给执行权限,因为没有必要在浏览器中给php 文件的执行权限,但是一般的html 文件需要给执行权限的,因为需要访问的,但是不要给写入的权限。

include 、member 、plus 、后台管理目录设置为可执行脚本,可读,但不可写入。这几个目录一般都没问题,我就不讲了。我主要讲讲“data 、templets 、uploads 、a 或5.3的html 目录,设置可读写,不可执行的权限”在Linux 环境下如何设置。

所以data 的权限可以这样设置:

Linux 下Dede 程序系统安全防护

安全狗第3页共15

页所有的php

文件可以这样设置:

这样除了你可以在后台访问data 外,其它人是不可以打开data 的,另外php 文件一定不要给写或执行的权限。

至于a

或者你的栏目目录的权限可以这样设置:

这样它有执行的权限,就可以正常访问,但是不要给它写入的权限。

第3章设置Dede 目录PHP 执行权限

3.1Apache 下设置Dede 系统可写目录无PHP 执行权限我们可以给DedeCMS 几个目录关闭可执行权限,这里的可执行是指在Apache 中无法运

Linux 下Dede 程序系统安全防护

安全狗第4页共15页行php 脚本,那我们则可以在Apache 目录配置中做如下的设置(虚拟机可设置.htaccess )

...

php_admin_flag engine off

php_admin_flag engine off

php_admin_flag engine off

php_admin_flag engine off

php_admin_flag engine off

因为我们这里是PHP5,所以可以按照上面的方法设置。如果是老版本的PHP ,那就只能通过:

Order allow,deny

Deny from all

来设定。

3.2nginx 下设置Dede 系统可写目录无PHP 执行权限配置方法:

server {

Linux 下Dede 程序系统安全防护

安全狗第5页共15页...

location ~*^/uploads/.*.(php|php5)$

{

deny all;

}

}

第4章迁移Dede 风险目录

4.1迁移data 目录迁移到web 以外目录

data 目录是系统缓存和配置文件的目录,一般都有可以读写的权限,只要是能够写入的目录都可能存在安全隐患,很多站长甚至给予这个目录可执行的权限,更是非常危险,所以我们建议将这个data 目录搬移出Web 可访问目录之外。本篇将介绍如何将data 目录搬移出Web 访问目录。

1.将data 目录转移到非Web 目录

我们这里举例“D:\dedecms\v57”为我们系统的根目录,我们需要将目录下的data 文件夹(如图1)迁移要上一级目录(非Web 目录),简单的办法直接剪切或者拷贝即可。

Linux 下Dede 程序系统安全防护

安全狗第6页共15页

我们移动上一级目录中,注意观察文件路径。

2.修改DEDEDATA 目录的配置常量

找到系统目录下/include/common.inc.php 文件,修改DEDEDATA 常量为你的系

统目录。

3.配置tplcache 缓存文件目录

进入系统后台,在配置中修改tplcache

目录为你想对目录。

Linux 下Dede 程序系统安全防护

安全狗第7页共15页好了,这样我们就将data 目录顺利迁移出去了。

4.2后台管理目录移出,并且创建独立站点

4.2.1远程连接的安全性配置默认安装后,后台的管理目录是在站点更目录下的/dede ,为了安全起见我们需要将这个目录移出或者改名,但为了能够正常管理站点,我们需要将这个后台目录创建独立站点。

1.移动后台管理目录

我们先创建一个目录,这个目录专门用于存放后台站点文件,在终端中输入:

sudo mkdir /var/dedecms-admin

然后将织梦后台移动到这个文件夹中,输入:

sudo mv /var/dedecms/dede/*/var/dedecms-admin/

2.创建虚拟站点

我们需要创建一个新的站点用于显示后台,我们可以在/etc/apache2/site-enabled/目录中创建一个文件名为:default-admin 的文件,内容如下:

ServerName ce52245cbd64783e08122b60

ServerAdmin webmaster@localhost

DocumentRoot /var/dedecms-admin

AssignUserId www-admin www-data

Options FollowSymLinks

AllowOverride None

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

创建完成后我们重新启动服务器,在终端输入:

Linux 下Dede 程序系统安全防护

安全狗第8页共15页sudo service apache2restart

这里我们给后台站点域名设置为ce52245cbd64783e08122b60 用户可以根据自己情况设定更为复杂的域名形式,例如:ce52245cbd64783e08122b60

然后在系统host 纪录中添加一条指向站点域名对应ip 的纪录,保证其能够正常访问。

3.给管理站点目录设定权限控制帐户

为了保证后台文件访问的安全,我们也需要给它设定文件访问权限,在终端中输入:sudo chown www-admin.www-data /var/dedecms-admin/

这样就给这个目录指定了www-admin 的访问帐号。

4.调整后台文件配置,保证后台正常访问

由于我们直接移动了管理后台文件目录,所以我们访问ce52245cbd64783e08122b60 会出现报错,这时候我们需要对系统中的目录配置进行调整。

(1)找到/var/dedecms-admin/config.php ,将第12行

require_once(DEDEADMIN.'/../include/common.inc.php');

改为

require_once(DEDEADMIN.'/../dedecms/include/common.inc.php');

然后在这段代码下面加上:

$cfg_plus_dir =$cfg_phpurl =$cfg_basehost."/".$cfg_plus_dir;

(2)找到/var/dedecms-admin/login.php ,将11行

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

改为

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

(3)找到/var/dedecms/data/safe/inc_safe_config.php ,第2行,改为

$safe_gdopen ='1,2,3,4,5,7';

(4)找到/var/dedecms-admin/exit.php ,第11行

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

改为

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

(5)复制include 中的相关文件

我们需要将include 文件夹下的一些文件拷贝到管理后台站点中以保证后台正常使用:

Linux 下Dede 程序系统安全防护

安全狗第9页共15页mkdir /var/dedecms-admin/include/dialog

sudo cp -R /var/dedecms/include/dialog/*/var/dedecms-admin/include/dialog mkdir /var/dedecms-admin/include/js

sudo cp -R /var/dedecms/include/js/*/var/dedecms-admin/include/js

sudo mkdir /var/dedecms-admin/include/ckeditor

sudo cp -R /var/dedecms/include/ckeditor/*/var/dedecms-admin/include/ckeditor

4.重新分配前台Apache 用户权限

设定完成后我们需要给前台站点重新指派权限,在终端输入:

sudo chown -R www-admin.www-data /var/dedecms/

这样就把前台用户设定为了www-admin ,然后再执行:

sudo chmod -R 755/var/dedecms/

这样设置后后台管理就具有了站点操作权限,但前台浏览用户没有修改文件的权限了。但这里前台uploads 需要有可上传的权限,所以还需要执行:

sudo chmod -R 777uploads/

5.完成安全配置

这样一来我们就完成了系统的安全设置,做到了前后台的权限分离

Linux 下Dede 程序系统安全防护

安全狗第10页共15页第5章PHP.ini 禁用掉某些风险函数

5.1PHP.ini 中disable_functions 禁止风险函数

在PHP.ini 中找到disable_functions 等号后添加上以下风险函数:

phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,i ni_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_serve r,get_current_user,leak,putenv,popen,opendir,escapeshellarg,escapeshellcmd,proc_close,show_sou rce,get_cfg_var

5.2PHP.ini 中open_basedir 控制PHP 执行路径

在PHP.ini 中找到open_basedir 等号后添加上PHP 可执行的路径:

open_basedir =/data/www/dedecms:/tmp:/data/www/ce52245cbd64783e08122b60

Linux 下Dede 程序系统安全防护

安全狗第11页共15页第6章MySQL 账号

6.1使用独立MySQL 用户权限

Dede 使用MySQL ,不要为了方便,直接使用MySQL root 用户的权限,应独立设置MySQL 用户帐号,许可权限为:SELECT,INSERT ,UPDATE ,DELETECREATE ,DROP ,INDEX ,ALTER ,CREATE TEMPORARY TABLES 由于DEDE 并没有任何地方使用存储过程,因此务必禁用FILE 、EXECUTE 等执行存储过程或文件操作的权限。

第7章其它需注意问题

7.1其它需注意问题

1.保持Dede 更新,及时打补丁。

2.安装好Dede 后及时把install 文件夹删除。

3.后台管理目录改名,最好是改成MD5形式的,最好复杂点。

4.DedeCms 万能安全防护代码

需要的手工在config_base.php 里加上

打开config_base.php 找到

//禁止用户提交某些特殊变量

$ckvs =Array('_GET','_POST','_COOKIE','_FILES');

foreach($ckvs as $ckv){

if(is_array($$ckv)){

foreach($$ckv AS $key =>$value)

if(eregi("^(cfg_|globals)",$key))unset(${$ckv}[$key]);

}

}

改为下面代码

复制代码

//把get 、post 、cookie 里的

$ckvs =Array('_GET','_POST','_COOKIE');

foreach($ckvs as $ckv){

if(is_array($$ckv)){

foreach($$ckv AS $key =>$value)

if(!empty($value)){

${$ckv}[$key]=str_replace('<'.'?','&'.'lt;'.'?',$value);

${$ckv}[$key]=str_replace('?'.'>','?'.'&'.'gt;',${$ckv}[$key]);

Linux 下Dede 程序系统安全防护

安全狗第12页共15页}

if(eregi("^cfg_|globals",$key))unset(${$ckv}[$key]);

}

}

//检测上传的文件中是否有PHP 代码,有直接退出处理

if (is_array($_FILES)){

foreach($_FILES AS $name =>$value){

${$name}=$value['tmp_name'];

$fp =@fopen(${$name},'r');

$fstr =@fread($fp,filesize(${$name}));

@fclose($fp);

if($fstr!=''&&ereg("<\?",$fstr)){

echo "你上传的文件中含有危险内容,程序终止处理!";

exit();

}

}

}

这样处理之后,安全上理论上可中做到一劳永逸,但缺点是使用此功能后,不能在线上传PHP 文件,如果你的站点同时支持asp 、aspx 等,在此基础上修改一下上述代码即可5.如果是使用HTML 可以把plus 下的相应文件和根目录下的index.php 删除。

6.不用留言本的可以把如:ce52245cbd64783e08122b60/plus 下的guestbook 删除。

7.不用会员的可以把member 删除。

ce52245cbd64783e08122b60 后台的文件管理(管理目录下file_manage_xxx.php )

,不用的可以做掉,这个不是很安全,至少进了后台上传小马很方便。

9.下载发布功能(管理目录下soft__xxx_xxx.php )

,不用的话可以做掉,这个也比较容易上传小马。

最安全地方式:本地发布html ,然后上传到空间。不包含任何动态内容,理论上最安全。

Linux下Dede程序系统安全防护

谢谢!

安全狗第13页共15页

本文来源:https://www.bwwdw.com/article/nmrl.html

Top