DoS 攻击的大多数解决方案都不是在应用程序级别。如果我使用代理服务器,在应用程序级别有哪些可能的 DoS 对策?
软件应用程序如何防御 DoS 或 DDoS?
信息安全
应用安全
Web应用程序
攻击预防
ddos
2021-09-05 22:01:32
2个回答
首先,区分 DoS(代表拒绝服务)和 DDoS(分布式拒绝服务)很重要。在大多数情况下,DoS 是由软件漏洞引起的,因此修补和更新是一种预防攻击的措施。针对不易受攻击的服务的 DoS 不是分布式攻击,它们是无效的,并且今天没有使用。如果要谈论 DDoS,我想这是你问题的重点,那么事情就有点复杂了。IPTABLES 在巨大 PPS 的情况下通常没有太大帮助 - 攻击来自不同的位置,例如僵尸机器。您只是禁止用户,但会一次又一次地出现新用户。我可以建议:
- 配置服务器软件,使其以更轻量级的方式处理连接 - 拒绝长而重的请求(例如 Apache 中的 MaxKeepAliveRequests);
- 配置您的操作系统 - IP 堆栈调整(例如 FreeBSD 中的 sysctl);
- 关闭未使用的端口,移除未使用的服务;
- mod_evasive - Apache 模块抵御攻击;
- 设置一个轻量级服务器作为前端 - 例如 Nginx。
这是一个很长的话题,我建议不要停留在这些建议中,而是在谷歌上搜索更准确的信息。
暂时忽略有关 DDoS 的部分,因为这主要应该在网络或服务器基础架构处停止(我在其中包括 IIS/Apache/另一个网络服务器)...
我认为理解 DoS(在应用层,而不是分布式)仍然可以进一步被视为几种不同类型的攻击也很重要,从损害来看:
- 永久 DoS - 一旦攻击被安装,它不会停止,直到手动(管理员)干预,例如服务器/应用程序重启、重置配置、删除数据等。
- 临时 DoS - 在攻击期间持续或在攻击后不久结束。
- 泛滥 - 简单地用大量请求淹没服务器,服务器必须按顺序处理,阻止合法用户访问系统。(大多数 DDoS 都属于这一类)。
每个类别都有不同的攻击策略,当然还有不同的解决方案来防止。但是,有一些可能导致 DoS 的编码缺陷,但这与完整列表相去甚远:
- (某些类型的)缓冲区溢出
- SQL 注入 - 可以
DROP TABLE
- 用户控制数据的循环 - 可以“无限”
- 不关闭数据库连接和文件句柄,用户可以强制打开更多这些
- XML Bomb - 使用 DTD 实体,攻击者可以轻松地在多处理器系统上耗尽多个 Gigs 内存和 100% CPU(另请参阅http://msdn.microsoft.com/en-us/magazine/ee335713.aspx和https: //stackoverflow.com/questions/1906927/xml-vulnerabilities )
- 用户帐户锁定 - 建议登录机制实施锁定机制 - 即在 5 个错误密码后锁定用户。如果这是“永久”锁定,并且我可以发现所有用户名(或其中的很大一部分),我可以遍历所有用户名并故意输入错误密码 5 次,从而有效地将用户锁定......我可以对管理员也这样做,因此他甚至无法登录以解锁其他用户。
- 小请求,需要非常大的响应,或者处理时间长,不检查用户是否还在等待。
- 单个请求,启动多个进程,例如一次发送多封电子邮件。
- 将大文件上传到具有小磁盘/小型数据库/邮件服务器/有限文件夹配额/等的服务器。
- “业务”DoS - 例如发送许多支持请求,需要人工筛选
是的,正如您所知道的,有许多不同的模式和缺陷可能导致 DoS 或允许泛滥。这不是一类攻击,而是一类伤害。
防范所有这些需要解决每一个问题并实施适当的控制,然后执行威胁建模以查看是否有其他相关威胁会影响您的可用性。
您可以考虑的一个一般建议是实施“看门狗”服务,具体取决于您的系统,而不是所有这些攻击的灵丹妙药(但仍然有用)。此服务可以监控应用程序,在必要时重新启动它,在需要时通知管理员等。虽然不推荐用于任何旧的网络应用程序......
其它你可能感兴趣的问题