文档章节

Linux下Dede程序系统安全防护

炒股
 炒股
发布于 2017/01/23 15:14
字数 2934
阅读 31
收藏 1

目 录

第1章 概述
1.1 目的
1.2 适用范围
1.3 适用版本
第2章 DEDE程序目录权限
2.1 设置DEDE程序文件权限
第3章 设置DEDE目录PHP执行权限
3.1 APACHE下设置DEDE系统可写目录无PHP执行权限
3.2 NGINX下设置DEDE系统可写目录无PHP执行权限
第4章 迁移DEDE风险目录
4.1 迁移DATA目录迁移到WEB以外目录
4.2 后台管理目录移出,并且创建独立站点
第5章 PHP.INI禁用掉某些风险函数
5.1 PHP.INI中DISABLE_FUNCTIONS禁止风险函数
5.2 PHP.INI中OPEN_BASEDIR控制PHP执行路径
第6章 MYSQL账号
6.1 使用独立MYSQL用户权限
第7章 其它需注意问题
7.1 其它需注意问题

第1章 概述
1.1 目的
Dede是一个非常好的CMS程序,简单容易用,造福了许许多多中小站长。Dede的安全问题一直使人质疑,本文档主要讲述Dede网站如何防止被挂黑链或木马,防止系统被入侵。
1.2 适用范围
本文档使用者包括:服务器系统管理员、Linux工程师、网络安全从业人员。
1.3 适用版本
Linux系列服务器;

第2章 Dede程序目录权限
2.1 设置Dede程序文件权限
2.1.1 Linux的安全权限基本概念
读权限R。简单的说就是打开文件查看内容的权限,在web服务器中,若文件没有打开权限,则web服务器则视为该文件不存在,发送404 file 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的权限可以这样设置:
q1

所有的php文件可以这样设置:

q2

这样除了你可以在后台访问data外,其它人是不可以打开data的,另外php文件一定不要给写或执行的权限。
至于a或者你的栏目目录的权限可以这样设置:

q3

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

第3章 设置Dede目录PHP执行权限
3.1 Apache下设置Dede系统可写目录无PHP执行权限
我们可以给DedeCMS几个目录关闭可执行权限,这里的可执行是指在Apache中无法运行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,那就只能通过:
<Directory “/var/dedecms/uploads/”>

Order allow,deny
Deny from all

来设定。

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

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目录),简单的办法直接剪切或者拷贝即可。Dede教程-598080707.NET

q4

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

q5

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

q6

3.配置tplcache缓存文件目录
进入系统后台,在配置中修改tplcache目录为你想对目录。

q7

好了,这样我们就将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 admin.dede.com
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

创建完成后我们重新启动服务器,在终端输入:
sudo service apache2 restart
这里我们给后台站点域名设置为admin.dedecms.com用户可以根据自己情况设定更为复杂的域名形式,例如:dedesiteadmin2008.dede.com
然后在系统host纪录中添加一条指向站点域名对应ip的纪录,保证其能够正常访问。

3. 给管理站点目录设定权限控制帐户
为了保证后台文件访问的安全,我们也需要给它设定文件访问权限,在终端中输入:
sudo chown www-admin.www-data /var/dedecms-admin/
这样就给这个目录指定了www-admin的访问帐号。

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

(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文件夹下的一些文件拷贝到管理后台站点中以保证后台正常使用:
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 777 uploads/

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

第5章 PHP.ini禁用掉某些风险函数
5.1 PHP.ini中disable_functions禁止风险函数
在PHP.ini中找到disable_functions等号后添加上以下风险函数:
phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,get_current_user,leak,putenv,popen,opendir,escapeshellarg,escapeshellcmd,proc_close,show_source,get_cfg_var
5.2 PHP.ini中open_basedir控制PHP执行路径
在PHP.ini中找到open_basedir 等号后添加上PHP可执行的路径:
open_basedir = /data/www/dedecms:/tmp:/data/www/www.test.com

第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]);
}
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.不用留言本的可以把如:www.xxxxxx.com/plus下的guestbook删除。
7.不用会员的可以把member删除。
8.www.xxxxxx.com后台的文件管理(管理目录下file_manage_xxx.php),不用的可以做掉,这个不是很安全,至少进了后台上传小马很方便。
9.下载发布功能(管理目录下soft__xxx_xxx.php),不用的话可以做掉,这个也比较容易上传小马。
最安全地方式:本地发布html,然后上传到空间。不包含任何动态内容,理论上最安全。

