强曰为道

与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

08 - 反作弊与安全防护

08 - 反作弊与安全防护

8.1 作弊类型概览

8.1.1 常见作弊手段

作弊类型说明危害等级示例客户端
Xray/矿透透视方块,只看到矿石⭐⭐⭐⭐Xray Resource Pack, Wurst
KillAura自动攻击附近实体⭐⭐⭐⭐⭐Wurst, Impact
Reach增加攻击/放置距离⭐⭐⭐⭐
Fly飞行作弊⭐⭐⭐
Speed移动加速⭐⭐⭐
ESP透视玩家/实体⭐⭐⭐
Jesus水上行走⭐⭐
Scaffold自动搭路⭐⭐⭐
Nuker快速破坏方块⭐⭐⭐⭐
Inventory Hack远程操作箱子⭐⭐⭐
Dupe物品复制漏洞⭐⭐⭐⭐⭐
Crash Exploit崩服漏洞⭐⭐⭐⭐⭐

8.1.2 作弊检测原理

玩家输入 → 服务端验证 → 规则检查 → 判定
              ↓
        位置数据 → 移动合法性检查
        攻击数据 → 攻击范围检查
        方块交互 → 放置/破坏合法性
        速度数据 → 速度限制检查

8.2 Paper 内置安全功能

8.2.1 反 Xray

Paper 内置了高效的反 Xray 功能,无需额外插件:

# config/paper-world-defaults.yml

anticheat:
  anti-xray:
    # 启用反 Xray
    enabled: true

    # 引擎模式
    # 1 = 替换矿石为假矿石(性能好,推荐)
    # 2 = 替换所有方块为石头(效果好,性能开销大)
    engine-mode: 1

    # 被隐藏的方块(engine-mode: 1 时有效)
    hidden-blocks:
      - gold_ore
      - deepslate_gold_ore
      - iron_ore
      - deepslate_iron_ore
      - coal_ore
      - deepslate_coal_ore
      - lapis_ore
      - deepslate_lapis_ore
      - diamond_ore
      - deepslate_diamond_ore
      - redstone_ore
      - deepslate_redstone_ore
      - emerald_ore
      - deepslate_emerald_ore
      - copper_ore
      - deepslate_copper_ore

    # 岩浆是否遮挡矿石
    lava-obscures: true

    # 更新半径
    update-radius: 2

    # 使用权限节点(允许特定玩家绕过)
    use-permission: false

engine-mode 对比:

模式效果性能影响推荐
0关闭不推荐
1替换矿石⭐ 推荐
2替换所有不透明方块高安全需求

注意:反 Xray 仅在服务端启用时有效。对于客户端资源包作弊(Resource Pack Xray),Paper 的反 Xray 同样有效,因为它修改的是发送给客户端的区块数据。

8.2.2 飞行检测

# server.properties
allow-flight=false
# 设为 false 时,服务端会检测飞行并踢出
# 但会误判创造模式和滞留药水
# config/paper-global.yml
unsupported-settings:
  # 检测到非法移动时的行为
  # 可以配置踢出信息

8.2.3 移动检查

# spigot.yml
settings:
  # 移动过快检测阈值
  moved-too-quickly-multiplier: 10.0
  # 移动错误阈值
  moved-wrongly-threshold: 0.0625

8.2.4 实体碰撞限制

# config/paper-global.yml
collisions:
  # 禁用玩家碰撞(减少碰撞作弊利用)
  enable-player-collisions: false

  # 实体碰撞最大数
  max-entity-collisions: 4

8.3 反作弊插件

8.3.1 插件对比

插件价格检测能力误判率性能影响推荐度
Vulcan付费⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
GrimAC免费⭐⭐⭐⭐⭐⭐⭐⭐
NoCheatPlus免费⭐⭐⭐⭐⭐⭐
Matrix免费/付费⭐⭐⭐⭐⭐⭐⭐
Spartan付费⭐⭐⭐⭐⭐

8.3.2 Vulcan 配置

Vulcan 是目前检测能力最强的反作弊插件:

# plugins/Vulcan/config.yml

# 全局设置
settings:
  # 是否在违规时取消操作(而非踢出)
  cancel: true
  # 日志详细程度
  verbose: false
  # 性能模式
  performance-mode: true

