以下是一份详尽的织梦DedeCMS服务器环境安全设置指南,从基础到进阶,涵盖了服务器、PHP、MySQL、DedeCMS自身等多个方面。

(图片来源网络,侵删)
核心安全原则:纵深防御
安全不是单一措施能解决的,而是像洋葱一样,层层设防,即使一层被突破,还有下一层保护。
第一层:服务器系统安全
这是最基础也是最关键的一层,是所有应用运行的基石。
1. 账号与访问控制
- 使用非root用户登录:创建一个普通用户用于日常管理和网站部署,避免直接使用
root用户,如果需要root权限,使用sudo命令。 - 设置强密码:为所有服务器账户(root、普通用户、FTP、数据库)设置高复杂度密码(大小写字母、数字、特殊符号组合),长度至少12位。
- 禁用或重命名默认账户:禁用或重命名如
admin,test等默认账户。 - 使用SSH密钥登录:禁止使用密码进行SSH登录,强制使用SSH密钥对进行认证,这是防止暴力破解SSH最有效的方法。
- 配置防火墙:
- Linux (iptables/firewalld):只开放必要的端口,如
22(SSH),80(HTTP),443(HTTPS),其他所有端口(如3306数据库端口)禁止对公网开放。 - 安全组(云服务器):在阿里云、腾讯云等云服务商的控制台设置安全组规则,原理同上。
- Linux (iptables/firewalld):只开放必要的端口,如
2. 系统与软件更新
- 及时更新系统:定期运行
yum update(CentOS/RHEL) 或apt-get update && apt-get upgrade(Debian/Ubuntu) 来修补系统漏洞。 - 更新Web服务器:保持Apache或Nginx版本为最新稳定版,并及时更新其配置。
- 更新PHP环境:保持PHP-FPM及扩展为最新版。
3. 文件系统权限
- 遵循最小权限原则:Web服务器进程(如Nginx的
nginx用户,Apache的apache用户)应该对网站目录拥有最小的必要权限。 - 推荐的目录权限设置:
- 网站根目录 (
/www/wwwroot/your_site):755 - 网站文件 (
.php,.html等):644 - 网站目录 (
/data,/uploads等):755 - 核心目录权限:
/data,/uploads,/templets,/include,/plus,/install等目录,禁止Web服务器用户写入。- 将
/data目录的所有者改为root,组为www(Web服务器用户组),然后设置权限为750,这样Web服务器进程可以读取和执行,但无法写入。
- 将
- 可写目录:
/uploads,/a等需要用户上传文件的目录,权限可以设为755或775(如果Web服务器用户和文件所有者在同一组)。
- 网站根目录 (
第二层:Web服务器安全配置
1. Nginx 安全配置 (推荐)
Nginx以其高性能和低资源消耗著称,是更现代的选择。
- 隐藏PHP版本:在
nginx.conf或站点配置文件中添加:server_tokens off; # 在http块中,隐藏Nginx版本 fastcgi_hide_header X-Powered-By; # 在location块中,隐藏PHP版本
- 禁止访问敏感文件:在
server块中添加,防止直接访问.ini,.conf,config.php等文件。location ~* \.(ini|conf|php|php5|tpl|sh|py)$ { deny all; } - 禁止访问隐藏文件:防止访问以开头的隐藏文件(如
.git,.svn,.htaccess)。location ~ /\. { deny all; access_log off; log_not_found off; } - 限制上传目录的执行权限:这是防止Webshell上传的关键!
location ~* ^/uploads/.*\.(php|php5)$ { deny all; } # 或者使用更严格的正则,只允许特定类型的文件 location ~* ^/(a|uploads)/.*\.(php|php5)$ { deny all; } - 设置安全响应头:
add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block";
2. Apache 安全配置
- 关闭目录列表:在
.htaccess或httpd.conf中设置Options -Indexes,防止浏览目录。 - 隐藏PHP版本:在
php.ini中设置expose_php = Off。 - 禁止访问敏感文件:在
.htaccess中添加:<FilesMatch "\.(ini|conf|php|php5|tpl|sh|py)$"> Order allow,deny Deny from all </FilesMatch> - 限制上传目录执行PHP:在
.htaccess中添加,这是防止Webshell的核心!# 在 /uploads 目录下的 .htaccess 文件中 <FilesMatch "\.php"> Order allow,deny Deny from all </FilesMatch>
第三层:PHP与MySQL安全配置
1. PHP安全 (php.ini)
- 关闭危险函数:这是防止Webshell执行命令的关键。
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,phpinfo
- 关闭全局注册变量:防止老版本的变量覆盖漏洞。
register_globals = Off
- 开启错误信息隐藏:防止泄露路径等敏感信息。
display_errors = Off log_errors = On error_log = /var/log/php_errors.log
- 设置上传限制:
file_uploads = On upload_max_filesize = 10M post_max_size = 10M
- 关闭危险URL打开方式:
allow_url_fopen = Off allow_url_include = Off
2. MySQL安全
- 为DedeCMS创建专用数据库用户:不要使用
root用户连接数据库,为DedeCMS创建一个数据库,并分配一个只有对该库有SELECT,INSERT,UPDATE,DELETE权限的用户。 - 设置强密码:为数据库用户设置强密码。
- 禁止远程访问:在MySQL配置文件 (
my.cnf或my.ini) 中,将bind-address = 127.0.0.1,这样MySQL只接受来自本机的连接,与服务器防火墙规则相呼应。 - 定期备份数据库:设置定时任务(Cron Job),每天自动备份数据库并下载到安全的地方。
第四层:DedeCMS自身安全设置
这是最贴近应用的防护层。

(图片来源网络,侵删)
1. 安装与初始化
- 删除
install目录:安装完成后,务必删除根目录下的install目录,这是最容易被利用的后门。 - 修改默认后台路径:将
/dede目录重命名为一个复杂、无规律的名称(如/myadmin_abc123),这能有效防止自动化扫描攻击。 - 修改默认管理员账号和密码:不要使用
admin作为用户名,并设置一个强密码。 - 关闭后台登录验证码:如果后台登录失败次数过多,可以开启验证码增加破解难度,但正常使用时保持关闭。
2. 核心文件与目录保护
-
修改
data目录名:将/data目录重命名,例如改为/mydata_abc,然后在/include/config_base.php文件中找到以下代码并修改:// 原始代码 define('DEDEDATA', DEDEDATA.'/data'); // 修改后 define('DEDEDATA', DEDEDATA.'/mydata_abc'); -
给
config_update.php设置密码:该文件用于在线更新,但风险极高,打开/dede/config_update.php文件,在开头添加以下代码:// 在最前面加上 if(!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] != 'your_username' || $_SERVER['PHP_AUTH_PW'] != 'your_password') { header('WWW-Authenticate: Basic realm="DedeCMS Update"'); header('HTTP/1.0 401 Unauthorized'); exit; }访问此文件时就会弹出用户名和密码的验证框。
3. 内容安全与权限
- 严格控制会员/投稿权限:不要轻易给普通会员
发表文档或管理所有栏目的权限,将会员发布的内容设置为“待审核”。 - 过滤插件:安装并启用DedeCMS的内容过滤插件,过滤掉XSS、SQL注入等恶意代码。
- 关闭不必要的功能模块:如果不用
会员、留言、反馈等功能,可以在后台模块管理中禁用它们,减少攻击面。
4. 定期维护
-
及时更新:关注DedeCMS官方社区或安全公告,一旦有新版本或安全补丁发布,立即更新,更新前务必备份数据库和文件。
(图片来源网络,侵删) -
定期检查文件:使用
Linux的find命令查找异常文件,# 查找最近一天内被修改的.php文件 find /www/wwwroot/your_site -name "*.php" -mtime -1 # 查找具有777权限的文件和目录 find /www/wwwroot/your_site -type f -perm 777 find /www/wwwroot/your_site -type d -perm 777
-
查看服务器日志:定期检查Nginx/Apache的访问日志和错误日志,分析异常请求。
安全检查清单
- [ ] 服务器:使用非root用户,SSH密钥登录,防火墙只开放必要端口。
- [ ] 系统:系统、Nginx/Apache、PHP已更新到最新稳定版。
- [ ] 权限:Web服务器用户对核心目录(
/data,/include等)无写入权限。 - [ ] Web服务器:隐藏版本信息,禁止访问敏感文件,限制上传目录执行PHP。
- [ ] PHP:已禁用危险函数(
exec,shell_exec等)。 - [ ] MySQL:使用专用低权限用户,禁止远程访问。
- [ ] DedeCMS:
- [ ] 删除
install目录。 - [ ] 修改后台路径(
/dede)。 - [ ] 修改
/data目录名并更新配置。 - [ ] 给
config_update.php设置密码。 - [ ] 管理员账号非
admin且密码为强密码。
- [ ] 删除
- [ ] 维护:已设置定期数据库备份,并养成定期检查和更新的习惯。
遵循以上步骤,你的织梦DedeCMS网站的安全性将得到极大的提升,安全是一个持续的过程,需要时刻保持警惕。
