求助,一个 SaaS 服务被来自福建的疑似僵尸网络 DDOS...Nginx 怎么挡?

2020-11-11 16:51:24 +08:00
 saytesnake

有约百来个用户的 SaaS 服务,给到用户使用的时候都会分配一个二级域名,如

client-a.v3ex.comclient-b.v3ex.comclient-c.v3ex.com

这样,

今天 Nginx 流量都爆了,一看有来自福建不同地区的好几十个 IP 不断刷一个 uri,导致整个服务都拖慢了。

http://client-a.v3ex.com/dept/schedule.htm?date=2020-11-12&deptId=42756

Nginx 里面可能当时为了图方便,直接就配置了泛域名

server_name *.v3ex.com;

没区分出来。

目前暂时

if ($http_host = 'client-a.v3ex.com') { return 403; } 

抵挡了一下。

limit_req_zone 跟 limit_conn_zone 都无法使用在 if 里面,对于这种情况应该怎么处理好一点?

3048 次点击
所在节点    NGINX
23 条回复
dzdh
2020-11-11 16:54:19 +08:00
为啥要区分 zone 不应该是全局针对 ip 限流吗
dzdh
2020-11-11 16:54:52 +08:00
而且为啥不上 cdn 哇
saytesnake
2020-11-11 16:56:07 +08:00
@dzdh 历史问题,这个系统是相对比较古老的,Nginx 也是,因为没经过测试,不知道开了全局限流会导致什么情况。
lvzhiqiang
2020-11-11 16:56:41 +08:00
sysctl -w net.ipv4.tcp_syncookies=1
emeab
2020-11-11 16:56:52 +08:00
黑名单 ip
lvzhiqiang
2020-11-11 16:58:15 +08:00
ddos 只能缓解,不能解决。 还有 如果对方 IP 都是随机变化,基本没辙。(注意: 大公司大体量业务的会有专业的设备做浏览清洗和拦截防护)
xx6412223
2020-11-11 16:59:14 +08:00
试试 Iptables limits Connections by per IP
lvzhiqiang
2020-11-11 16:59:51 +08:00
@lvzhiqiang 针对 syn flood 攻击, 你先抓包看看,属不属于这类型的。
winzkh
2020-11-11 17:01:35 +08:00
shutdown -h now
saytesnake
2020-11-11 17:01:48 +08:00
@lvzhiqiang 已经配置了。

@emeab 目测是僵尸网络,ip 一大堆...好像每次都不同,随机查了十来个,都是福建省的。

@lvzhiqiang 呃,还真是没办法了看起来。
GM
2020-11-11 17:08:01 +08:00
加一条 A 记录 client-a.xxx.com 127.0.0.1
有 A 记录的情况下会优先起作用,这样也许会有用。
privil
2020-11-11 17:30:13 +08:00
前面加个 wtf 过滤 高流量 ip
xieqiqiang00
2020-11-11 17:36:49 +08:00
11 楼的方案可以
但要是我的话,我可能去 cloudflare 注册一下这个网站,然后单独这个子域名指向 cloudflare,然后开页面缓存,这样对方还是能一直 GET 通,就算是 POST 的话,两次过墙也够呛的,而且 cloudflare 本身就有反功能的能力。
DoctorCat
2020-11-11 21:05:59 +08:00
@xieqiqiang00 cloudflare 最大的问题是国内不友好容易被 gfw 认证。
RangerWolf
2020-11-11 21:58:45 +08:00
心疼楼主 3 秒钟。。。
想问下 client-a.v3ex.com 是一个合法用户的域名吗? 你设置 403 之后是不是这个客户就完全歇菜了?
xuanbg
2020-11-11 22:02:11 +08:00
受到攻击不管三七二十一有用没用先报警。
saytesnake
2020-11-11 22:35:49 +08:00
@xieqiqiang00 实际上是给自己加上墙了的感觉了...
@DoctorCat 是的。
@RangerWolf 那个只是举例,实际是正确合法的域名,一级域名是在阿里云上买的,403 之后就是这个客户完全无法使用了,现在临时解决了。
DoctorCat
2020-11-11 23:04:42 +08:00
@saytesnake 问一个细节,这些攻击 ip 访问到 nginx,都是 200 状态?
RangerWolf
2020-11-11 23:18:46 +08:00
@saytesnake 我感觉我没表达清楚,让你误解了。。。
其实我想问的就是,被攻击的域名是真实客户的域名吗?是某个客户的域名还是很多客户的域名?
另外, 感觉域名后面的这一段有没有权限逻辑校验?

不好意思问了这么多问题,因为我们也正好要开放一个 SaaS 服务给客户,就怕见光死。。。
RangerWolf
2020-11-11 23:21:51 +08:00
另外,我们目前隐藏了真实 IP 在类似 AWS LB 后面~ 不知道这个会不会有效?
不知道你们是直接 IP 暴露出去还是隐藏了真实 IP ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/724101

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX