核心原则:纵深防御
安全不是单一措施,而是层层设防,即使一层被突破,还有其他层可以保护您的网站。

(图片来源网络,侵删)
第一部分:服务器基础安全
这是最外层的防线,也是最坚固的防线。
系统与软件更新
- 及时更新系统:定期运行
yum update(CentOS/RHEL) 或apt update && apt upgrade(Debian/Ubuntu) 来修补系统漏洞。 - 更新Web服务:确保您的 Nginx 或 Apache 是最新稳定版,并关注安全公告。
- 更新PHP版本:使用最新稳定版本的 PHP,旧版本存在大量已知漏洞,织梦CMS对PHP版本有一定要求,请选择一个较新的稳定版(如 PHP 7.4, 8.0, 8.1)。
- 更新数据库:确保 MySQL 或 MariaDB 也是最新版本。
防火墙配置
- 只开放必要端口:
- 80 (HTTP) 和 443 (HTTPS) 必须开放。
- 22 (SSH) 端口建议修改为非标准端口(如 2222),并限制只允许您的IP地址访问。
- 关闭所有其他不必要的端口(如 3306 数据库端口、21 FTP端口)。
- 使用iptables或firewalld:配置严格的入站规则。
- 示例 (firewalld):
# 开放HTTP和HTTPS sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https # 开放自定义SSH端口 sudo firewall-cmd --permanent --add-port=2222/tcp # 限制SSH访问IP (将YOUR_IP替换为您的IP) sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="YOUR_IP/32" port protocol="tcp" port="2222" accept' # 重载防火墙 sudo firewall-cmd --reload
- 示例 (firewalld):
禁用危险服务和账户
- 禁用 root 登录:通过 SSH,禁止直接使用 root 用户登录,改使用普通用户
sudo提权。- 编辑
/etc/ssh/sshd_config,将PermitRootLogin设置为no。
- 编辑
- 禁用不必要的服务:如
telnet,rsh,ftp等,如果需要文件传输,请使用更安全的 SFTP。 - 创建专用用户:为网站运行创建一个非系统用户,并设置强密码。
安装安全软件
- Fail2ban:自动封禁恶意IP,可以配置它来防止暴力破解SSH、网站后台登录等。
- 入侵检测系统:如 OSSEC,可以监控文件变更、登录尝试等异常行为。
第二部分:织梦CMS核心安全设置
这是针对织梦程序本身的加固。
目录和文件权限
这是最最重要的一步,能有效防止Web用户(如Apache/Nginx运行账户)修改你的核心文件。
-
目录权限:设置为
755(drwxr-xr-x)
(图片来源网络,侵删) -
文件权限:设置为
644(-rw-r--r--) -
可写入目录:以下目录需要Web服务器写入权限,但必须严格限制。
/data:存放缓存、 sessions、配置文件等。权限设置为 751,让Web服务器读写,但禁止其他用户访问。/uploads:上传目录。权限设置为 751。/templets:模板缓存目录。权限设置为 751。
-
执行命令:
# 进入网站根目录 cd /path/to/your/dedecms # 设置所有目录为755 find . -type d -exec chmod 755 {} \; # 设置所有文件为644 find . -type f -exec chmod 644 {} \; # 设置关键可写目录为751 chmod -R 751 data/ uploads/ templets/
修改默认配置和路径
- 修改后台目录名:将
/dede/修改为一个复杂、无规律的名称(如myadmin_x8k2f)。 - 修改数据库配置文件:
- 配置文件路径:
/data/common.inc.php - 修改其中的
$cfg_dbname,$cfg_dbuser,$cfg_dbpwd为强密码。 - 重要:确保此文件的权限为
644,防止被Web读取。
- 配置文件路径:
修改默认管理员账户
- 登录后台后,立即删除默认的
admin用户。 - 创建一个新管理员账户,使用复杂的用户名和密码。
- 分配最小必要权限,不要轻易给
super超级管理员权限。
关闭和删除不必要的功能
- 关闭会员功能:如果您的网站不需要会员注册和登录,请在后台“系统” -> “系统基本参数” -> “会员设置”中关闭会员功能。
- 删除默认测试数据:安装后删除默认的文章、分类、专题等。
- 删除演示模块:如不需要,删除
/plus/demo/目录。
安全加固补丁
- 官方补丁:关注织梦官方发布的安全补丁,并及时应用到您的网站,这是修复已知漏洞最直接的方式。
- 第三方安全方案:一些安全公司或开发者会提供织梦的深度安全加固方案,可以搜索并评估后使用。
第三部分:数据库安全
- 强密码:为数据库用户设置一个极其复杂的密码,并且不要和网站后台密码一样。
- 最小权限原则:为织梦连接数据库的用户授予最小必要权限,通常只需要
SELECT,INSERT,UPDATE,DELETE权限,不需要DROP,CREATE,ALTER,GRANT等危险权限。 - 禁止外部访问数据库:在服务器防火墙中,确保数据库端口(3306)只对本地(127.0.0.1)开放,绝不对外网开放。
第四部分:日常运维与监控
安全是一个持续的过程。

