知识卡片

不要过早暴露过滤规则给攻击者

普通读书笔记卡 · 1455.e

内容

发现攻击流量带有某个特征(如固定的User-Agent字符串)后,立刻按这个特征丢弃请求看似见效最快,实际上等于告诉攻击者”这个特征被识别了,换一个就行”——攻击者会反复试探防御规则,直到找到不被拦截的变体。更稳妥的做法是先把带有该特征的所有请求来源枚举完整,用验证码一次性处理,即便攻击者换了表面特征,藏在背后的真实来源(同一僵尸网络)依然会被挡住。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第10章《缓解拒绝服务攻击》10.3.4节有策略的响应(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_087.html`) - 结论依据:原文以User-Agent为"I AM BOT NET"的攻击为例,说明如果简单丢弃带该字符串的请求就等于告诉攻击者换一个更具迷惑性的User-Agent,因此选择枚举所有发送相关特征流量的IP地址并用验证码机制阻断,使攻击者即便更换User-Agent也无法绕过。 - 原始内容:如果我们简单地丢弃带前述字符串的请求流量,那就相当于告诉攻击者要换一个更具迷惑性的User-Agent,如Chrome。因此,我们枚举了所有发送带相关特征流量的IP地址,并用验证码机制阻断了一段时间内的请求……即便改用不同的User-Agent,这种方式也能主动阻断他们使用的僵尸网络。