# 检查模块
checks:
  movement:
    speed:
      enabled: true
      max-vl: 10          # 最大违规次数
      punish: "kick"       # 惩罚:kick / ban / warn
    fly:
      enabled: true
      max-vl: 10
    nofall:
      enabled: true
      max-vl: 5

  combat:
    killaura:
      enabled: true
      max-vl: 15
      # 检测类型
      rotation: true       # 旋转检测
      hitbox: true         # 命中框检测
      multi: true          # 多目标检测
    reach:
      enabled: true
      max-vl: 10
      max-distance: 3.5    # 最大攻击距离
    critical:
      enabled: true
      max-vl: 5

  player:
    scaffold:
      enabled: true
      max-vl: 10
    fastbreak:
      enabled: true
      max-vl: 5
    fastplace:
      enabled: true
      max-vl: 5

# 处罚配置
punishments:
  broadcast: true          # 广播违规信息
  broadcast-message: "&c[Vulcan] &7%player% &c因 &7%check% &c被处罚"
  commands:
    - vl: 10
      command: "kick %player% 检测到违规行为"
    - vl: 30
      command: "tempban %player% 1d 重复违规"

8.3.3 GrimAC 配置

GrimAC 是免费开源的高性能反作弊:

# plugins/GrimAC/config.yml

# 应用层设置
application:
  # 反应时间(毫秒)
  delay: 500
  # 是否使用异步检测
  async: true

# 检查设置
checks:
  # 移动检查
  movement:
    # 速度检查
    speed:
      enabled: true
      setback: true         # 回弹非法移动
    # 飞行检查
    fly:
      enabled: true
      setback: true
    # 游泳检查
    swimming:
      enabled: true

  # 战斗检查
  combat:
    # 攻击距离
    reach:
      enabled: true
      distance: 3.0
    # 攻击速度
    attack-speed:
      enabled: true
    # 暴击检查
    critical:
      enabled: true

  # 方块交互检查
  placement:
    # 放置距离
    reach:
      enabled: true
      distance: 4.5
    # 放置速度
    speed:
      enabled: true

# 踢出设置
knockback:
  # 是否回弹
  setback: true
  # 回弹消息
  message: "&c检测到非法移动"

8.3.4 NoCheatPlus 配置

老牌免费反作弊,配置简单:

# plugins/NoCheatPlus/config.yml

# 严格模式
strict:
  falsepositive:
    active: true

# 检查配置
checks:
  movement:
    survivalfly:
      # 生存模式飞行检查
      actions:
        first: cancel
        then:
          - cancel vl>100
          - kick vl>200
    creativefly:
      # 创造模式飞行检查
      actions:
        first: cancel

  blockbreak:
    fastbreak:
      # 快速破坏检查
      actions:
        first: cancel
        then:
          - cancel vl>50

  fighting:
    reach:
      # 攻击距离检查
      actions:
        first: cancel
        then:
          - cancel vl>30
          - kick vl>100

8.4 防熊策略

8.4.1 WorldGuard 区域保护

# 安装 WorldGuard 后设置全局标志

# 禁止放置 TNT
/rg flag __global__ tnt deny

# 禁止火焰蔓延
/rg flag __global__ fire-spread deny

# 禁止液体流动(保护建筑)
/rg flag __global__ lava-flow deny
/rg flag __global__ water-flow deny

# 禁止爆炸破坏
/rg flag __global__ creeper-explosion deny
/rg flag __global__ tnt-explosion deny

# 禁止活塞推动(防止活塞虫)
/rg flag __global__ piston deny

# 限制实体生成(防止大量动物堆积)
/rg flag __global__ mob-spawning deny

8.4.2 CoreProtect 方块日志

# plugins/CoreProtect/config.yml

# 保留日志时间(天)
purge: 90

# 方块日志
logging:
  # 记录方块放置/破坏
  block: true
  # 记录方块交互(开箱、按按钮等)
  interact: true
  # 记录容器操作(拿取/放入物品)
  container: true
  # 记录实体变化
  entity: true
  # 记录玩家死亡
  player-death: true
# 常用 CoreProtect 命令
/co inspect                   # 开启检查模式
/co lookup u:<用户> r:<范围> t:<时间>  # 查询操作
/co rollback u:<用户> t:<时间> r:<范围> # 回滚操作
/co restore                    # 恢复回滚
/co purge t:<天数>            # 清理旧日志

8.4.3 登录插件(AuthMe)

对于盗版服务器,AuthMe 是必备的:

# plugins/AuthMe/config.yml

