游戏服务器防攻击怎么设置?四层配置清单

2026-10-30更新于 2026-11-02操作教程约 9 分钟

这个问题搜的人很多,但答案往往很笼统。这篇给一套可以照着做的配置清单。

先明确防护的目标

不是"防住所有攻击"(做不到),而是:

  1. 让攻击者找不到你(隐藏 IP)
  2. 让攻击流量到不了业务层(清洗/限流)
  3. 就算被打穿也能快速恢复(备份/预案)

第一层:网络层配置

1. 关闭不必要的端口

# 查看监听端口
netstat -tlnp
ss -tlnp

# 只保留必要端口:
# 80/443(Web)
# 游戏端口(按需)
# 22(SSH,建议改端口 + 限制 IP)

每多开一个端口,就多一个攻击面。数据库端口(3306/6379/27017)绝对不能对公网开放。

2. 配置防火墙白名单

# 只允许特定 IP 访问 SSH
iptables -A INPUT -p tcp --dport 22 -s 你的办公IP -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

# 数据库只允许内网
iptables -A INPUT -p tcp --dport 3306 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP

3. 接入防护后收敛源站

如果用高防或 CDN,源站防火墙应该只允许防护节点的回源 IP:

# 示例:只允许清洗中心回源
iptables -A INPUT -s 清洗中心IP段 -j ACCEPT
iptables -A INPUT -j DROP

这一步不做,源站 IP 一旦泄露,防护就白上了。

第二层:系统层配置

1. 调整内核参数(抗 SYN Flood)

# /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1

# 生效
sysctl -p

这些参数能提高系统抗 SYN Flood 的能力,但不能替代专业防护。

2. 限制单 IP 连接数

# iptables 限制单 IP 并发连接
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 30 -j DROP

# 限制新建连接速率
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

第三层:应用层配置

1. Nginx 限速(最重要)

# nginx.conf 的 http 块
limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn:10m;

# server 块
server {
    limit_req zone=req burst=20 nodelay;
    limit_conn conn 20;
    limit_req_status 429;
}

2. 登录接口单独加固

location = /api/login {
    limit_req zone=req burst=3 nodelay;
    limit_except POST { deny all; }
    proxy_pass http://127.0.0.1:8080;
}

3. 关键接口加验证码

登录、注册、找回密码这些接口,被 CC 打的概率最高。加个验证码能挡掉大部分自动化攻击。

第四层:业务层配置

1. 会话校验

要求请求携带服务端签发的 token,无效的直接拒绝。这一层能过滤掉大部分伪造请求。

2. 频率限制(按业务)

接口建议限制
登录单 IP 每分钟 5 次
注册单 IP 每小时 3 次
查询类单 IP 每分钟 60 次
支付单账号每分钟 3 次

3. 降级预案

被打的时候,非核心功能要能主动关掉:

  • 关闭排行榜、公告
  • 登录加验证码
  • 限流阈值临时调低

游戏服务器的特殊配置

1. UDP 防护

游戏主要用 UDP,要特别注意:

# 限制单 IP 的 UDP 包速率
iptables -A INPUT -p udp --dport 游戏端口 -m limit --limit 50/second --limit-burst 100 -j ACCEPT
iptables -A INPUT -p udp --dport 游戏端口 -j DROP

但要注意:网吧、学校这类共享出口,多个玩家共用一个 IP,限速会误伤。

2. 协议校验

只允许符合游戏协议格式的包通过,能挡掉大部分垃圾包。

3. 隐藏源站

游戏最大的风险是源站 IP 暴露(客户端里能抓出来)。所以:

  • 客户端配置里不能有源站 IP
  • 走节点接入,节点再回源

一份可执行的检查清单

  1. ☑ 关闭所有非必要端口
  2. ☑ 数据库只允许内网访问
  3. ☑ SSH 改端口 + IP 白名单
  4. ☑ 接入防护后收敛源站防火墙
  5. ☑ 调整内核参数(syncookies 等)
  6. ☑ Nginx 全站限速
  7. ☑ 登录接口单独限速 + 验证码
  8. ☑ 业务层会话校验
  9. ☑ 每日备份 + 每月验证恢复
  10. ☑ 监控告警(流量、CPU、连接数)

这些配置能挡住什么

攻击类型能挡住吗
端口扫描✅ 能(端口收敛)
暴力破解✅ 能(频率限制 + 白名单)
小规模 CC✅ 能(Nginx 限速)
分布式 CC❌ 不能
DDoS 流量攻击❌ 不能(需要带宽层防护)

服务器本地的配置只能解决"应用层"和"系统层"的问题。真正的 DDoS 防护必须在带宽层做,本地做不了。

如果已经被持续攻击,建议看 游戏盾和高防 IP 到底选哪个。

想先验证线路质量?不限时长的免费调试实例,规格与个人版一致,不自动转正、不产生费用。
领取调试实例