标签: 安全加固

  • WHMCS 安全加固清单:12 个必查项

    WHMCS 不只是一个”计费系统”。它装着客户的身份证、支付记录、工单往来,以及你所有服务器的开通凭据。

    一旦它被打穿,攻击者拿到的不是”一个网站”,而是整个客户关系的控制权。

    WHMCS 官方其实有一份加固清单(docs.whmcs.com/Further_Security_Steps),但它是按”功能文档”组织的,不好逐条核对。我把它整理成 12 项可执行的动作,你可以直接照着查。


    1. 升级到最新的 LTS 版本

    这是性价比最高的一条。

    WHMCS 只在当前 LTS 版本上发布安全补丁。如果你 12 个月以上没升级,那你的站点里几乎一定有已被公开的、可被直接利用的漏洞。

    升级前:备份文件 + 数据库、确认模块兼容、确认 PHP 版本支持、在测试环境先跑一遍。

    2. 加固 configuration.php

    这个文件里有你的加密密钥、数据库账号、授权信息。它一旦泄露,攻击者可以解密数据库里所有已保存的支付凭据和密码。

    三层防护,按顺序做:

    chmod 400 configuration.php      # 只允许属主读取
    # 或者:把它移出网站根目录,用中转文件引用
    chattr +i configuration.php      # 加不可变标志,连 root 都改不了(解除用 chattr -i)
    
    

    3. 重命名 admin 目录

    WHMCS 默认后台路径就是 /admin,全网扫描器都在扫这个路径。

    // 改完目录名后,在 configuration.php 里同步:
    $customadminpath = '你的新目录名';
    
    

    这属于”隐藏”而非”防护”,但能把绝大多数自动化爆破直接挡在门外。

    4. 给 admin 目录加 IP 白名单

    如果团队有固定办公 IP 或固定出口的 VPN,直接在 Web 服务器层限制:

    location /你的后台目录 {
        allow 203.0.113.5;
        allow 198.51.100.0/24;
        deny all;
    }
    
    

    这样即便有人找到了你的后台路径,也得先拿下你的办公 IP。

    5. 全站强制 HTTPS + HSTS

    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 项全绿,才算”基本安全”。 任何一项是红的,都是一个已经敞开的口子。