如何防止对Amazon EC2的DDOS攻击?


46

我使用的其中一台服务器托管在Amazon EC2云上。我们似乎每隔几个月就会对此服务器发出DDOS攻击。这会极大地降低服务器的速度。大约30分钟后,有时又重新启动,一切恢复正常。

Amazon具有安全组和防火墙,但是在EC2服务器上我还应该设置什么以减轻或防止攻击?

从类似的问题中我学到了:

  • 通过IP表(或UFW?)来限制来自特定IP地址的请求/分钟(或秒)的速率
  • 有足够的资源可以承受这样的攻击-或-
  • 可能会构建Web应用程序,使其具有弹性/具有弹性负载平衡器,并可以快速扩展以满足如此高的需求)
  • 如果使用mySql,请设置mySql连接,以便它们按顺序运行,以便慢速查询不会导致系统崩溃

我还想念什么?我希望获得有关特定工具和配置选项(再次在此处使用Linux)和/或特定于Amazon EC2的任何信息。

ps:关于DDOS监视的说明也将受到欢迎-也许是与nagios一起使用?;)


防止它几乎是不可能的,但是您当然可以减少漏洞。
Belmin Fernandez 2011年

1
非常真实 我对讨论降低脆弱性的答案感到满意:)
cwd

为了知道如何预防,需要更多地了解攻击的性质。是顺水吗?是否有一个被点击的昂贵的网页?还有其他服务吗?

我认为这是一个网页,但不确定。我也欢迎监视和调查这些技巧。一些访问日志已被删除-我还要寻找什么?
cwd

实际上,如果重新启动可以解决问题,那么我不知道可能是什么,除非您的服务器在某处存在资源泄漏。重新启动肯定不能自行停止DDoS。您怎么知道这完全是DDoS?

Answers:


36

本质上,DDOS(甚至是DOS)是一种资源耗尽。您将永远无法消除瓶颈,因为您只能将瓶颈推得更远。

在AWS上,您很幸运,因为网络组件非常强大-得知上游链接已饱和将非常令人惊讶。但是,CPU以及磁盘I / O都更容易泛滥。

最好的措施是通过启动一些监视(如SAR等本地监视,使用Nagios和/或ScoutApp进行远程监视)和一些远程日志记录工具(Syslog-ng)。通过这种设置,您将能够确定哪些资源已饱和(由于Syn Flood导致网络套接字;由于错误的SQL查询或爬网程序导致的CPU;由于…造成的ram)。不要忘记在EBS卷上拥有日志分区(如果您没有启用远程日志记录)(以后再研究日志)。

如果攻击通过网页进行,则访问日志(或等效日志)可能非常有用。



24

您还可以通过将EC2实例放在Elastic Load Balancer后面并仅接受来自ELB实例的流量来进一步隔离它们。这使亚马逊有更多的责任来管理DDOS攻击。

我认为您仍将向所有人开放SSH,因此,除非您可以将该端口锁定为某些静态IP,否则很可能仍会看到一些恶意流量。您可以将SSHd端口更改为更晦涩的端口(例如22以外的端口),以进一步减少DDOS的攻击(大多数bot仅检查已知端口)。

我还要提到fail2ban,它可以监视日志并临时修改您的ip表以阻止特定的IP(例如,如果有6次尝试从单个IP地址SSH进入主机的失败尝试,则可以将该IP阻止30次)分钟左右)。请记住,(如约旦一样,fail2ban)可能不适用于阻止代理流量(例如,来自ELB的流量),因为它会阻止代理的IP,而不一定是原始的远程IP。

我没有使用过它,但是Apache mod_evasive也许也值得研究。但是,在基于IP的阻止方面,它可能具有与fail2ban相同的弱点。


+1谢谢。实际上我确实关闭了ssh;)
cwd

1
请注意,如果您位于ELB的后面,fail2ban将不起作用-因为它通常通过阻止iptables中的IP来起作用。但是IP永远是您ELB的IP。我意识到在尝试将fail2ban添加到我的设置中之后。如果用户仅通过ELB访问,则无法使用。
Jordan Reiter

5

如果您使用的是Apache,建议您使用mod_security。大多数供应商都打包了核心规则集,它们的工作非常出色。

另一个强化步骤是在Web服务器级别限制请求。Nginx。,Apache可以限制和限制传入的请求。


很棒-那些看起来很棒的选择,谢谢!
cwd 2012年


2

当我在内容交付网络中担任安全售前工程师时,我有偏见。

但是,在内容交付网络上利用Ddos缓解解决方案可确保您永远不会耗尽原始资源。这类似于将F5负载平衡器放在您的站点前面,但是扩展到了全球数千个位置。

优质的CDN可以让您使用安装在AWS防火墙上的白名单来掩盖来源。因此,当攻击者在亚马逊上进行侦察时,您的IP地址将变为空白,因为所有内容都将被阻止。

因此,当流量到达与攻击者尽可能近的节点时,Ddos攻击将被阻止。这样可以确保在远离您要保护的资产的地方减轻Ddos攻击。

一个好的CDN还可以执行健康检查并将故障转移到其他位置,例如,在屁股,Azure,机架空间,软层,物理DC等上的另一个自我。它还应该具有WAF以确保您可以阻止应用程序层耗尽攻击,例如RUDY,slowpost,slowloris以及sqli,xss,rfi,lfi等。

默认情况下,cdn还会阻止网络层攻击,例如泪滴,icmp攻击,合成洪水等。cdn能够缓解Ddos攻击,因为trey具有大量的能力来接受请求,过滤掉不良流量并传递良好流量。因此,可以阻止ntp,DNS,ssdp,chargen和snmp体积攻击等放大攻击。

我迄今为止看到的最大攻击是2014年7月的321gbps。在此攻击期间,还发生了20gbps的DNS协议攻击。因此,您将需要确保DNS基础结构也具有弹性以承受大量请求。

根据您提供的描述,您似乎遭受了精疲力尽的攻击,攻击者在其中打开了很多线程,使得所有线程都在Web服务器,应用程序服务器或防火墙上消耗了。这类似于诸如慢速发布,lowloris或RUDY之类的东西。

为了阻止应用程序层耗尽攻击,您将需要获得Web应用程序防火墙(WAF)。典型的网络防火墙(包括亚马逊防火墙和下一代防火墙)将无法阻止它。这些天发送的工作防火墙只能阻止目前所有攻击的大约30%(2014年11月)。



0

配置服务器防火墙是EC2中基于软件的VM中DDoS缓解最佳的解决方案。如果结合使用syslog功能,则可以防止负载平衡的环境。

http://configserver.com/cp/csf.html


欢迎来到服务器故障!尽管从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
Scott Pack
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.