引言
安全,是一个既古老且长期的话题。
安全第一,是我们每一个人从小到大,一直被提醒、被灌输的首要使命。
随着 《网络安全法》 等相关法律的落地实施与推进,网络安全已经上升到与粮食安全一样的事关国计民生的战略高度。
作为网站主体负责人,网站的安全是否合格、是否达标,不再是个人问题了,而是上升到了关乎国家安全的高度的话题了!
这,是新的机遇、新的挑战,也是时代赋予我们从业者的新的、光荣的使命。
本篇教程,全方位、系统性得讲解了如何做好 DedeCMS 网站的安全工作。
- 以Linux系统为例
- 可能适用于其它网站程序
- 不止讲如何操作,更涉及到原理
“对本教程的描述,后续再完善一下。
大前提
安全,是一个系统性的工程。
在讨论一个网站的安全性之前,我们首先需要保证网站的“宿主”,也就是网站所使用的服务器(系统)是足够安全的。
这很好理解。就好比你的家里,放了一个保险柜。想要保证这个保险柜的安全,首先需要你的家是足够安全的。
关于如何选择更安全的服务器、如何做好服务器(系统)的安全措施,这里暂时先不展开。
目录权限
我们知道,在 Linux 系统中,一个目录(文件夹)的权限,分为 读 、 写 、 执行 。
我们认为,不可读、不可写、不可执行 是最安全的权限,可读、可写、可执行 是最不安全的权限。
这个也很好理解。还是上面的例子。如果你的家,被人想进去看一眼(可读)都看不了,那么你家里的保险柜的安全性就是极高的,。。。。。。。。
此处需要完善
理解了这些之后,我们再一起来看一下 DedeCMS 的每个子目录都是做什么的,以及其所需要的权限。
DedeCMS目录
以下是 DedeCMS V5.7.111 版本的子目录结构。接下来,我们 由浅及深 逐个介绍:
assets
此目录,是用来存放 DedeCMS 所需要的 css
、js
以及 图片
等 静态资源文件 的目录。
只需要 可读 权限,就可以了。
images
此目录,和上面的 assets
目录是同样的类型,不再重复说明。
a
此目录,是 DedeCMS 系统默认的 用来存放系统生成的 纯静态 HTML 页面 的
目录。
因为该目录是可以灵活自定义的(详见上方两个截图),那么这里讨论的就是 网站所有用来存放 DedeCMS 系统生成的纯静态页面的目录 的权限。
因为需要生成(写入)纯静态页面,所以需要 可写 权限;
同时,这些静态页面是需要被访问(读取)的,所以还需要 可读 权限。
uploads
此目录,是 DedeCMS 系统默认的 附件 目录。
和 a
目录一样,该目录的命名也不是绝对的。
所以这里讨论的就是 网站所有用来存放 DedeCMS 系统上传的附件的目录 的权限。
因为需要上传(写入)附件,所以需要 可写 权限;
同时,这些附件(图片、音频、视频等)是要供网站的访客访问(读取)的,所以还需要 可读 权限。
templets
此目录,是 DedeCMS 系统的 模板 目录。网站所使用的模板文件,就存放在该目录下。
我们假设,网站正式上线后,便不再修改模板代码,那么该目录便只需要 可读 权限就可以了。
考虑到,有些情况下又不得不修改模板代码,没有 可写 权限又无法修改。这种情况,要怎么处理比较好呢?
有两种思路,可供参考:
- 直接以超级管理员(root)的身份,登录到服务器系统,然后直接在服务器上操作修改;
- 先以超级管理员(root)的身份,登录到服务器系统,然后临时开放 可写 权限给到该目录。修改完成后,再及时关闭 可写 权限;
有的同学可能会觉得这种做法太麻烦了。就不能一直给予该目录 可写 权限吗?
一直给予该目录 可写 权限,我们认为是一种很不安全的做法。以往所有我们处理过的网站被挂马的网站,在其 templets
目录下,我们全部检出过恶意代码,无一例外!
所以,安全考虑,还是尽量只开放 可写 权限给此目录吧。
TIP
虽然管理后台没有直接提供重命名该目录的选项,但是依然是可以重命名该目录的。
这里暂时先不深入展开了。
install
此目录,是 DedeCMS 系统的 安装程序 目录。
安装时,可以给予 可读 、可写 、可执行 权限。
关闭可写权限,会导致无法写入测试体验数据包。如不需要安装测试体验数据,则可关闭可写权限。
安装成功后,可以直接删除该目录。
删除后,又怕以后万一用到,怎么破?
把该目录打个压缩包,备份到个人电脑上或服务器上网站根目录之外的其它目录,然后再删除,不就可以了?
TIP
其实,更好的做法,是直接保留一份原始的 DedeCMS 系统的安装包。
假如,建站时,使用的是 DedeCMS-V5.7.110-UTF8
这个版本,那么在服务器上和个人电脑上同时保留着 DedeCMS-V5.7.110-UTF8
的安装包,难道不是必要且更好的做法吗?
m
此目录,是 DedeCMS 系统的 移动端 目录。
比如,你网站的网址是 www.dedecms.com
,那么就可以通过 www.dedecms.com/m/
来访问你网站的“移动端”。
随着响应式设计的普及,越来越多的网站采用了响应式(自适应)方案。
如果你的网站也是采用的响应式(自适应)方案,那么你可以直接删除该目录。
如果你的网站没有采用响应式(自适应)方案,而是使用了上述 /m/
的“移动端”方案,那么需要分两种情况来讨论了。
/m/
目录下不需要写入 DedeCMS 系统生成的纯静态HTML文件;/m/
目录下需要写入 DedeCMS 系统生成的纯静态HTML文件;
情况 1 很简单,只需要 可读 、可执行 权限就够了,把 可写 权限取消掉;
情况 2 稍微复杂一点,需要先
bash
chmod -R 755 m
1
再
bash
chmod -R 555 m/assets
1
member
此目录,是 DedeCMS 系统的 会员系统 目录。
默认情况下,会员系统是没有被启用的。
随着 “实名制” 等相关政策的推行,需要会员系统的网站的占比是越来越少的。老站关闭会员系统,新站不启用会员系统,是普遍存在的情况。
既如此,本篇也就不再深入讨论该目录的权限问题了。
直接删掉,似乎是更简单、更轻松、且更加安全的做法。
special
此目录,是 DedeCMS 系统的 专题 目录。
多数网站,并没有使用专题功能。没有使用专题功能的网站,可以直接删除此目录。
使用了专题功能的网站,建议设置此目录的权限为 可读 、 可执行 ,建议取消 可写 权限。
取消可写权限,并不会影响专题页面的生成。
plus
此目录,是 DedeCMS 系统的 插件及辅助功能 目录。
网站正常使用过程中,建议只给予 可读 、 可执行 权限,不建议长时间同时开启 可读 、 可写 、 可执行 权限。
如特殊情况下需要开启 可写 权限,可参考 templets 目录的做法。
dede
此目录,是 DedeCMS 系统默认的 管理后台 目录。
安装成功后,只需要 可读 、 可执行 权限即可,无需 可写 权限。
另,dede
是该目录默认的命名,很容易被别有用心者猜到、或者被机器扫描到。因此,网站正式上线时,建议将此目录重命名为其它不容易被猜到的名字。
事实上,如果你使用默认的 dede
命名,系统也会提示你不要这么做。
一个小妙招
像定期修改密码一样,定期修改该目录的命名,也是一个很值得推荐的做法。
重命名、定期重命名,都只是较为初级的玩法,还有更加高级的玩法,后边再深入讨论。
include
此目录,是 DedeCMS 系统的 核心 目录。
网站正常使用过程中,同样只建议开启 可读 、 可执行 权限,不建议长时间同时开启 可读 、 可写 、 可执行 权限。
如特殊情况下需要开启 可写 权限,可参考 templets 目录的做法。
data
此目录,是 DedeCMS 系统的 数据 目录。
它的性质,决定了它必须同时需要开启 可读 、 可写 、 可执行 权限。
而前面我们曾讲到过,
我们认为,不可读、不可写、不可执行 是最安全的权限,可读、可写、可执行 是最不安全的权限。
这确实有点“以子之矛攻子之盾”、“搬起石头砸了自己的脚”的味道了