Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress攻击洪水_Wordpress_Apache_Ddos - Fatal编程技术网

Wordpress攻击洪水

Wordpress攻击洪水,wordpress,apache,ddos,Wordpress,Apache,Ddos,我有几个WP网站,他们收到了大量的请求(大约每分钟2万个),比如: 问题是,它会导致我的数据库每次检查条目“adasd asdasd asdas da”或“fds-fdsf-dsfds-fds-f”或。。。存在于我的数据库中,它消耗了大量资源 我在谷歌上读了数百个链接,所有的链接都使用ip/速率限制,这对我来说不是一个解决方案;我不能用它。我看过一些博客,当用户点击错误的页面时,他们会将用户重定向到谷歌,这样他们就可以摆脱攻击。但是他们如何在不关闭整个系统的情况下检查数据库中的每个请求呢 很难解

我有几个WP网站,他们收到了大量的请求(大约每分钟2万个),比如:

问题是,它会导致我的数据库每次检查条目“adasd asdasd asdas da”或“fds-fdsf-dsfds-fds-f”或。。。存在于我的数据库中,它消耗了大量资源

我在谷歌上读了数百个链接,所有的链接都使用ip/速率限制,这对我来说不是一个解决方案;我不能用它。我看过一些博客,当用户点击错误的页面时,他们会将用户重定向到谷歌,这样他们就可以摆脱攻击。但是他们如何在不关闭整个系统的情况下检查数据库中的每个请求呢

很难解决这个问题,因为我的合法URL如下所示:

www.example.com/how-to-buy-a-flow
www.example.com/make-your-dad-happy
...
我已经发了1.9万篇帖子,每次用户发送一个请求,比如
www.example.com/fdsfds-fdsfs-dfds
,我都需要在数据库中检查它是否存在


我已经在使用CloudFlare,它做得很好,但我仍然无法发现如何以简单的方式检查请求是否不在数据库中。

您可以使用iptables或htaccess阻止攻击者的IP。

请看一看。您可以将其配置为监视apache日志中的404错误,并通过iptables在N秒内自动禁止每个超过x404错误的IP


设置起来很容易。

…或者,除了上面建议的之外,您还可以安装方便的插件


当然,修改
.htaccess
和/或设置
iptables
防火墙是为高级用户提供的,如果您可以完全访问您的web服务器环境。

我公司的WordPress网站也曾遭受多起DDoS攻击。有几种策略对我们来说非常宝贵:

  • 使用(监控/var/log/auth.log for SSH bruteforce)
  • 使用.htaccess从未经授权的IP地址阻止
    /wp login.php
    /wp admin.php
  • 安装(在保护WordPress方面非常有价值)
  • 安装(用于pingback攻击)

只是一个建议,如果可能的话,我不知道:在服务器上创建一种缓存,在新帖子上自动刷新。不要再从数据库中读取,只从缓存中查看帖子是否存在。@这是个好主意,但cloudflare只会将我的帖子缓存5分钟,因此如果用户在4年前请求帖子,我需要在数据库中检查它是否存在。我不能只检查最近的帖子,因为用户经常浏览旧帖子。然后将它们添加到txt文件?不知道IO请求将消耗什么?当然,我指的是标题,所以你会得到一个标题列表,并检查所请求的帖子(标题)是否存在于.txt文件WOWWW中,这是一个更好的解决方案!你的意思是:我将所有标题保存在一个文本文件中(我将导出大约19000个标题),每次用户进来时,我都会检查strpos()是否在txt文件中存在标题?你确定它会比只使用mysql更快吗?我认为mysql已经为此进行了优化,您认为将其移动到php会有所帮助吗?您已经将问题从(希望)索引表扫描转移到了完整文件扫描。使用memcache并键入标题,使其为O(1),如果他们欺骗他们的IP?最后,攻击者获胜,因为您正在阻止每个IP/范围。他们正在使用数千个伪造的IP。这就是为什么我在问题中说,我知道这不是一个好的解决方案。在这种情况下,我认为值得尝试Gerald Schneider关于fail2ban的解决方案。@Adam fail2ban的问题是,每个IP请求的页面都很少,因此根本无法工作。感谢您的帮助,但IP是假的。平均每个IP每小时只请求2个页面。因此,它无法阻止每小时请求2个无效页面的每个IP。
www.example.com/how-to-buy-a-flow
www.example.com/make-your-dad-happy
...