本教程将从 “事前预防”“事中防御”“事后处理” 三个层面,结合 DedeCMS 的特点,为您提供一套完整的安全解决方案。

dede网站安全设置防挂马教程
(图片来源网络,侵删)

第一部分:事前预防 - 坚固你的“城墙”

这是最重要的一步,良好的预防措施可以抵御 90% 以上的攻击。

核心原则:保持核心和插件更新

  • 为什么重要? DedeCMS 官方团队会不断发现并修复旧版本中的安全漏洞,黑客正是利用这些已知漏洞来攻击网站的。
  • 如何操作?
    • 定期登录 DedeCMS 后台,检查是否有新的核心版本或补丁发布。
    • 及时更新到最新的稳定版。(重要提示:更新前务必备份数据库和网站程序!)
    • 对于非官方的第三方插件,也要关注其作者的更新和安全通告。

服务器环境安全配置

  • 使用安全的 PHP 版本: 确保你的服务器运行的是稳定且带有最新安全补丁的 PHP 版本(建议 PHP 7.x 或更高,避免使用已停止维护的 PHP 5.x)。

  • 设置安全的文件和目录权限:

    • 目录权限: 建议设置为 755
    • 文件权限: 建议设置为 644
    • /data 目录: 这是存放数据库配置文件 config.php 的核心目录,权限应设置为 755750,确保 Others 用户没有写入和执行权限。
    • /dede 目录(后台目录): 强烈建议将后台目录重命名,并设置访问密码(通过服务器控制面板如 cPanel/Plesk 或 .htaccess 实现)。
    • /uploads 等上传目录: 这是黑客最常攻击的目标,务必确保该目录下的文件执行权限被关闭,最简单的方法是在该目录下创建一个空的 index.htmlindex.php 文件,防止目录被列表浏览,更高级的做法是在 php.ini 中设置 open_basedir 或通过 .htaccess 限制执行权限。

    .htaccess 示例(限制 uploads 目录下 PHP 文件的执行):

    dede网站安全设置防挂马教程
    (图片来源网络,侵删)
    <Files "*.php">
        Order Deny,Allow
        Deny from all
    </Files>

密码安全

  • 后台管理员密码: 使用足够复杂的密码(包含大小写字母、数字、特殊符号,长度不少于 12 位)。
  • FTP/SFTP 密码: 同样要复杂,并且不要和后台密码一样。
  • 数据库密码: 设置强密码,不要使用简单的默认密码如 root, 123456 等。
  • 定期更换密码: 养成定期更换重要密码的习惯。

删除不必要的文件和目录

  • 安装目录 /install 网站安装完成后,务必删除这个目录,这是巨大的安全隐患。
  • 演示数据: 安装时生成的默认演示文章、分类等,如果不需要,请及时清理。
  • 冗余文件: 删除不需要的插件、模板和旧版本的文件。

第二部分:事中防御 - 部署你的“护城河”

即使预防做得再好,也可能被攻击,防御措施可以在攻击发生时进行拦截和告警。

修改默认后台目录和入口

  • 修改后台目录名: 这是最简单有效的手段之一,将 /dede 目录重命名为一个别人猜不到的名字,如 myadmin2025
  • 修改后台入口文件名: 进入后台后,系统 -> 系统基本参数 -> 核心设置,找到“后台默认文件名”,将其修改为自定义的名称,如 login.php

使用安全插件(推荐)

DedeCMS 生态中有一些优秀的安全插件,可以大大增强网站安全性。

  • DedeCMS安全狗 / 江哥DedeCMS安全助手: 这类插件通常提供以下功能:
    • 登录防护: 限制后台登录失败次数,防止暴力破解。
    • 文件监控: 实时监控关键文件(如 config.php, index.php)是否被篡改。
    • SQL注入防御: 过滤恶意 SQL 查询。
    • 扫描后门: 定期扫描网站文件,查找可疑的木马文件。
    • 操作日志: 记录所有后台关键操作,方便追溯。

如何使用: 在 DedeCMS 官方应用市场或第三方可信来源下载,然后按说明安装和配置。

