问题
最近我们的一台阿里云服务器 (ECS,有公网IP,Nginx 服务器,开放了80,443),遭受到了DDOS攻击,主要攻击的行为是 攻击我们443 端口。发起大量的请求。
但是我们在 Nginx
层面是做了限制的。只允许部分 IP 访问我们的Nginx
(allow ....; deny all;)所以实际是没有访问到我们的服务的接口的。请求未到我们的后端。
疑问点
但是诡异的是,我们的 Nginx
在被攻击之后,先是进入了流量清洗,清洗完了之后,直接进入黑洞了。也就是说我们服务器将接受不了请求。但是查看服务器的 Nginx
日志,我们发现流量还是正常从 WAF
进来的。没有受影响。
我们怀疑问题可能是出在:
- 进入流量黑洞抛弃所有外部流量是针对除了阿里云之外的流量
- 阿里云可能单独对WAF做了策略。
问题原因
名词解释
黑洞
按照阿里云的官方文档的对黑洞的解释是:
当ECS或SLB实例的公网IP遭到大量DDoS攻击,且DDoS攻击的流量超出对应的黑洞阈值后,该公网IP将被黑洞,所有来自外部的流量都将被丢弃,导致相关的业务无法正常访问。您可以在云盾DDoS防护控制台查看账号下资产的黑洞事件信息,例如IP进入黑洞的时间及所遭受的攻击流量。
继续翻查阿里云官方文档,终于发现了蛛丝马迹,
假如您的服务器遭受大流量攻击而进入黑洞,则所有来自外部的流量都会被丢弃,但是阿里云内部与该服务器同地域的云产品仍然能够正常连通该服务器。
因此,在您的服务器进入黑洞后,您可以使用阿里云内部的ECS云服务器连接该服务器。
https://help.aliyun.com/knowledge_detail/63613.html?spm=a2c4g.11186623.6.569.133d50f7uyQ8Cy
也就是虽然进入了流量黑洞,但是这个同地域的阿里云产品还是可以访问到我们的服务的。 (注意是同地域哦。)
查看 WAF 是否有地域之分 ,看到控制台就只有一个 中国内地和海外地区。这个就很尴尬了。
重点:但是我们域名接入WAF 的时候 在添加域名的过程中,我们填入后端的 Nginx IP
时 Waf
会判断我们的 后端是在哪个地域,然后生成的 CNAME 解析地址为 你后端所在地域的 WAF 地址。 所以我们只需要查看下 CNAME 的地址是否和我们的 ECS 的机器在同一个地域,如果在同一个地域就是可以访问的。