게임서버 방어 DDoS 공격 실습실적

함께 쓰는 습관을 들이세요! 오늘은 "Nuggets Daily New Plan · 4월 업데이트 챌린지"에 참가한 첫 날입니다. 클릭하시면 이벤트 내용을 보실 수 있습니다 .

요약: 마인크래프트 공공서비스 구축을 위해 HUAWEI CLOUD에서 서버를 임대했는데, 96일 동안 안정적으로 서버를 돌다가 2022년 3월 27일 처음으로 DDOS 공격을 받았습니다. 공격은 11시 7분에 시작해 화웨이의 트래픽이 차단되고 블랙홀에 갇힌 11시 17분에 끝났다.

이상 감지

정오에 QQ 그룹을 열었고 많은 플레이어가 게임 서버에 로그인 할 수 없다는 응답을 발견하고 즉시 서버 프로세스가 붕괴 된 것을 의심했지만 QQ 그룹에는 여전히 플레이어가 있음을 발견했습니다. 서버에서 재생. ssh 로그인 배경 보기에서 ssh 서비스가 중지되었음을 발견했습니다. 이것은 매우 이상한 성능입니다.나는 즉시 HUAWEI CLOUD 콘솔에 로그인했고 많은 조기 경고 보고서와 알림을 발견했습니다. 그렇게 해서 무슨 일이 일어났는지 압니다. 서버는 DDos 공격을 받았고 서비스 공급자에 의해 블랙홀에 잠겼습니다. 24시간 후에 자연스럽게 차단을 해제합니다. 사진.png이에 따라 모든 들어오고 나가는 트래픽이 차단되지만 게임 서비스는 계속 실행되기 때문에 서비스 기간 동안 플레이어는 남아 있지만 다른 사람은 들어갈 수 없습니다.

재수사

HUAWEI CLOUD에서 제공하는 트래픽 분석 및 소스 추적 방법에 따르면 공격자의 소스 IP를 찾았습니다.저는 이전에 DDOS에 대해 어느 정도 알고 있었는데, 일반적으로 많은 수의 브로일러, 클러스터링된 트래픽 공격, IP가 해외에 있는 경우가 많습니다. 그러나 이번에는 우리 서버에 대한 공격이 확실히 진전되지 않았습니다.5000Mbps 트래픽 공격은 중국 광동에 위치한 두 개의 IP에서만 발생합니다.공격 방법은 단일이고 UDP 플러드만 사용됩니다.

사진.png

공격은 단순하지만 여전히 우리 서비스를 블랙홀로 몰아넣고 게임 서비스를 단기적으로 마비시킨다. 이를 통해 점차적으로 서버를 운영하고 확장하면서 보안 문제를 과소평가해서는 안 된다는 교훈을 얻었습니다. ddos와 같은 네트워크 공격을 피하는 방법은 무엇입니까? 서버의 보안을 강화하는 방법은 무엇입니까? 프로젝트 팀은 오후에 보안 정책에 대해 소통하고 토론하며 보안 업그레이드를 위한 몇 가지 도구를 배우고 테스트했습니다.

안전한 무장

이번 사건을 계기로 서버의 보안 성능을 업그레이드 할 수 있는 기회를 얻었습니다. 가장 간단한 점은 서버의 포트 22가 기본적으로 항상 노출되어 있어 ssh brute force cracking의 위험이 있다는 점입니다.보안을 강화하기 위해 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进行压力测试,再结合服务器运营商提供的可视化流量统计查看攻击强度以及防御强度。

사진.png 사진.png

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

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

Cloudflare 如何工作?

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

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

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

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

사진.png

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

무장 효과

두 번째 무장 후 ddos ​​공격자는 프록시 머신이나 Cloudflare의 클러스터만 공격할 수 있습니다. 다수의 에이전트 조건에서 한명이 사망하더라도 게임 서버의 정상적인 운영에는 영향을 미치지 않습니다. 다음 그림은 DOS 공격에 성공적으로 저항한 에이전트 중 하나의 데이터 그래프를 보여줍니다.사진.png

추천

출처juejin.im/post/7081518676922335245