配置服务器级别的安全防护

  • 使用 Web 应用防火墙: 如果你的服务器是云服务器(如阿里云、腾讯云),强烈建议开启它们自带的 WAF 服务,WAF 可以在恶意请求到达网站程序之前就进行拦截。
  • 配置 .htaccess (Apache 环境):
    • 防止目录遍历:
      Options -Indexes
    • 防止一些常见攻击:
      # 防止SQL注入
      RewriteCond %{QUERY_STRING} (\.\.\/|\.\./ [NC,OR]
      RewriteCond %{QUERY_STRING} (base64|echo|concat|select|insert|delete|update|union|into|load_file|outfile) [NC,OR]
      RewriteCond %{QUERY_STRING} (mosConfig_[a-zA-Z_]{1,21}(=|%3D)) [NC,OR]
      RewriteCond %{QUERY_STRING} (base64|eval) [NC,OR]
      RewriteCond %{QUERY_STRING} (GLOBALS|_REQUEST) [NC]
      RewriteRule ^(.*)$ index.php [F,L]

定期备份数据

  • 为什么重要? 这是最后的防线,即使网站被挂马,你也可以通过备份快速恢复,将损失降到最低。
  • 如何操作?
    • 数据库备份: 定期通过 DedeCMS 后台 系统 -> 数据库备份/恢复 功能导出数据库文件,并保存到本地。
    • 程序文件备份: 定期将整个网站程序打包下载。
    • 自动化备份: 如果服务器支持,可以设置定时任务(Cron Job),自动将备份文件发送到你的邮箱或云存储。

第三部分:事后处理 - 清理“病毒”并修复“伤口”

如果不幸发现网站被挂马了,不要慌张,按以下步骤处理:

dede网站安全设置防挂马教程
(图片来源网络,侵删)

立即隔离

  • 断开连接: 立即将网站从服务器上暂时下线,防止更多访问者受害。
  • 修改密码: 立即修改所有相关密码:FTP密码、数据库密码、后台管理员密码、主机控制面板密码

定位挂马文件

这是最关键的一步,黑客通常会在网站的公共文件(如首页、列表页、内容页)中插入恶意 <iframe><script><meta>

  • 手动检查(适用于小网站)

    1. 通过 FTP 连接服务器,下载网站的首页 index.php 和其他重要页面文件。
    2. 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开这些文件。
    3. 搜索一些可疑的关键词,如 iframe, script, http:// (特别是可疑的短域名), .cn, .tk 等后缀的域名。
    4. 仔细检查文件的开头 <?php ... ?> 和结尾 ?> 之间,以及 HTML 代码中是否有异常的代码。
  • 使用工具(推荐,高效准确)

    1. 使用 DedeCMS 安全插件: 很多安全插件都带有“文件扫描”功能,可以快速扫描整个网站,标记出被修改过的文件。
    2. 使用 Linux 命令(如果你有服务器权限):
      # 在网站根目录下执行,查找包含 "iframe" 或 "eval" 的文件
      grep -r "iframe" . --include="*.php" --include="*.html"
      grep -r "eval" . --include="*.php" --include="*.html"

      这个命令会帮你快速定位到包含恶意代码的文件。

清理和修复

  • 清理恶意代码: 定位到被挂马的文件后,删除黑客插入的所有恶意代码,只保留原有的 DedeCMS 代码。
  • 对比备份: 如果你之前有备份,将干净的备份文件上传到服务器覆盖被感染的文件。
  • 检查数据库: 有时黑客会修改 dede_arctitle 等表的内容,在文章内容里插入挂马链接,登录数据库,使用 SELECT 语句查询 bodydescription 字段是否包含可疑的 <script><iframe> 标签,并清理。

查找并修复漏洞

  • 分析原因: 回想一下最近是否更新过插件、模板,或者使用了弱密码?找到被攻击的根源。
  • 修复漏洞:
    • 如果是密码太弱,立即更换强密码。
    • 如果是某个旧插件有漏洞,立即删除该插件或联系作者获取安全补丁。
    • 如果是服务器配置问题,根据第一部分的建议进行加固。

重新上线并监控

  • 清理干净后: 将网站重新上传到服务器并恢复访问。
  • 持续监控: 密切关注网站流量和搜索引擎收录情况,使用 Google Search Console 等工具检查网站是否被标记为“危险网站”。
  • 建立长效机制: 将上述的预防、防御措施制度化,定期检查和维护,确保网站长治久安。

DedeCMS 防挂马的核心思想是:“纵深防御”

  1. 基础防线(预防): 保持更新、强密码、安全权限。
  2. 应用防线(防御): 安全插件、后台加固、WAF。
  3. 最后防线(恢复): 定期备份、应急处理流程。

安全是一个持续的过程,没有一劳永逸的解决方案,养成良好的安全习惯,才是保护你网站的最佳方式。