安全加固是一个系统工程,需要从 服务器环境、Nginx 配置、DedeCMS 本身、PHP 配置、运维习惯 五个层面入手。

服务器环境安全
这是安全的基础,地基不牢,上层建筑再怎么加固也容易出问题。
-
操作系统安全:
- 保持更新:定期使用
yum update(CentOS/RHEL) 或apt update && apt upgrade(Debian/Ubuntu) 更新系统和所有软件包到最新稳定版。 - 最小化原则:只安装必需的软件包,移除不必要的开发工具、服务(如 Telnet, RSH, FTP Server 等)。
- 配置防火墙:使用
firewalld(CentOS 7+) 或ufw(Ubuntu) 严格限制端口访问,只开放必要的端口,如 80 (HTTP), 443 (HTTPS),以及 SSH 的 22 端口(并修改默认端口)。 - 禁用root登录:创建普通用户进行日常操作,需要时使用
sudo提权,SSH 配置文件 (/etc/ssh/sshd_config) 中设置PermitRootLogin no。
- 保持更新:定期使用
-
数据库安全:
- 强密码:为数据库
root和 DedeCMS 专用的数据库用户设置高强度的、复杂的密码。 - 权限最小化:给 DedeCMS 的数据库用户只授予
dede数据库的SELECT,INSERT,UPDATE,DELETE权限,不要授予ALL PRIVILEGES或全局权限。 - 版本更新:保持 MySQL/MariaDB 数据库版本为最新稳定版。
- 禁止外网访问:在 MySQL 配置中,将
bind-address设置为0.0.1,只允许本地连接。
- 强密码:为数据库
Nginx 配置安全
Nginx 是网站的第一道防线,正确的配置可以抵御大量攻击。

