织梦DedeCMS服务器环境如何安全设置?

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 织梦建站 正文

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

织梦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 数据库端口)禁止对公网开放
    • 安全组(云服务器):在阿里云、腾讯云等云服务商的控制台设置安全组规则,原理同上。

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等需要用户上传文件的目录,权限可以设为755775(如果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 安全配置

  • 关闭目录列表:在.htaccesshttpd.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.cnfmy.ini) 中,将 bind-address = 127.0.0.1,这样MySQL只接受来自本机的连接,与服务器防火墙规则相呼应。
  • 定期备份数据库:设置定时任务(Cron Job),每天自动备份数据库并下载到安全的地方。

第四层:DedeCMS自身安全设置

这是最贴近应用的防护层。

织梦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官方社区或安全公告,一旦有新版本或安全补丁发布,立即更新,更新前务必备份数据库和文件。

    织梦dedecms服务器环境安全设置
    (图片来源网络,侵删)
  • 定期检查文件:使用Linuxfind命令查找异常文件,

    # 查找最近一天内被修改的.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的访问日志和错误日志,分析异常请求。


安全检查清单

  1. [ ] 服务器:使用非root用户,SSH密钥登录,防火墙只开放必要端口。
  2. [ ] 系统:系统、Nginx/Apache、PHP已更新到最新稳定版。
  3. [ ] 权限:Web服务器用户对核心目录(/data, /include等)无写入权限。
  4. [ ] Web服务器:隐藏版本信息,禁止访问敏感文件,限制上传目录执行PHP。
  5. [ ] PHP:已禁用危险函数(exec, shell_exec等)。
  6. [ ] MySQL:使用专用低权限用户,禁止远程访问。
  7. [ ] DedeCMS
    • [ ] 删除install目录。
    • [ ] 修改后台路径(/dede)。
    • [ ] 修改/data目录名并更新配置。
    • [ ] 给config_update.php设置密码。
    • [ ] 管理员账号非admin且密码为强密码。
  8. [ ] 维护:已设置定期数据库备份,并养成定期检查和更新的习惯。

遵循以上步骤,你的织梦DedeCMS网站的安全性将得到极大的提升,安全是一个持续的过程,需要时刻保持警惕。

-- 展开阅读全文 --
头像
织梦search.php模板不存在怎么办?
« 上一篇 12-04
dede pagelist 取消下一页
下一篇 » 12-04

相关文章

取消
微信二维码
支付宝二维码

目录[+]