settings:
  # 强制注册
  ForceSingleSession: true
  # 登录超时(秒)
  RegistrationTimeout: 60
  # 密码最小长度
  minPasswordLength: 6
  # 密码最大长度
  maxPasswordLength: 30

Protection:
  # 保护设置
  enableProtection: true
  # 安全位置(未登录时传送的位置)
  safetySpawn: true
  # 限制未登录玩家的命令
  allowCommands:
    - /login
    - /register
    - /help

8.5 网络层安全

8.5.1 连接限流

# server.properties
# 连接限流(毫秒)
connection-throttle=4000

# 每 IP 最大连接数
rate-limit=3

8.5.2 防止代理连接

# server.properties
prevent-proxy-connections=true

8.5.3 白名单

# server.properties
white-list=true
enforce-whitelist=true
# 添加白名单
/whitelist add PlayerName
/whitelist on

8.6 安全配置最佳实践

8.6.1 服务器安全检查清单

检查项配置位置推荐值说明
在线模式server.propertiestrue防止盗版登录
反 Xraypaper-world-defaults.ymlengine-mode:1防矿透
白名单server.properties按需限制玩家进入
爆炸保护WorldGuarddeny防止 TnT 破坏
方块日志CoreProtect启用可追溯和回滚
反作弊Vulcan/GrimAC启用检测作弊行为
玩家碰撞paper-global.ymlfalse减少碰撞作弊
IP 限流server.properties4000ms防止连接刷
OP 管理LuckPerms权限组替代不使用 OP

8.6.2 游戏规则安全设置

# 禁用命令方块(防止恶意命令方块)
gamerule commandBlockOutput false

# 限制命令方块执行权限
# server.properties
enable-command-block=false

# 禁用调试棒(防止利用)
gamerule sendCommandFeedback false

# 设置出生点保护
# server.properties
spawn-protection=16

8.7 应急响应

8.7.1 发现作弊玩家

# 1. 使用 CoreProtect 检查操作记录
/co lookup u:<玩家名> t:24h r:100

# 2. 使用 Spark 检查该玩家的行为
/spark activity --player <玩家名>

# 3. 临时封禁
/tempban <玩家名> 1d 可疑作弊行为

# 4. 使用反作弊插件的详细日志
/vulcan log <玩家名>

8.7.2 发现漏洞利用

# 1. 立即封禁利用者
/ban <玩家名> 漏洞利用

# 2. 检查损失
/co lookup u:<玩家名> t:1h r:50

# 3. 回滚操作
/co rollback u:<玩家名> t:1h r:50

# 4. 检查服务器日志
grep -i "exploit\|dupe\|hack" /opt/minecraft/paper/logs/latest.log

# 5. 更新插件和 Paper 到最新版本

8.7.3 DDoS 攻击应对

# 1. 启用防火墙限制
sudo ufw limit 25565/tcp

# 2. 使用 fail2ban 限制频繁连接
sudo fail2ban-client set minecraft banip <攻击IP>

# 3. 启用 TCP SYN Cookie
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_syncookies

# 4. 考虑使用 DDoS 防护服务(详见第 10 章)

8.8 反作弊性能影响

插件CPU 开销内存开销说明
Paper 反 Xray仅影响区块生成
Vulcan低-中检查频率可调
GrimAC异步检测
NoCheatPlus老牌插件,轻量
WorldGuard极低区域检查
CoreProtect日志存储占空间

8.9 常见问题

Q1:反作弊误判正常玩家?

# 1. 调整反作弊的严格度
# 2. 给特定玩家添加绕过权限
/lp user <玩家名> permission set vulcan.bypass true

# 3. 检查是否是网络延迟导致
# 高延迟玩家容易被误判

Q2:Xray 仍然有效?

# 1. 确认 Paper 反 Xray 已启用
# paper-world-defaults.yml 中 anticheat.anti-xray.enabled: true

# 2. 尝试 engine-mode: 2(更严格但更耗性能)

# 3. 确认修改后重启了服务器

Q3:如何测试反作弊是否工作?

# 使用测试客户端(如 Horion 在教育版测试环境)
# 或邀请信任的玩家使用已知作弊客户端测试
# 记录检测率和误判率

8.10 本章小结

要点说明
Paper 内置反 Xray最基本的安全防护,必须启用
反作弊插件是核心Vulcan 或 GrimAC 检测大部分作弊
WorldGuard + CoreProtect区域保护和操作日志
登录插件用于盗版服AuthMe 保护玩家账户
权限管理避免 OP使用 LuckPerms 权限组替代

扩展阅读