Skip to content

安全加固 ​

系统内置的安全能力,以及部署时建议做的加固。

内置能力 ​

能力说明
隐藏后台路径主控 / 财务端 / 被控都可设随机后台路径,未登录访问裸路径一律 404(防扫)
扫站封禁同 IP 5 分钟内 60 个 404 → 封禁 10 分钟
登录限流同账号/IP 5 分钟 6 次失败锁定(三层都有)
两步验证(2FA)被控面板 + 财务端支持 TOTP(Google Authenticator)
注册验证码自研图形验证码(算式点阵图 + HMAC 签名令牌)
风控同 IP 注册上限、每小时下单上限、多账号下单标记(管理后台风控中心)
一次性安装码被控注册成功后立即轮换,旧码失效
TLS 证书验证财务端和主控校验 HTTPS 证书;Agent 注册通过主控 HTTPS 固定 Agent 证书指纹,API 与 WebSocket 均校验指纹
WS 票据财务端 → 主控的 WebSocket 用 60 秒一次性票据,服务令牌不出现在 URL
Token 哈希存储开放 API Token 只存 sha256,列表只显示前 12 位
敏感操作确认删除游戏服 / 改邮箱 / 关 2FA 需输入密码;删机器需输入机器名
路径穿越防护文件管理做前缀 + 软链双重校验;压缩包解压防 zip-slip
审计日志登录、下单、开通、删除、改密、开关机等全记录

源站锁(强烈建议) ​

把三台的 443 端口限制为只允许 Cloudflare 回源,避免被直接扫描。

被控 / 主控 / 财务端都带一个脚本(安装时生成,也可手动创建):

bash
# /opt/nkxconsole/cf-allow.sh(主控为例)
# 用法:bash cf-allow.sh            # 只允许 Cloudflare 网段访问 443
#       bash cf-allow.sh --remove   # 恢复

脚本做的事:

bash
nft delete table inet nkxconsole 2>/dev/null
nft add table inet nkxconsole
nft add chain inet nkxconsole input '{ type filter hook input priority filter; policy accept; }'
nft add rule inet nkxconsole input iif lo accept
# 允许 Cloudflare 全部网段访问 443
for cidr in 173.245.48.0/20 103.21.244.0/22 ... 2c0f:f248::/32; do
  nft add rule inet nkxconsole input tcp dport 443 ip saddr $cidr accept
  nft add rule inet nkxconsole input tcp dport 443 ip6 saddr $cidr accept
done
nft add rule inet nkxconsole input tcp dport 443 drop

财务端要额外放行主控?

不需要。财务端调主控用的是主控的域名(走 CF)。但主控调被控是直连 8443,所以被控要放行主控的出口 IP(安装时自动写入白名单)。

被控侧白名单 ​

被控的 8443(节点 API)由 nkxnode nft 表限制,只允许注册时下发的白名单(主控出口 IP)。修改白名单:

bash
# 被控上
sqlite3 /opt/pvepanel/panel.db "update settings set value='1.2.3.4,5.6.7.8' where key='node_api_allow';"
systemctl restart nkx-panel

敏感数据与权限 ​

服务启动时会把 SQLite 主文件及 WAL/SHM/journal 文件、配置文件和密钥文件权限收紧到 0600;数据库路径不能是符号链接。仍应确保服务账号独占这些文件。

bash
# 手动检查或修复三端数据库 / 私钥 / 配置权限
chmod 600 /opt/nkxweb/web.db* /opt/nkxweb/key.pem /opt/nkxweb/config.json
chmod 600 /opt/nkxconsole/console.db* /opt/nkxconsole/key.pem /opt/nkxconsole/config.json
chmod 600 /opt/pvepanel/panel.db* /opt/pvepanel/key.pem /opt/pvepanel/config.json

trusted_proxies 默认留空。只有服务前面确实有反向代理时,才填写代理实际来源 CIDR;不要填客户端网段。应用只在 TCP 对端属于这些网段时才读取 X-Forwarded-For 等转发头,CIDR 写错会阻止服务启动。

旧配置里的 console_insecure 和 node_insecure 字段会被忽略。财务端连接自建 CA 的主控时,在财务端 config.json 设置 console_ca_file;旧节点首次升级或 Agent 证书变化后,在主控重新生成安装码并执行新安装命令来登记新指纹。

日常建议 ​

  1. 后台路径用随机串(不要 admin、manage)
  2. 管理员账号开 2FA
  3. 定期备份三端数据库(见 升级 / 备份)
  4. 被控宿主机不要跑其他对外服务,SSH 用密钥 + 改端口
  5. 定期看「管理后台 → 风控中心」与「操作日志」

NKXCLOUD · 自研云服务器 / 游戏服务器管理系统