Linux下Dede程序系统安全防护  文档下载  http://pan.baidu.com/s/1jGqsWNO

本文转载自:http://aqzt.cn/5274.html

共有 人打赏支持
上一篇: codis快速安装
下一篇: codis快速安装
炒股

炒股

粉丝 1
博文 2
码字总数 20
作品 0
广州
系统管理员
私信 提问
Linux系统安全隐患及加强安全管理的方法

世界上没有绝对安全的系统,即使是普遍认为稳定的Linux系统,在管理和安全方面也存在不足之处。我们期望让系统尽量在承担低风险的情况下工作,这就要加强对系统安全的管理。 下面,我具体从两...

JavaGG
2009/05/07
239
0
Linux防火墙工具Firestarter

Firestarter是一个非常好用的防火墙图形化配置工具,作者和开发者是芬兰人。 首先肯定的说Firestarter防火墙是一款非常优秀的基于GUI图形用户界面下的,完全免费的自由软件,它为中小型Linux...

问题终结者
2018/11/18
0
0
系统管理员必备 Linux服务器中四大管理软件

服务器管理软件能够让服务器人员方便快捷的部署管理服务器,节省用户的配置部署时间以及维护时间。配置服务器是一项十分耗时且麻烦的工作,有序部署额外服务器或替换有故障服务器的能力对保证...

光头呆呆
2015/03/04
4.9K
3
企业级Linux服务器安全防护10个要点

随着开源系统Linux的盛行,其在大中型企业的应用也在逐渐普及,很多企业的应用服务都是构筑在其之上,例如Web服务、数据库服务、集群服务等等。 因此,Linux的安全性就成为了企业构筑安全应用...

gydtep
2018/09/26
0
0
从六大方面防护你的网站安全

网站安全不仅成为各大中型网站要关注的问题,现在连中小企业网站也无一幸免的收到各种不安全因素的影响。据不完全统计95%以上的网站收到过来自境内外黑客的攻击,90%以上的网站存在严重的网站...

English0523
2016/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CDH5之时钟偏差问题

CDH5之时钟偏差问题 一、介绍 主机时钟偏差的问题,是分布式中各个主机之间存在系统时差,或者和ntp服务器的时间不同步造成的。如果集群之中没有配置ntp服务,那么时钟偏差会非常频繁,如下图...

星汉
14分钟前
0
0
ArrayBlockingQueue 与 LinkedBlockingDeque 的内部实现

区别 类似于ArrayList 与 LinkedList 的区别,ArrayBlockingQueue 与 ArrayList 的内部存储结构为数组;而LinkedBlockingDeque 与 LinkedList 的内存存储结构是一个双向链表的存储(所以两者...

noob_fly
15分钟前
0
0
巨杉数据库中标广州银行影像内容管理平台项目

近期,巨杉数据库中标广州银行影像内容管理平台项目,助推广州银行智慧业务升级。 随着银行在智慧化转型的不断发展,影像、音视频甚至用户生物特征信息等非结构化数据在银行数据管理中的比重...

巨杉数据库
18分钟前
0
0
网络社交如何保护个人隐私?做好这4步

在这个全民社交时代,互联网成为了我们生活最主要的娱乐方式,但也让我们的“一举一动”变得有迹可寻。比如,在微博上发布的动态、评论、定位以及第三方应用的授权等操作,都在不经意间将个人...

ThinkSNS官方帐号
19分钟前
0
0
CentOS 编译安装的软件卸载方法

之前在源码包的位置执行的 make install 现在就是反过来 执行make uninstall 本人微信: 本人QQ:

lwkai
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部