我有一个网络应用程序,如果它在短时间内发出许多请求,我想通过阻止 IP 地址来防止 DOS 攻击。
例如,如果同一个 IP 地址在一秒钟内发出 100 个请求,我可以假设这是某种攻击,我想阻止这个 IP。
但是,在应用层进行这项检查似乎太昂贵了——进行这项检查的最佳方法是什么?
我应该在我的:
- 防火墙
- 路由器
- 阿帕奇配置
- 完全在别的地方……
我有一个网络应用程序,如果它在短时间内发出许多请求,我想通过阻止 IP 地址来防止 DOS 攻击。
例如,如果同一个 IP 地址在一秒钟内发出 100 个请求,我可以假设这是某种攻击,我想阻止这个 IP。
但是,在应用层进行这项检查似乎太昂贵了——进行这项检查的最佳方法是什么?
我应该在我的:
如果您想在 IP 地址发出一定数量的请求时阻止它们,最好在网络层完成。这建议您在主机的网络堆栈中或使用路由器(在网络层运行)执行此操作。
您可能需要考虑的一些事情是: - 您真的想要基于 IP 地址阻止对整个主机的访问,还是想要阻止对在特定端口上运行的特定应用程序的访问。- 有时,通过使用 NAT,一个 IP 地址可能会代表许多真实主机发出请求。
对于任何安全应用程序,您都需要有多层防御,因此投资一个好的防火墙也是一个好主意。
一些用于在 django 中生成 API 的应用程序实现了一些限制每秒请求量的方法。例如 django-piston 使用节流方法来做到这一点。 django-活塞节流
这是解决问题的简单方法。