一种防止非分布式网络级 DoS 攻击的方法?

信息安全 拒绝服务
2021-08-29 04:45:36

我有一台 DigitalOcean Ubuntu 16.04 机器,其中 Bash 作为主 shell,Nginx、PHP-FPM 和 MySQL 作为服务器环境,用于 TLS 的 Certbot 和用于 Web 应用程序的 WordPress。

  • 使用 TLS防止MITM
  • 我从SSH和应用程序保护财行局与SSHGuard和WordFence。
  • 我使用各种策略(如模块的最少使用、简单和统一的表单(如果需要,还有验证码和蜜罐)以及通过WordPress 的 WP-CLI自动升级)来防止后门和数据库注入(如SQL 注入)。unattended-upgrades
  • 如果我没记错的话,WordFence 还可以防止一种或多种类型的应用层 DoS 攻击

目前,我认为我托管的网站没有理由在分布式 DoS中受到攻击(例如,我认为没有其他组织针对的组织)。

然而,我确实害怕一般的DoS尤其是来自单台机器的网络级 DoS

我的问题

监控和击退网络级 DoS 的任何简单(例如,单机)攻击的最佳方法是什么?

我不想使用像 CloudFlare 这样的外部工具,因为他们的政策可能会改变,而且他们可能会突然花钱或改变定价。

理想情况下,我希望安装一个能够“按原样”自动运行的 Linux 实用程序,以监视和击退iptables(或nftables 将来)攻击者,但我的印象是这种工具不适用于当前技术。这篇文章的更新:似乎这样的工具,如果存在的话,无论如何是不够的,因为我需要一个操作系统之外的网络级工具(在我看来,DigitalOcean 或任何类似的托管服务提供商应该提供的工具,而且可以从他们的界面/GUI控制)。

3个回答

DoS 与您提到的其他问题不同。

对于 MiTM,零是唯一可接受的成功攻击次数。零是唯一可接受的成功 SQL 注入次数。零是唯一可接受的暴力破解密码数量 - 为什么还要让自己遭受密码暴力破解,完全禁止密码并将 IP 列入白名单。

使用 DoS ......如果您是支持商业客户的基础设施,那么,当然,瞬时请求丢失会直接花费金钱。这是一个可以关心的指标。

如果服务是尽力而为,则可能存在您可以忽略的“成功” DoS 级别。风险的可接受程度有一个等级。

为了有一些保险,您可以在网络级别应用 per-IP 速率限制,例如https://making.pusher.com/per-ip-rate-limiting-with-iptables/,您可以应用 per-IP rate nginx 中应用程序级别的限制,例如https://www.nginx.com/blog/rate-limiting-nginx/或 Wordpress 的任何速率限制插件。

但是因为它是无定形的,所以将关注点提炼成一个指标,准确地表达关心和不关心你之间的区别。此测量可能只是来自 Web ping 服务的报告,可为您提供可用性分数。

没有理由相信DDoS不会发生,只有DoS会发生。一个攻击者,拥有一个僵尸网络就足够了。或者像 Shodan 这样的搜索引擎将帮助一个愤怒的攻击者破坏远程机器以启动 DDoS。

如果您对此不清楚,请谷歌“使用Memcached服务器的 DDoS”。您可能会在 Github 等网站上阅读几周前发生的大规模 DDoS 攻击。

来到解决方案:

  • 正如已经建议的那样,必须对每个 IP 施加限制。例如,如果您在短时间内执行大量 Google 搜索,Google 将要求解决 ReCaptcha 挑战。

  • 我不确定 Cloudflare DDoS 保护的工作原理。但我经常看到它在 5 秒后重定向到站点。可以通过终止发送任意大量数据的连接来防止 DDoS。[就像 Memcached 服务器的情况一样]。

  • 使用所有可用工具评估您的保护措施。至少使用 OWASP ZAP、w3af 等开源工具,有时非分布式的简单 DoS 脚本hulk.py(例如 Sourceforge 上也有修改版)可能能够破坏综合安全措施。

但是,我认为虽然设置每个 IP 的限制是不可避免的,以避免脚本小子等,但它本身并不能提供足够的保护,因为 IP 地址欺骗不是一个很大的工作,而且 DDoS 的可能性也不容忽视。

首先,user9600383 是对的:DDoS 便宜且易于执行,打折是错误的。

通过网络级攻击,我假设您的意思是第 3 层或更低层的攻击,而不是直接针对您的站点/应用程序的攻击。

如果它来自不饱和网络路径的单个 IP 地址,则可以设置Fail2Ban和速率限制。Fail2Ban 将处理协议滥用(如过多的 SSL 尝试,这会浪费带宽和 CPU),并且速率限制将减少原始 IP 流量。

但是,如果攻击者能够使您的网络连接饱和,您将面临更大的问题。提供可靠服务的唯一方法是让您的网络提供商阻止数据包。

对此没有标准解决方案,您必须与您的网络提供商合作,以确定自动化解决方案是否可行根据我的经验,答案通常是“不”,但也许这些天他们提供了更好的支持。自从我直接与他们合作以来已经有几年了。

对于一个称职的 DoS/DDoS 攻击者来说,大多数网站都是容易攻击的目标。典型的 Web 主机无法在网络级别做出有意义的响应,这为他们提供了一种非常简单且可靠的攻击方法。

CloudFlare 的存在是因为它们可以自动检测攻击并执行单个服务器管理员无法使用的对策。他们的面包和黄油是你根本无法复制的东西。

我建议将 Fail2Ban 和/或速率限制作为您最好的独立解决方案,但它们对于任何半途而废的攻击者都是不够的。