-
隐藏 Nginx 版本信息: 防止攻击者根据版本号查找已知漏洞。
server { server_tokens off; # 在 http, server, 或 location 块中均可 } -
配置安全响应头: 告诉浏览器如何处理页面,增强客户端安全。
add_header X-Frame-Options "SAMEORIGIN"; # 防止点击劫持 add_header X-Content-Type-Options "nosniff"; # 防止 MIME 类型嗅探攻击 add_header X-XSS-Protection "1; mode=block"; # 启用 XSS 过滤 # 如果网站全站 HTTPS,推荐开启 HSTS # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
-
禁止访问敏感文件和目录: 保护
.php,.ini,.conf等核心配置文件,以及data,include,templets,install等目录。location ~* ^/(data|include|templets|install|plus)/.*\.(php|php5|jsp|asp|aspx|pl|py|sh)$ { deny all; } location ~* \.(ini|conf|config)$ { deny all; } # 禁止访问 .htaccess 文件(如果从 Apache 迁移过来) location ~ /\.ht { deny all; } -
防止 SQL 注入和 XSS 攻击: 虽然主要靠 PHP 程序处理,但 Nginx 可以作为第一层过滤。
(图片来源网络,侵删)# 过滤一些常见的 SQL 注入和 XSS 攻击字符 if ($args ~* "(union|select|insert|delete|update|drop|exec|cast|create|alter|truncate|having|count|chr|mid|master|into|outfile|load_file|ord|hex|substring|benchmark)") { return 403; } if ($args ~* "(<|%3C).*script.*(>|%3E)") { return 403; } if ($args ~* "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") { return 403; } if ($args ~* "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") { return 403; } -
配置防盗链: 防止其他网站盗用你的图片、视频等资源,节省带宽。
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { valid_referers none blocked server_names *.yourdomain.com yourdomain.com; if ($invalid_referer) { return 403; } } -
限制上传目录的执行权限: 这是最关键的一点之一!攻击者常通过上传漏洞拿 Webshell,必须禁止上传目录执行任何脚本。
location /uploads/ { location ~* \.(php|php5)$ { deny all; } } # DedeCMS 的默认上传目录是 uploads,如果你的不同,请相应修改 # 同样,/data/ 目录也应禁止执行 location /data/ { location ~* \.(php|php5)$ { deny all; } } -
限制请求方法和上传大小:
server { client_max_body_size 10M; # 限制上传文件大小为 10M if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 405; } }
DedeCMS 本身安全
这是防御的核心,因为漏洞主要源于程序本身。
-
及时更新: 这是最重要的一点! 关注 DedeCMS 官方网站或 GitHub,一旦有新版本或安全补丁发布,立即更新,不要使用已经停止维护的旧版本。
-
删除安装目录: 网站安装完成后,务必删除
/install/目录,这是最常见的后门入口。 -
修改默认后台路径和默认管理员账号:
- 不要使用默认的后台地址
/dede/,通过修改dede/config.php文件中的cfg_cmspath值来改变后台路径,例如改为/my-admin/。 - 删除默认管理员账号
admin,创建一个复杂的、无规律的账号名。 - 设置一个高强度、足够长的密码(12位以上,包含大小写字母、数字、特殊符号)。
- 不要使用默认的后台地址
-
文件和目录权限设置:
- Web 服务器运行用户:为安全起见,建议为 Nginx 创建一个非
root的专用用户,如www-data或nginx。 - 目录权限:
网站根目录:755(所有者可读写执行,组和其他用户可读执行)静态文件目录(如/uploads/,/images/,/media/):755PHP 文件目录(如/dede/,/include/,/plus/):755可写数据目录(如/data/,/a/):755(目录) 和644(文件)
- 核心文件权限:将
data目录下的common.inc.php等核心配置文件权限设置为644,甚至444(只读)。 - 执行命令:
# 假设 Web 用户是 www-data chown -R www-data:www-data /path/to/your/dedecms find /path/to/your/dedecms -type d -exec chmod 755 {} \; find /path/to/your/dedecms -type f -exec chmod 644 {} \; # 给特定目录可写权限 chmod 755 /path/to/your/dedecms/uploads chmod 755 /path/to/your/dedecms/data
- Web 服务器运行用户:为安全起见,建议为 Nginx 创建一个非
-
安全插件和代码审计:
- 从官方或可信渠道下载插件和模板,避免使用来源不明的“破解版”或“美化版”。
- 安装前最好进行简单的代码审计,或使用安全扫描工具检查。
-
开启后台登录验证码: 在 DedeCMS 后台系统基本参数中,确保登录验证码功能是开启的。
PHP 配置安全
PHP 是执行 DedeCMS 代码的环境,其配置同样关键。
-
关闭危险函数: 在
php.ini文件中,通过disable_functions禁用一些可能被用来执行系统命令的危险函数。disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen
-
关闭错误显示: 在生产环境的
php.ini中,关闭详细的错误信息,防止泄露敏感信息。display_errors = Off log_errors = On error_log = /var/log/php_errors.log
-
设置
open_basedir: 将 PHP 的文件访问限制在网站目录内,防止跨目录攻击。open_basedir = /path/to/your/dedecms/:/tmp/
-
配置上传目录: 确保
upload_tmp_dir和file_uploads的设置是安全的,并确保上传目录在open_basedir限制内。
运维和监控安全
-
定期备份:
- 全量备份:定期(如每天)备份整个网站目录和数据库。
- 增量备份:对于大型网站,可考虑增量备份。
- 异地备份:将备份文件存储在另一台服务器或云存储上,防止服务器宕机或被入侵后数据丢失。
-
安全监控:
- 定期扫描:使用安全工具(如安全狗、漏洞扫描器)定期对网站进行漏洞扫描。
- 日志分析:定期分析 Nginx 和 PHP 的访问日志和错误日志,发现异常请求(如大量 404 错误、特定参数的频繁请求)。
- 实时监控:配置 WAF(Web 应用防火墙)或使用云服务商的安全服务(如阿里云盾、腾讯云云镜)进行实时攻击拦截和告警。
-
安全意识:
- 不要在公共网络环境下登录后台。
- 定期更换管理员密码。
- 对服务器和网站的任何修改都要有记录。
加固 Nginx + DedeCMS 网站安全,没有一劳永逸的“银弹”,而是一个持续的过程,可以总结为以下核心要点:
- 环境:打好系统基础,最小化暴露面。
- Nginx:做好第一道防线,禁止敏感操作,隐藏信息。
- DedeCMS:保持更新、删除安装目录、修改默认路径/账号、设置合理权限。
- PHP:关闭危险功能,限制访问范围。
- 运维:定期备份、持续监控、保持警惕。
将以上措施逐一落实,你的网站安全性将得到极大的提升。
