该网站很简单低价拍卖地点。
该网站的运行平台为:
- MySQL
- PHP
在任何特定时间:
- 一场拍卖会可以有 100 - 2000 个并发用户。
- 每个用户都有一个单独的“长投票”在后台运行,以保持其显示内容更新
- 用户可以打开多个窗口,从而将“长轮询”请求的数量增加到他们打开的窗口数量
可以肯定地说,用户应该:
- 窗户打开的次数不要超过 3 到 5 次
- 永远不要过于频繁地请求页面、图像或基本上不做任何获取请求
- 每个窗口每秒调用长轮询更新函数不要超过一次(最多,但由于逻辑原因,通常要少得多)
基于以上情况,您会建议采取什么措施来阻止任何拒绝服务攻击?
到目前为止,当谈到拒绝服务时,我了解到以下情况:
- 修改服务质量
- mod_evasive
- mod_antiloris
您会推荐哪一种?为什么?或者也许需要组合使用?
我已经在使用 MemCache 进行缓存,但是我是否可以在 Web 服务器级别启用缓存?目标是将服务器负载降至最低,这意味着即使用户重复请求图像或 css 文件也应该被阻止?
理想情况下,我希望滥用我创建的规则集的用户得到 403 禁止响应,该响应必须有一个定制页面,告诉他为什么被暂时禁止。这也意味着,如果用户违反这些规则,他不能被永久禁止,而是被屏蔽 10 分钟。
此外,我最大的担忧之一是 IP 封锁。从技术上讲,我可以在 PHP 级别创建一个封锁,但如果多个用户拥有相同的 IP,就像大学或办公室封锁的情况一样,如果一个人违反了规则,我该如何阻止整个群组被封锁?反之亦然:如果一个人设法获得数千个 IP 并尽可能猛烈地攻击服务器怎么办……我该如何检测?
如能得到关于如何做到这一点的任何建议,我们将不胜感激!
答案1
我建议使用 ModSecurity:
下面是使用它进行 DOS 保护的一个例子:
http://blog.cherouvim.com/simple-dos-protection-with-mod_security/
我强烈建议您先在测试环境中安装并进行测试,因为有时根据应用程序的不同,您会得到误报匹配,然后您可能需要自定义规则。