我目前正在研究在 AWS 上托管基础设施时减轻和避免 HTTP 洪水攻击的最佳选择。
这是 cloudflare.com 最近发表的一篇文章讨论了这个问题
根据我的理解,AWS Shield 标准可能不涵盖 Web 应用程序上的 HTTP 洪水攻击之类的内容。对于初创公司来说,使用 AWS Shield Advanced 是一种成本高昂的选择,因为它每年的费用为 36,000 美元,并且需要一年的承诺。使用防火墙和实施速率限制机制是一种选择,但即使通过 AWS Web 应用程序防火墙阻止 IP 地址,仍然会按每个请求产生费用,即使对于来自被阻止 IP 的请求也是如此。
建议在网络级别使用Nginx,可以有效地将已知恶意IP的速率限制为每分钟零请求。以下是 nginx.conf 文件中的示例配置:
# Define a rate limiting zone for the IP address.
limit_req_zone $binary_remote_addr zone=blocked:1m rate=1r/m;
server {
listen 80;
server_name yourdomain.com;
# Rate limit requests from the specified IP address.
location / {
limit_req zone=blocked burst=1 nodelay;
# Add other Nginx configuration directives here.
}
# Block requests from the specific IP address.
location /block-ip {
deny all;
return 403;
}
# Add other server configuration here.
}
}
有人可以确认一下,在发生 HTTP 洪水攻击时,这是否确实能让我的账单在 EC2 实例正常每月费用之外降至零美元?
我正在运行一个具有静态 IP 地址的 EC2 实例,并使用 Express.js 运行 Node.js 应用程序。该应用程序充当反向代理,并针对每个请求使用 Prisma 与无服务器数据库进行通信。可能值得注意的是,Express 应用程序被手动配置为在端口 443 上通过 HTTPS 运行。
此外,我有兴趣了解这种方法相对于使用 AWS Web 应用程序防火墙的权衡。具体来说,我很好奇在使用 Nginx 方法进行攻击时服务器性能会受到怎样的影响。是否会增加延迟或其他性能下降?我正在努力找出未知数!我缺少更好的选择吗?
非常感谢任何建议或见解!预先感谢您的宝贵时间。
您说得对,Shield Advanced 不在所有 AWS 客户的预算之内,但是运行暴露在互联网上的单个实例并不具备 DDoS 弹性。为了获得足够的第 7 层保护,您必须拥有 CloudFront 或 ALB(建议使用后者,因为您对成本敏感)以及关联的 AWS WAF WebACL。如果您的内容可缓存,则通过 VPC 端点从 S3 获取内容。
如果没有带有 WAF 的 ALB(或 CF),Shield Standard 第 3/4 层缓解措施最终将启动,这可能会完成攻击者开始的工作。 ALB/CF规模满足需求。您的 AWS WAF WebACL 应(至少):