假设我使用 Cloudflare 来缓存我的图片、CSS 和 JS 文件。对 HTML 内容本身的请求仍然会到达我的服务器,攻击者可以利用这一点来获得优势。
但是,如果我告诉 Cloudflare 也缓存 HTML,是否可能发生 DoS 攻击?如果 CDN 提供包括 HTML 在内的每项资产,我的服务器就不会受到任何影响。无论攻击者抛出多少负载,它都会由 CDN 处理,不会到达我的服务器,从而使其免受 (D)DoS 攻击。我的理论正确吗?
答案1
浏览您网站的真实访问者只会请求可以缓存的现有对象,只要这些对象没有过期,就会从 CDN 缓存中提供这些对象。
对于此类访问者,您的网络服务器将只会看到 CDN 重新验证或刷新缓存对象的偶然请求。当 CDN 缓存对这些访问者尚未过期时,即使您的实际网络服务器未在线,您的网站也会在线。
攻击者试图通过请求这些有效资源来对您的网站进行 (D)DoS 攻击,也不会取得太大的效果。
但是,恶意用户除了请求实际内容之外,还可以生成随机且唯一的 URI 请求。
这些 URI 不会出现在 CDN 缓存中,因为它们之前从未被请求过。因此,CDN 将需要向您的 Web 服务器发出请求,以加载并开始缓存该 URI 上的实际内容或错误响应。
在达到 CDN 阈值水平且 DDoS 保护启动并开始限制速率或直接丢弃此类随机 URI 请求之前,您仍然可以看到 CDN 转发并到达您的 Web 服务器的请求数量大幅增加。
但这些可能还不足以破坏你的服务器。
答案2
是的,您一般来说是正确的。但是您需要确保不向攻击者暴露您的公共 IP 地址(确保通过 CDN 代理所有 DNS 条目)。此外,如果您的网站向后端服务器发出 HTTP 请求,那么攻击者可能会利用该请求发起 DDoS 攻击。
另一方面,如果您托管的纯粹是静态网站并且不暴露您的公共 IP,那么您应该是安全的。