DedeCMS站点高级安全策略(Linux篇)

所属分类: CMS教程 / dedecms 阅读数: 1846
收藏 0 赞 0 分享
更改纪录:

2012-06-06:增加Nginx服务器的配置


在Linux环境下搭建安装DedeCMS本篇不再具体说明,大家可以点击文档《Linux下安装DedeCMS及安全设置》来查看安装和基本安全配置部分的内容。

本篇将在之前的基础上进一步来对Linux下的DedeCMS进行安全配置,以保证我们的站点能够更加安全的运行在服务器上。

1.安装Apache文件访问权限模块

为了保证每个虚拟站点都能够拥有自己独立的文件访问权限,我们需要安装Apache安全权限分离模块,在终端中输入:

sudo apt-get install apache2-mpm-itk

2.添加管理后台站点控制帐号

接下来我们需要再添加一个后台站点的Apache运行帐号,在终端中输入:

sudo useradd -g www-data -d /dev/null -s /usr/sbin/nologin www-admin

这样我们就添加了一个www-admin帐号,专门用于控制后台站点的文件访问权限。

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

默认安装后,后台的管理目录是在站点更目录下的/dede,为了安全起见我们需要将这个目录移出,但为了能够正常管理站点,我们需要将这个后台目录创建独立站点。

3.1.移动后台管理目录

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

sudo mkdir /var/dedecms-admin

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

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

3.2.创建虚拟站点

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

<VirtualHost *:80>

ServerName admin.dede.com

ServerAdmin webmaster@localhost

DocumentRoot /var/dedecms-admin

AssignUserId www-admin www-data

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/dedecms-admin/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

</VirtualHost>

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

sudo service apache2 restart

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

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

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

为了保证后台文件访问的安全,我们也需要给它设定文件访问权限,在终端中输入:

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

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

3.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.完成安全配置

这样一来我们就完成了系统的安全设置,做到了前后台的权限分离,当然您也需要配置下php.ini禁用掉某些函数,配合系统做好各个方面的安全设置。

 

如果您需要了解Windows Server 2012下如何搭建配置DedeCMS环境,可以查看:《Windows Server 2012 搭建PHP+MySQL环境安装DedeCMS系统》

 

6.Nginx设置
由于Nginx轻便容易维护,很多站长也会选择Nginx作为站点服务器,设置思路同上文类似,但有稍许的不同,下面我们就来单独对其进行介绍。

6.1.安装Nginx以及php5-fpm

终端中输入:sudo apt-get install nginx

以及:sudo apt-get install php5-fpm

(如果已经安装了Apache的用户需要停止Apache,以免同Nginx冲突,可以使用命令行:sudo service apache2 stop)

6.2.添加站点

同样我们需要添加两个站点,一个前台“www.dede.com”一个后台“admin.dede.com”,基本配置如下:

www.dede.com站点:

server {

root /var/dedecms;

index index.html index.htm index.php;

server_name www.dede.com;

...

location ~ .php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_param script_FILENAME /var/dedecms$fastcgi_script_name;

fastcgi_index index.php;

include fastcgi_params;

}

}

admin.dede.com站点配置:

server {

root /var/dedecms-admin;

index index.html index.htm index.php;

server_name admin.dede.com;

...

location ~ .php$ {

fastcgi_pass 127.0.0.1:9001;

fastcgi_param script_FILENAME /var/dedecms-admin$fastcgi_script_name;

fastcgi_index index.php;

include fastcgi_params;

}

}

这里主要是admin的站点采用的9001端口,以及站点目录重新做了调整。

6.3.指派站点文件访问控制权限

同apache的apache2-mpm-itk不同,php5-fpm默认就可以进行权限控制。

在文件/etc/php5/fpm/pool.d/www.conf中则是默认采用了“www-data”作为站点的控制用户,所以为了后台具有对应的操作权限,我们需要添加一个专门的控制权限。

cd /etc/php5/fpm

cp www.conf admin.conf

修改admin.conf文件

其中我们只要将:

user = www-admin

group = www-data

listen = 127.0.0.1:9001

这几个地方做一个更改即可。

完成后重启下服务

sudo service php5-fpm restart

sudo service nginx restart

6.4.nginx下取消目录执行的权限

在《Linux下安装DedeCMS及安全设置》 中介绍了apache下如何取消目录执行权限,nginx也是类似,但配置方法稍有不同:

server {

...

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

{

deny all;

}

}

按照这个方法,将其他目录也同样设置即可。

更多精彩内容其他人还在看

dedecms模板标签如何做判断示例代码

dedecms模板标签是可以做判断的,不过具体要看是哪个标签,有些标签是无法判断的。必须改源文件,下面有个示例,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

DEDE [field:global name=autoindex/] 按序号排列从0从1开始

调试程序用到[field:global name=autoindex/ ] 调用指定频道而频道前面需要加CSS代码,CSS代码正好是按序号排列的,于是修改了一下代码,在此与大家分享下,感兴趣的朋友可以收藏下
收藏 0 赞 0 分享

DEDECMS的20位MD5加密密文解密示例介绍

dedecms的20位md5加密算噶是从32位md5中截取的20位,所以去掉前3位喝最后1位,即可获得16位md5值,即可破解15位md5,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

织梦dedecms登录管理后台总是验证码错误的解决方案

织梦dedecms登录管理后台总是验证码错误在网上找了很多的解决方案,说法有很多种,但最后都无法解决这个问题,感兴趣的朋友可以了解下本文
收藏 0 赞 0 分享

如何让dedecms变成全站动态浏览有利于企业站

教大家如何让dedecms(织梦)变成全站动态浏览,对于企业站很有利哦!有时候dedecms全站的静态反而对于建设企业站不利,具体实现如下,感兴趣的朋友可以参考下,希望对大家有所帮助
收藏 0 赞 0 分享

使用dedecms搭建自己的本地网站(全程图解)

对于初学而言,网站都是在本地调试好后,才通过ftp上传到所买的空间或虚拟主机上,而无论是处于什么情况,学习在本地搭建网站的方法对于初学者是很有用的,下面与大家分享下具体的搭建过程
收藏 0 赞 0 分享

适合企业站的织梦常用标签大全(自己整理)

对于企业站而言其实不用了解那么多标签,在这里分享下自己总结的适合企业站的标签大全,希望大家收藏,以备不时之需
收藏 0 赞 0 分享

DEDECMS最为常用的分页标签及分页样式代码

今天我要分享的是我们最为常用的分页列表及分页样式代码,很多人在这个上面花费的时间较多,其实很简单,如果使用我下面的通用版本就很轻而易举的完工,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

dede标签云如何生成不同颜色、不同大小的tag标签

tag标签做网站的朋友想必知道吧,在本文要为大家讲解的的是dede标签云的使用,如何生成不同颜色、不同大小的tag标签,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

dedecms列表页标题title后加上页数其标题不重复的方法

在列表页的标题后加上页数使列表页的标题不重复这样更利于优化,下面是从搜索整理的解决方法,有类似需求的朋友可以参考下,希望对大家有所帮助
收藏 0 赞 0 分享
查看更多