Linux环境下织梦DedeCMS网站安全设置

linux系统安装完DedeCMS后,并不是十分安全,还需要对DedeCMS做一些安全设置,以保证站点能更加安全的运行在Linux服务器上。

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

sudo apt-get install apache2-mpm-itk

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

 

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

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

(1)、移动后台管理目录
我们先创建一个目录,这个目录专门用于存放后台站点文件,在终端中输入:

 

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

 

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

 

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

 

这里我们给后台站点域名设置为zhangwenbao.com用户可以根据自己情况设定更为复杂的域名形式,例如dedesiteadmin2017.zhangwenbao.com
然后在系统host记录中添加一条指向站点域名对应ip的纪录,保证其能够正常访问。

(3)、给管理站点目录设定权限控制帐户
为了保证后台文件访问的安全,我们也需要给它设定文件访问权限,在终端中输入:

 

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

(4)、调整后台文件配置,保证后台正常访问
由于我们直接移动了管理后台文件目录,所以我们访问zhangwenbao.com会出现报错,这时候我们需要对系统中的目录配置进行调整。
①、找到/var/dedecms-admin/config.php,将第12行

 

改为:

 

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

 

②、找到/var/dedecms-admin/login.php,将11行

 

改为:

 

③、找到/var/dedecms/data/safe/inc_safe_config.php,第2行,改为

 

④、找到/var/dedecms-admin/exit.php,第11行

 

改为:

 

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

 

4、重新分配前台Apache用户权限
设定完成后我们需要给前台站点重新指派权限,在终端输入:

 

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

 

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

 

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

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

(1)、安装Nginx以及php5-fpm
终端中输入:

 

以及:

 

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

 

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

 

admin.zhangwenbao.com站点配置:

 

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

(3)、指派站点文件访问控制权限
同apache的apache2-mpm-itk不同,php5-fpm默认就可以进行权限控制。
在文件/etc/php5/fpm/pool.d/www.conf中则是默认采用了“www-data”作为站点的控制用户,所以为了后台具有对应的操作权限,我们需要添加一个专门的控制权限。

 

修改admin.conf文件
其中我们只要将:

 

这几个地方做一个更改即可。
完成后重启下服务

 

(4)、nginx下取消目录执行的权限
之前,我们曾在马海祥博客上介绍了apache下如何取消目录执行权限(具体可查看马海祥博客《取消网站文件目录脚本执行权限的方法步骤》的相关介绍),nginx也是类似,但配置方法稍有不同:

 

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

Linux服务器设置文件和文件夹的读写权限

**修改文件可读写属性的方法**

例如:把index.htm 文件修改为可写可读可执行:

 

要修改目录下所有文件属性可写可读可执行:

 

该命令中可以使用 * 作为通配符。

比如:修改所有htm文件的属性:

 

**修改文件夹属性的方法**

把目录 /images/small 修改为可写可读可执行:

 

修改目录下所有的文件夹属性:

 

把文件夹名称用 * 来代替就可以了。

要修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行:

 

总结 Linux 下文件和目录的权限区别:

文件:读文件内容(r)、写数据到文件(w)、作为命令执行文件(x)。

目录:读包含在目录中的文件名称(r)、写信息到目录中去(增加和删除索引点的链接)、搜索目录(能用该目录名称作为路径名去访问它所包含的文件和子目录)
具体说就是:

> (1)有只读权限的用户不能用 cd 进入该目录,还必须有执行权限才能进入。
> (2)有执行权限的用户只有在知道文件名,并拥有读权利的情况下才可以访问目录下的文件。
> (3)必须有读和执行权限才可以 ls 列出目录清单,或使用 cd 命令进入目录。
> (4)有目录的写权限,可以创建、删除或修改目录下的任何文件或子目录,即使使该文件或子目录属于其他用户也是如此。

**查看目录权限**

查看文件权限的语句,在终端输入:(xxx.xxx是文件名)

 

那么就会出现相类似的信息,主要都是这些:

-rw-rw-r–

一共有10位数,其中:

最前面那个 – 代表的是类型
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r– 代表的是其他人(other)
这里再解释一下后面那9位数:

r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
– 表示相应的权限还没有被授予
现在该说说修改文件权限了

在终端输入:

 

表示给其他人授予写xxx.xxx这个文件的权限

 

表示删除xxx.xxx中组群和其他人的读和写的权限

其中:

> u 代表所有者(user)
> g 代表所有者所在的组群(group)
> o 代表其他人,但不是u和g (other)
> a 代表全部的人,也就是包括u,g和o
> r 表示文件可以被读(read)
> w 表示文件可以被写(write)
> x 表示文件可以被执行(如果它是程序的话)