如何处理攻击 IP 是比较高效节省资源的

357 天前
 brader
前置:不讨论云防火墙、高防服务器这些话题,我知道有这个东西,单纯想了解技术而已。

假设 HTTP 接口有个自动拉黑超频 IP 机制,判断该 IP 在 IP 黑名单的话,接口就立马返回访问异常,虽然这样不需要继续往下走业务代码流程,立马结束了该次请求,但在实际环境应用中,我发现当攻击访问非常大量的时候,服务器的 CPU 占用其实挺高的。

这时候我就在思考一个问题,其实立马结束一个攻击请求,应该不是一个最高效节省资源的做法?我是否应该保持住这个连接?一直到它超时为止。理由是这样的:假设超时时间是 60 秒,如果我立马响应并结束请求,那这个 IP 在 60 秒内可能可以对我发起几千几万个请求,这是很可怕的,每个请求的进程创建、初始化代码、销毁等等都要消耗 CPU 资源,但是我保持住不响应它,每次可以拖着它 60 秒。

我会有这个想法的灵感是来自于云服务器防火墙,因为我发现我把自己 IP 在云防火墙拉黑后,我访问的表现特征就是等待几十秒后超时,而不是立马响应我拒绝我。

不知道我的设想有没有错误,我设想的这个做法,是否真的会比较节省服务器资源呢,欢迎懂的大佬指点一下。
3061 次点击
所在节点    程序员
50 条回复
fangpeishi
357 天前
想起有个 ssh 蜜罐,也是类似思路,缓慢响应,拖死扫描者。
opengps
357 天前
@4kingRAS 抱歉,看完上下文才知道我理解错了你的回答,你的回答没问题。
Jirajine
357 天前
你搞错了,不是云防火墙给你等待几十秒超时,而是你的客户端发出的握手包一直没有相应等待几十秒超时。
服务器端早就把你的包丢掉了。
lisxour
357 天前
不在服务层拉黑,在上层的防火墙直接 ban 了
brader
357 天前
@Jirajine 嗯,是的,看完上面大佬解释的,已经明白了
hyq
357 天前
如果是找漏洞的网络攻击,直接用 iptables drop 掉,就能达到让客户端超时的目的。
如果是 ddos ,用这种办法就没用了,来源 IP 多,网络流量大,甚至大部分情况都是机房主动断了你的网络,避免影响到机房的其他客户。
这种情况下,要么上高防,要么从架构上适应攻击,快速将入口切换,达到打不死的目的
datocp
357 天前
刚查了 iptables recent 模块有频率控制,平时不怎么用。倒是 recent hacker 设置扫描陷阱,直接配合 ipset drop srcip 用的多。

ddos 属于拒绝服务攻击,曾经在这里发科学就被人打了。那次之后再也无缘 ddos 。
wowpaladin
356 天前
还是 syn cookie 吧,你这边至少不要维护状态(消耗资源);对方是否维护状态,那也不是你能控制的。
ppking
356 天前
用现成的工具就行了,iptables 或者你前面没有反向代理嘛,nginx 应该有 ACL 能力的。而且现在开发这种 ACL 成本很低的,ebpf+xdp 了解一下,性能又好,开发成本又低。
yagamil
355 天前
单台机子攻击你,难道还会一次一个请求吗?多线程一次上万次请求过来,反而是你的服务端维持了一万个请求 60s 不释放,如果对方机子再多一些,能否扛得住?

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

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

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

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

© 2021 V2EX