3x-ui3x-ui
运维

安全加固

加固 3x-ui——面板认证与 2FA、Fail2ban IP 限制、防火墙规则、BBR,以及保持更新。

代理面板是高价值目标。几层加固措施就能带来很大改善。

面板加固

  • 强而唯一的凭据,并启用双因素认证(TOTP)。
  • 使用非默认的面板端口,以及一个长且随机的 Web 根路径。
  • 为面板启用 TLS(直接启用,或通过反向代理)。
  • 内置的登录限制器会在某个 IP/用户名于 5 分钟内连续 5 次登录失败后将其封锁 (封锁 15 分钟),并且面板可以将自身的出站流量经由某个 outbound 路由出去。

完整的检查清单请参见首次登录

Fail2ban 与 IP 限制

为每个客户端设置一个 IP 限制(参见客户端),以限制同时使用的源 IP 数量。限制的执行由 Fail2ban 负责,3x-ui 会为你安装并配置好它(脚本安装时默认启用, Docker 安装时通过 XUI_ENABLE_FAIL2BAN=true 启用)。

可从 x-ui 菜单(22 — IP Limit Management)进行管理:安装/配置、修改封锁时长 (默认 30 分钟)、封锁/解封某个 IP、查看封锁日志,以及检查状态。其底层机制如下:

  • 该 jail 名为 3x-ipl;封锁日志位于 /var/log/x-ui/3xipl.log/var/log/x-ui/3xipl-banned.log(也可通过 x-ui banlog 查看)。
  • 封锁覆盖所有 TCP/UDP,但不包括你的 SSH 端口和面板端口,因此封锁不会把你 锁在服务器或面板之外。

在 Docker 上,Fail2ban 使用 iptables 进行封锁,这需要 NET_ADMIN(以及 NET_RAW)权能——docker-compose.yml 已授予这些权能。若使用裸的 docker run,请添加 --cap-add=NET_ADMIN --cap-add=NET_RAW,否则封锁只会被 记录但永远不会真正生效。

防火墙

只开放你实际使用的端口:SSH、面板端口、订阅端口以及你的入站端口。x-ui 菜单 (23 — Firewall Management)封装了 ufw,或者你也可以在此生成规则:

Firewall rules generator

Pick the ports to open and copy ready-made ufw and nftables rules.

ufw
ufw allow 22/tcp   # SSH
ufw allow 2053/tcp   # panel
ufw allow 443/tcp   # inbound (HTTPS)
ufw enable
nftables (/etc/nftables.conf)
#!/usr/sbin/nft -f

flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;

        iif "lo" accept
        ct state established,related accept
        icmp type echo-request accept
        tcp dport 22 accept   # SSH
        tcp dport 2053 accept   # panel
        tcp dport 443 accept   # inbound (HTTPS)
    }

    chain forward {
        type filter hook forward priority 0; policy drop;
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
}

在启用默认拒绝(default-deny)的防火墙之前,请确保 SSH 始终处于放行状态,否则你 可能把自己锁在外面。请在保留第二个会话的情况下进行测试。

网络调优(BBR)

x-ui 菜单(26 — Enable BBR)用于切换 Google 的 BBR 拥塞控制算法 (net.ipv4.tcp_congestion_control = bbrnet.core.default_qdisc = fq),它在拥塞链路 上通常能提升吞吐量。

保持更新

定期更新 3x-ui 和 Xray-core——安全修复会随新版本发布。请关注 发布页面,并参见 更新与卸载

On this page