我使用的其中一台服务器托pipe在Amazon EC2云上。 每隔几个月我们就会对这台服务器发起DDOS攻击。 这令人难以置信地降低了服务器的速度。 大约30分钟后,有时在重启后,一切恢复正常。
亚马逊有安全组和防火墙,但是我还应该在EC2服务器上采取哪些措施来减轻或防止攻击?
从我学到的类似问题:
我还有什么遗漏? 我喜欢关于特定工具和configuration选项的信息(在这里再次使用Linux)和/或特定于Amazon EC2的任何内容。
ps:有关DDOS监控的注意事项也会受到欢迎 – 也许与nagios? ;)
DDOS(甚至是DOS)本质上是一种资源枯竭。 你永远无法消除瓶颈,因为你只能把它们推得更远。
在AWS上,你很幸运,因为networking组件非常强大 – 知道上游链路已经饱和,这将是非常令人惊讶的。 但是,CPU以及磁盘I / O更容易泛滥。
最好的做法是启动一些监控(本地如SAR,远程Nagios和/或ScoutApp)和一些远程日志logging工具(Syslog-ng)。 通过这种设置,您将能够确定哪些资源已饱和(由于Syn flood造成的networking套接字;由于错误的SQL查询或爬网程序造成的CPU;因…而导致的ram)。 不要忘记在EBS卷上有日志分区(如果没有启用远程日志loggingfunction)(稍后研究日志)。
如果攻击是通过网页进行的,访问日志(或等价物)可能非常有用。
您还可以通过将EC2实例放在Elastic Load Balancer后面并仅接受来自ELB实例的stream量来进一步隔离您的EC2实例。 这使得亚马逊有更多的责任来pipe理DDOS攻击。
我认为你仍然可以对所有人开放SSH,所以很可能你仍然会看到一些stream氓stream量进入,除非你可以将这个端口locking到一些静态的IP地址。 您可以将SSHd端口更改为更晦涩的(即22以外的内容)以进一步减lessDDOS命中(大多数机器人只检查已知端口)。
我还会提到fail2ban,它可以监视日志并临时修改你的ip表来阻止特定的IP(例如,如果从一个IP地址到你的主机有6次失败的尝试,它可以阻止该IP为30分钟左右)。 请记住,(正如乔丹精明地评论的),fail2ban可能不适合阻止代理stream量(例如来自ELB的stream量),因为它会阻塞代理的IP,而不是原始的远程IP。
我没有用过,但是Apache mod_evasive也可能值得调查; 然而,当涉及基于IP的阻塞时,它可能与fail2ban具有相同的缺陷。
如果你使用Apache,我build议使用mod_security 。 由大多数供应商打包,核心规则集是非常出色的工作。
另一个强化步骤是限制Web服务器级别的请求。 Nginx的 Apache可以限制传入的请求。
我使用的解决scheme阻止实时不良活动IP出来的AWS和其他人是这样的…在我的CSF防火墙configurationLFD阻止列表我使用的列表在这里find – http://myip.ms/browse/blacklist/ Blacklist_IP_Blacklist_IP_Addresses_Live_Database_Real时间
下载CSF防火墙黑名单» http://myip.ms/files/blacklist/csf/latest_blacklist.txt
没有更令人讨厌的AWSstream量。
我有偏见,因为我是作为安全预售工程师工作的内容交付networking。
但是,在内容交付networking上利用Ddos缓解解决scheme可以确保您始终不会耗尽资源。 这与将F5负载平衡器放置在您的站点前相似,但传播到世界各地的数千个位置。
一个好的cdn将允许你用一个你在aws防火墙上安装的白名单隐藏起源。 所以当攻击者在亚马逊进行侦察时,你的IP地址将会空出来,因为一切都会被阻塞。
所以当stream量碰到一个尽可能靠近攻击者的节点时,Ddos攻击就会被阻塞。 这可以确保您远离您尝试保护的资产减轻Ddos攻击。
一个好的cdn也可以执行健康检查和故障转移到其他位置的stream量,例如在ass,Azure,机架空间,软层,物理直stream等的另一个自我。它也应该有一个WAF,以确保你可以阻止应用层的耗尽攻击RUDY,slowpost,slowloris以及sqli,xss,rfi,lfi等
默认情况下,cdn也会阻止像teardrop,icmp攻击,synfloods等networking层攻击.cdn可以缓解Ddos攻击,因为trey有大量的容量来接受请求,过滤掉不好的stream量并传递好的stream量。 所以放大像ntp,DNS,ssdp,chargen和snmp容量攻击的攻击可以被阻止。
我迄今为止所见到的最大的攻击事件在2014年7月已经达到321gbps。在这次攻击中,还有20gbps的DNS协议攻击。 所以你需要确保你的DNS基础设施也能够承受大量的请求。
从你提供的描述来看,你看起来像是受到了穷尽攻击,攻击者在这里开辟了很multithreading,所有的线程都被Web服务器,应用服务器或者防火墙消耗掉了。 这类似于像slowpost,slowloris或RUDY的东西。
要阻止应用程序层耗尽攻击,您需要获得Web应用程序防火墙(WAF)。 典型的networking防火墙(包括amazons防火墙和下一代防火墙)将无法阻止它。 目前发送的工作防火墙只能阻止这些日子(2014年11月)所有攻击的30%。
以下是我为那些希望在aws,apache和ACL上使用Fail2Ban的工具: https : //github.com/anthonymartin/aws-acl-fail2ban
这对于检测和防止DoS攻击和ec2实例的滥用很有用。
configuration服务器防火墙是EC2中基于软件的虚拟机的减轻DDoS攻击的最佳select。 如果结合系统日志function,它可以防止负载平衡的环境。