我研究了几种类型的攻击,这一页就是一个例子。有些攻击对整个系统并没有太大的危害,而大多数攻击类型都可以通过小心谨慎或借助自动化软件来预防。例如,“阻止在 y 秒内连续 x 次登录失败的 IP 地址”可能在基本层面上对暴力密码攻击有效。然而,我无法想出一个针对 DoS 攻击的解决方案。因为: (如果我错了,请纠正我)
攻击者可以从单个端口每秒向服务器发送数百个(或更多?)请求。
假设请求来自同一个 IP 地址,可以添加防火墙规则来阻止该 IP - 甚至可以通过自动安全软件来阻止。但是,如果攻击者不断发送请求,那么防火墙每秒应用数百次“额外”检查是否仍然不成负担?这是否不会消耗通常有限的服务器带宽以及计算资源?此外,防火墙开始丢弃/丢失数据包是否没有计算限制?
攻击者可以修改数据包的头并不断使用新鲜的 IP 地址轰炸服务器。
防火墙封锁这么多 IP 地址,会不会导致合法客户端在一段时间内被封锁?很可能第一个路由服务器会过滤掉来自网络外源 IP 地址的数据包,但是,与攻击者位于同一网络的合法客户端是否也会被封锁?
据我所知,云服务器会分散负载,只需等待 DoS/DDos 攻击过去,而攻击来源网络的管理员会采取行动。但是对于家庭服务器来说,什么是最小信任损失和最小声誉损失的解决方案?
谢谢。
答案1
在互联网上,您无法控制传入流量。
假设您有一个 1Gbps 的互联网管道。
如果你收到超过 1Gbps(使用单个 IP 或与僵尸网络拆分),则你的 ISP 和你之间的管道将会满. 不管您的防火墙是否能够在网络早期边缘丢弃流量。
最好有一个单独的设备(路由器或防火墙)来丢弃数据包,这样它就不会影响你的应用服务器的性能。
是的,网络设备可以处理的 pps(每秒数据包)有限制。因为它会消耗 CPU 来处理数据包(丢弃或接受)。
通常你实际上并不会阻止 IP,而只是丢弃符合模式的数据包。
真正的解决方案是:
- 你的 ISP 阻止了流量。
- 您有足够大的管道来接收流量并将其丢弃。
有趣的读物: https://javapipe.com/blog/iptables-ddos-protection/ https://blog.cloudflare.com/how-to-drop-10-million-packets/