ゲームサーバー防御DDoS攻撃の練習記録

一緒に書く習慣を身につけましょう!「ナゲッツデイリーニュープラン・4月アップデートチャレンジ」に参加した初日です。クリックしてイベントの詳細をご覧ください

概要:HUAWEI CLOUDでサーバーを借りて、Minecraftの公共サービスを構築しました。サーバーが96日間安定して稼働した後、2022年3月27日に初めてDDOSに攻撃されました。攻撃は11:07に開始され、Huaweiのトラフィックがブロックされてブラックホールにロックされた11:17に終了しました。

異常検出

正午にQQグループを開いたところ、ゲームサーバーにログインできないとの回答が多く、サーバープロセスが崩壊したのではないかとすぐに疑われましたが、QQグループにはまだプレイヤーがいることがわかりました。サーバーで再生します。sshログインの背景ビューですが、sshサービスが停止していることがわかりました。これは非常に奇妙なパフォーマンスです。すぐにHUAWEICLOUDコンソールにログインすると、多数の早期警告レポートと通知が見つかりました。それが私が何が起こったのかを知る方法です。サーバーはDDos攻撃を受け、サービスプロバイダーによってブラックホールにロックされました。24時間後に自然にブロックを解除します。picture.pngその結果、すべての着信および発信トラフィックが禁止されますが、ゲームサービスは引き続き実行されます。そのため、サービス期間中はまだプレーヤーがいますが、他のプレーヤーは参加できません。

再調査

HUAWEI CLOUDが提供するトラフィック分析とソーストレース方法によると、攻撃者のソースIPを見つけました。以前は、DDOSについてある程度の知識があり、通常は多数のブロイラー、クラスター化されたトラフィック攻撃があり、IPは海外にあることがよくあります。ただし、今回のサーバーへの攻撃は明らかに進んでいません。5000Mbpsのトラフィック攻撃は、中国の広東省にある2つのIPからのみ発生します。攻撃方法は単一で、UDPフラッドのみが使用されます。

picture.png

攻撃は単純ですが、それでもサービスがブラックホールにぶつかり、ゲームサービスが短期的に麻痺する原因になります。これは、サーバーの規模を徐々に運用および拡大しながら、セキュリティの問題を過小評価してはならないという教訓を私たちに教えてくれました。ddosなどのネットワーク攻撃を回避する方法は?サーバーのセキュリティを強化する方法は?プロジェクトチームは午後、セキュリティポリシーの伝達と議論、セキュリティのアップグレードを試みるためのツールの学習とテストに費やしました。

安全な武装

この事件を通じて、私たちはサーバーのセキュリティパフォーマンスをアップグレードする機会を得ました。最も簡単な点は、サーバーのポート22がデフォルトで常に公開されているため、sshブルートフォースクラッキングのリスクがあります。セキュリティを強化するために、IPセグメントはセキュリティグループで分割されます。フィルタ処理は、他のポートに対しても実行されます。

ddos処理の場合:

  1. 首先封禁ddos ip,禁止流量再进入。
  2. 使用iptable划分ip白名单,添加协议白名单保护。
  3. 使用iptable的 limit 限制恶意流量进入

iptable配置示例:

# vim /etc/sysconfig/iptables
# 先全部禁用
*filter

:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-N whitelist

#再添加白名单

-A whitelist -s 1.2.3.0/24 -j ACCEPT
-A whitelist -s 4.5.6.7 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j whitelist

#设置端口开放,以下端口不受白名单限制

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j whitelist
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j whitelist

#设置icmp协议不使用白名单,如果需要的话就删掉

-A INPUT -p icmp -j ACCEPT

#其他协议的白名单开放情况

-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

#防止dos流量攻击
-A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

COMMIT

#配置完毕后,运行命令重启防火墙使规则生效
#systemctl restart iptables.service
复制代码

二次攻击

28日11:07,服务器黑洞24小时过后自动解封,自认为已经做好防护的我们如期的开启了服务器,还兴致勃勃的加入了新的插件。万万没想到的是,就在下午3点34分,服务器再次瘫痪,流量无法进出,看到shell的异常连接,不由得倒吸一口冷气。

打开华为云,果然又收到了故障提醒,服务器再次被打进了黑洞,我们的防御手段形同虚设。

经调查溯源,第二次攻击源ip分别来自美国和中国安徽。

反省,我们的防御手段为什么无效?除开购买价格高昂的ddos高防,我们应该如何做防御?

二次布防

由于缺少安全攻防知识,我们自己只会用pentmenu进行压力测试,再结合服务器运营商提供的可视化流量统计查看攻击强度以及防御强度。

picture.png picture.png

测试效果并不理想,根本不能确定防御的有效性。 最后,是在我的催促盘问下,提给华为云的工单有了安全工程师的反馈。 picture.png

picture.png 我们了解到: 对于ddos公网源ip的攻击,无法使用acl 安全组拦截,就算流量走不到服务器,ip还是会被打进黑洞。 同时,我们也了解到cloudflare这个服务提供商,可以免费为站点提供cdn支持,免费提供了防dos的能力。

Cloudflare 如何工作?

Cloudflare 可保护和加速任何线上网站。一旦您的网站加入 Cloudflare,其网络流量就会通过我们的智能全球网络进行路由传输。我们会自动优化您的网页传送,以便您的访问者获得最快的页面加载时间和最佳性能。我们还会阻止威胁并限制滥用机器人和爬网程序浪费您的带宽和服务器资源。

回过头来整理一下我们当前的处境:

  1. 公网源IP已暴露。
  2. 攻击者ip设置了跳板(肉鸡),不能依靠banip来防御。
  3. 服务器安全组和iptable防御策略无效,公网ip一旦被打,依然会进黑洞。

最终得出了如下的布防策略:

picture.png

我认为,整个布防最最重要的一点就是隐藏公网源ip

武装効果

2回目の武装後、ddos攻撃者はプロキシマシンまたはcloudflareのクラスターにのみ攻撃できます。複数のエージェントの状態では、1人が殺されても、ゲームサーバーの通常の動作には影響しません。次の図は、DOS攻撃に正常に抵抗しているエージェントの1つのデータグラフを示しています。picture.png

おすすめ

転載: juejin.im/post/7081518676922335245