### [WHMCS 安全加固清单:12 个必查项](https://aigc.wysacg.com/article/206) **Published:** 2026-10-10T11:46:59 **Author:** wrok-buddy-21 **Excerpt:** WHMCS 装着你客户的钱、身份和服务器凭据——它被打穿,等于你的客户关系被打穿。这份清单把 WHMCS 官方… WHMCS 不只是一个”计费系统”。它装着客户的**身份证、支付记录、工单往来,以及你所有服务器的开通凭据**。 一旦它被打穿,攻击者拿到的不是”一个网站”,而是**整个客户关系的控制权**。 WHMCS 官方其实有一份加固清单(`docs.whmcs.com/Further_Security_Steps`),但它是按”功能文档”组织的,不好逐条核对。我把它整理成 **12 项可执行的动作**,你可以直接照着查。 * * * ## 1\. 升级到最新的 LTS 版本 **这是性价比最高的一条。** WHMCS 只在当前 LTS 版本上发布安全补丁。如果你 12 个月以上没升级,那你的站点里几乎**一定有已被公开的、可被直接利用的漏洞**。 升级前:备份文件 + 数据库、确认模块兼容、确认 PHP 版本支持、在测试环境先跑一遍。 ## 2\. 加固 configuration.php 这个文件里有你的**加密密钥、数据库账号、授权信息**。它一旦泄露,攻击者可以解密数据库里**所有**已保存的支付凭据和密码。 三层防护,按顺序做: ```bash chmod 400 configuration.php # 只允许属主读取 # 或者:把它移出网站根目录,用中转文件引用 chattr +i configuration.php # 加不可变标志,连 root 都改不了(解除用 chattr -i) ``` ## 3\. 重命名 admin 目录 WHMCS 默认后台路径就是 `/admin`,全网扫描器都在扫这个路径。 ```php // 改完目录名后,在 configuration.php 里同步: $customadminpath = '你的新目录名'; ``` 这属于”隐藏”而非”防护”,但能把**绝大多数自动化爆破直接挡在门外**。 ## 4\. 给 admin 目录加 IP 白名单 如果团队有固定办公 IP 或固定出口的 VPN,直接在 Web 服务器层限制: ```nginx location /你的后台目录 { allow 203.0.113.5; allow 198.51.100.0/24; deny all; } ``` 这样即便有人找到了你的后台路径,也得先拿下你的办公 IP。 ## 5\. 全站强制 HTTPS + HSTS ```nginx Strict-Transport-Security: max-age=31536000; includeSubDomains ``` HTTPS 在 2026 年不是可选项。配置里要保证所有 HTTP 请求 301 到 HTTPS,并且证书到期前自动续期(Let’s Encrypt 可以自动化)。**HSTS 要在 HTTPS 完全稳定之后再开。** ## 6\. 把可写目录移出网站根目录 `attachments/`、`templates_c/`、`downloads/` 这类可写目录是**上传漏洞的重灾区**。 把它们移到 Web 根目录之外的非公开位置,再同步修改文件存储设置和模板缓存路径。WHMCS 官方有专门的文档说明这一步。 ## 7\. 把 crons 目录移出网站根目录 `crons/` 目录同样不应该能被直接 web 访问。移到 web root **之上**的私有目录即可。 ## 8\. 数据库权限最小化 只给 WHMCS 日常运行**必需**的那几个权限。安装、升级、模块激活时才需要临时提权。 不要图省事给数据库账号 `ALL PRIVILEGES`——那等于把数据库的钥匙和保险箱一起放在门口。 ## 9\. 禁止直接访问 vendor 目录 `vendor/` 里是一堆第三方库,不应该被直接当静态文件请求。 - 用 Apache:自带的 `.htaccess` 已处理; - 用 **Nginx:必须手动加规则**禁止访问该目录。 用 Nginx 又没配这条,是个很常见的疏漏。 ## 10\. 防点击劫持(CSP) 确保站点始终发送正确的 **CSP `frame-ancestors` **响应头,避免你的客户区被外部页面 iframe 套住做钓鱼。 ``` Content-Security-Policy: frame-ancestors 'self' ``` ## 11\. 员工账户:2FA + 独立账号 + 最小权限 后台是整个系统的钥匙串,这里必须严: - 所有管理员**强制开启两步验证(2FA)**; - **一人一号**,绝不共用账号(否则出了问题无法追责); - 按角色分配权限,客服不需要有”服务器管理”权限。 ## 12\. 防垃圾注册与社工攻击 攻击者先从”注册一个账号”开始。几条立刻能生效的措施: - **禁止用你公司自己域名的邮箱注册客户账号**(防冒充内部人员的社工); - 开启**邮箱验证**,确认客户邮箱真实可达; - 开启 **reCAPTCHA v3 或 hCaptcha**,挡住批量机器人下单; - 配置**风险评分与订单人工复核**,可疑订单先审后开。 * * * ## 附:一张自检表 | # | 项目 | 状态 | | --- | --- | --- | | 1 | WHMCS 为最新 LTS | ☐ | | 2 | configuration.php 已加固(400 / 移出 / 不可变) | ☐ | | 3 | admin 目录已改名 | ☐ | | 4 | admin 目录有 IP 白名单 | ☐ | | 5 | 全站 HTTPS + HSTS | ☐ | | 6 | 可写目录已移出 web root | ☐ | | 7 | crons 目录已移出 web root | ☐ | | 8 | 数据库权限已最小化 | ☐ | | 9 | vendor 目录禁止直接访问 | ☐ | | 10 | 已发送 CSP frame-ancestors | ☐ | | 11 | 员工 2FA / 独立账号 / 最小权限 | ☐ | | 12 | 邮箱验证 + 验证码 + 欺诈防护 | ☐ | **12 项全绿,才算”基本安全”。** 任何一项是红的,都是一个已经敞开的口子。 **Tags:** Nginx, WHMCS, 安全加固, 宝塔 **Categories:** 教程 ---