正确的方式来处理预算对Web服务器的安全威胁

在我们的年度安全审查中,我想起了今年早些时候发生的一个事件,那就是我们的组织Web服务器受到了威胁。 这是一个组织的政策,并威胁到DDoS我们的网站。 幸运的是,这并没有什么不好,事实certificate这是一个空洞的威胁。 但是,我们仍然立即通知了CIO,CSO,首席执行官和我们的托pipe服务提供商,他们为我们的答复鼓掌。 由于我们组织(教育)的性质,先发制人的响应涉及许多人,包括与当地执法机构的协调。

尽pipe我们的回应足以应付一个空洞的威胁,但这让我意识到,如何规划networking应用程序的攻击已经发生了。 现在的设置是:

  • 不在企业防火墙之后的Linode VPS(背后有一个很长的故事,不值得解释)
  • 一个只允许本地连接的同一台服务器上的PostgreSQL数据库
  • 一个Nginx服务器,我们目前正在遵循最佳实践来保证[ 1 ]
  • 我们正在迁移到证书authentication的SSH访问
  • 备份VPS,具有所有最新的服务器设置,只需要最新版本的代码推送和数据库设置迁移(现在用作testing服务器,但也设想为georedundancy选项)

我想我的问题可能可以归结为我应该采取什么其他步骤来locking我的服务器,以及防止DDoS? 我们很乐意使用Cloudflare业务,提供DDoS防护,但我们并不总是需要它,每个月200美元对于组织来说有点陡峭。 我甚至需要这个吗? 是否有解决scheme,允许临时DDoS保护? 如果不是,在攻击期间/之后维持稳定的最好方法是什么? 最后,应该执行什么样的日志logging,以便在发生攻击时协助执法工作?

我应该采取哪些其他措施来locking我的服务器以及防止DDoS?

  1. 防火墙closures任何未使用的端口和协议。 在适用和可能的情况下,只限于信任的IP。
  2. 及时应用所有安全补丁和更新
  3. 实施一个networking监视器,可以警报可疑的活动爆发

一个月200美元对于这个组织来说有点陡峭。 我甚至需要这个吗?

没有,直到它增加了价值,成为必须的。

是否有解决scheme,允许临时DDoS保护?

是。 在整理实施DDoS服务的复杂性时,可能需要大量的前期投入。 http://www.blacklotus.net/protect/emergency-ddos-protection是一个这样的按需服务。

如果不是,在攻击期间/之后维持稳定的最好方法是什么?

就坐在那里拿走吧 这就是DDoS的本质。 你可以尝试和IP防火墙,但如果这个攻击是真正的分布式…好,就像用水枪打一场野火。

最后,应该执行什么样的日志logging,以便在发生攻击时协助执法工作?

维护传入源IP和时间戳的日志以及任何其他相关的取证数据。 例如,如果它是一个Web服务器,请尝试并logging用户代理请求的资源。 stream量速率,如每秒的数据包数和每秒请求数是有帮助的。

DDoS归结为math分析。 如果有人试图敲诈你,他们打赌他们可以破坏你的业务足以迫使你支付保护费,以防止它。 规模是一个因素,取下较小的运营商更容易,但他们能够支付更less。 如果您收到电子邮件威胁 – 最好的行动方式是忽略它。 发起和维持DDoS攻击需要花费大量的僵尸networking资源 – 它们不能直接将垃圾邮件发送给每个人。 有可能他们只是在做一个大规模的钓鱼攻击,寻找轻松的目标来恐吓。 由于DDoS野兽的性质,受害者是相当无奈的,除非他们能够部署一个复杂的包过滤预防scheme或预算外承包服务。

inetplumber的答案是伟大的。

我想补充说的另一个select是configuration您的应用程序的规模,以便您可以处理较大的攻击,而不会影响您的用户。 您可以在Amazon AWS上设置虚拟私有云(VPC),例如,您的PostgreSQL服务器只能从VPC内部访问。 您可以设置一个负载均衡器前端来分配多个服务器之间的负载。

这样做的好处是,您可以快速扩展到100台(或更多)服务器,而无需前期投资,而且很快(如果您已经configuration),使您成为一个更困难的目标。 您只需要在实际受到攻击的几个小时内为这些服务器付费。 当你没有受到攻击时,你只需要为你的一台Web服务器和一台数据库服务器付费。

最困难的部分将被设置,它肯定比你当前的configuration更复杂。 设置迅速扩大需要更多的工作。 但是,如果你正在寻找一些你可以做的计划(尤其是如果由于其他问题,你认为你可能成为未来的目标),那就是了。

我应该采取哪些其他措施来locking我的服务器以及防止DDoS?

  1. 如果您的web应用程序不是交互式的,只显示内容:使用nginx +代理caching与短caching时间(1-5分钟通常是好的)。 这会提高性能,迫使攻击者分配更多的资源

  2. 通过设置INPUT / OUTPUT / FORWARD-Policy到DROP来设置一个临时防火墙来过滤不需要的IN和OUT ; 一定要logging每个传出的连接a-trypt(UPD端口53除外:)

  3. 如果你不能限制SSH到一个静态的pipe理IP,使用一个替代高端口像22222,这将阻止大量的“你好mcfyl – 有人在那里” – 门环

  4. 此外,使用fail2ban / denyhosts来保护ssh免受暴力攻击

  5. 如果你有pipe理资源:使用OSSEC和一个轻量级的WAF(nginx有naxsi,轻量级,而不是像mod_security这样的PITA),但是你需要有人来设置和维护这样的安装

  6. 实施备份并将备用服务器用作备份目标

  7. 保持你的webapp-code是最新的; 如果您使用开源项目,请注册他们的安全邮件列表。

  8. 尽量避免已知有很多漏洞的软件

  9. 如果您使用admin-login和/或managament-webapps:为这些login名+ ssl(自签名证书确定)build立basic-auth。

  10. 使用ssh-tunneling whevener可以代替打开端口,例如用于开发

如果没有,在攻击期间/之后维持稳定的最好方法是什么?

  1. 保持冷静
  2. 有一个有经验的人在这种情况下
  3. 准备好一些应急计划

你已经做了最重要的事情:在事情发生之前想想它(以及可能的对策)。