(图片来源网络,侵删)
定期备份
- 全量备份:定期备份整个网站目录和数据库。
- 异地备份:将备份文件存储在另一台服务器或云存储(如阿里云OSS, 腾讯云COS)中,防止服务器被攻破后备份也被删除。
- 自动化备份:使用
rsync,scp或云厂商的备份工具实现自动化备份。
日志监控
- 开启Web访问日志:Nginx/Apache的访问日志是分析攻击行为的重要依据。
- 定期检查日志:使用
grep,awk等命令或 ELK 等日志分析系统,检查是否有异常IP频繁访问、扫描漏洞、尝试SQL注入等行为。 - 关注错误日志:
/data目录下的error_*.php文件记录了程序运行时的错误,定期检查可以提前发现问题。
文件完整性检查
- 定期使用
md5sum或sha256sum对核心文件(如index.php,include目录下的文件)进行校验,防止被黑客篡改。 - 可以使用
AIDE(Advanced Intrusion Detection Environment) 等工具来监控文件变更。
安全检查清单
在部署和维护织梦网站时,可以对照以下清单进行检查:
| 类别 | 项目 | 状态 |
|---|---|---|
| 服务器 | [ ] 系统已更新到最新版本 | ☐ |
| [ ] Web服务、PHP、数据库已更新 | ☐ | |
| [ ] 防火墙只开放80, 443及修改后的SSH端口 | ☐ | |
| [ ] SSH禁止root登录,使用普通用户+sudo | ☐ | |
| [ ] 已安装Fail2ban等安全软件 | ☐ | |
| 织梦程序 | [ ] 修改了后台目录名(非/dede/) | ☐ |
| [ ] 删除了默认admin账户,创建了新管理员 | ☐ | |
| [ ] 关闭了不必要的会员功能 | ☐ | |
[ ] 核心目录权限:/data, /uploads 为751 |
☐ | |
| [ ] 核心文件权限:其他文件为644 | ☐ | |
[ ] 数据库配置文件 /data/common.inc.php 权限为644 |
☐ | |
| [ ] 已打上最新的织梦官方安全补丁 | ☐ | |
| 数据库 | [ ] 数据库密码为强密码 | ☐ |
| [ ] 数据库用户权限最小化(无DDL权限) | ☐ | |
| [ ] 数据库端口3306不对公网开放 | ☐ | |
| 运维 | [ ] 已设置定期、自动化的全量备份 | ☐ |
| [ ] 备份文件存储在异地 | ☐ | |
| [ ] 定期检查Web访问日志和错误日志 | ☐ |
遵循以上步骤,可以极大地提升您的织梦网站的安全性,有效抵御绝大多数常见的网络攻击,安全无小事,请务必重视。
