Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.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
Php 如何保护wp登录免受apache/nginx攻击_Php_Wordpress_Apache_.htaccess_Nginx - Fatal编程技术网

Php 如何保护wp登录免受apache/nginx攻击

Php 如何保护wp登录免受apache/nginx攻击,php,wordpress,apache,.htaccess,nginx,Php,Wordpress,Apache,.htaccess,Nginx,我想问一下,您是否知道apache或nginx中有任何方法限制对wp登录的访问,但不限制对整个服务器的访问。我的意思是: 例如,有一个使用Apache/Nginx的服务器,对wp-login.php/xmrlpc.php或admin-ajax.php的点击率很高。如果我不拒绝通过.htaccess文件对整个服务器的访问,服务器的负载将变得非常高。是否有任何配置或软件(不是wp插件)可能对我的情况有所帮助?例如,如果同一IP访问wp-login.php的次数超过X次,是否可以限制访问 提前谢谢你

我想问一下,您是否知道apache或nginx中有任何方法限制对wp登录的访问,但不限制对整个服务器的访问。我的意思是:

例如,有一个使用Apache/Nginx的服务器,对wp-login.php/xmrlpc.php或admin-ajax.php的点击率很高。如果我不拒绝通过.htaccess文件对整个服务器的访问,服务器的负载将变得非常高。是否有任何配置或软件(不是wp插件)可能对我的情况有所帮助?例如,如果同一IP访问wp-login.php的次数超过X次,是否可以限制访问

提前谢谢你

听起来你在找。 下面是我博客中的一段摘录,内容是关于如何在Nginx中专门为wp-login.php配置速率限制

Nginx有一些关于如何实现速率限制的优秀文档,但我将提供一个如何为WordPress优化它的示例。在Nginx中设置速率限制非常简单,只需要两个组件:

  • 我们必须在主
    nginx.conf
    文件中定义一个区域
  • 我们必须在WordPress登录位置块中实现该区域。为了定义区域,我们使用
    limit\u req\u zone
    和可选的
    limit\u req\u status
    。这些指令位于主
    nginx.conf
    配置文件的
    http
    块中
  • 守则:

    http {
        limit_req_zone $binary_remote_addr zone=wordpress:10m rate=15r/m;
        limit_req_status 429;
    }
    
    上面的代码段定义了一个名为“wordpress”的10MB区域,该区域允许每分钟最多15个来自任何一个IP地址的请求。
    限制请求区域
    需要一个变量或键。在这种情况下,密钥是
    $binary\u remote\u addr
    ,或者客户端的IP地址。Nginx将使用最多10 MB的内存来存储密钥,如果密钥超过了允许的最大请求数,Nginx将终止连接并返回
    limit\u req\u status
    中定义的状态代码。默认代码是
    503服务不可用
    ,但我更喜欢更具体的
    429太多请求
    响应。请记住,如果未使用
    error\u page
    指令设置自定义错误页面,Nginx将向客户端显示非标准HTTP代码的空白页面

    你可以给这个区域命名任何你想要的名字(在上面的例子中它被命名为“wordpress”),你也可以定义任何你认为合适的利率限制。我发现,允许每分钟最多15个请求的限制性足以严重阻碍暴力攻击,但允许性足以不干扰合法输入密码的最终用户

    要实际使用该区域,我们必须通过将以下代码添加到WordPress登录位置块来实现:

    location = /wp-login.php {
        limit_req zone=wordpress;
        # add your PHP fastcgi config here
    }
    
    这告诉Nginx使用上面定义的区域中指定的参数将请求限制到
    /wp login.php
    页面。确保用上一步中命名的区域替换“wordpress”。重新启动或重新加载Nginx并快速刷新登录页面,以测试新的暴力保护是否有效。如果刷新速度快于在
    限制请求区域
    中定义的速率,服务器将返回在
    限制请求状态
    中定义的状态代码

    必须注意:如果您已经阅读了关于如何使用Nginx设置速率限制的其他指南,您可能已经看到使用了其他语法,例如
    limit\u req zone=one burst=1 nodelay
    突发
    节点延迟
    选项更为复杂,允许您控制多余请求的情况。在这种情况下,它们是不必要的,因为我们希望立即拒绝任何过度的暴力企图,但我强烈建议您在这里阅读它们的文档


    来源:

    应该在ServerFault上询问,但您可以使用或类似的工具来实现这一点。嗨,我不太确定我是否理解您的问题,为什么不从您的目录中禁止它?PS,我没有投你反对票,我不知道为什么有人会投反对票,也许是你的措辞。Mods:这个答案是直接复制/粘贴的,但我自己的内容直接回答了这个问题。我包括了相关的部分,但留下了链接,因为整篇文章中有更多的信息。有更好的方法吗?或者这是一个合适的答案吗?@Armon我正在尝试你的解决方案,但是有一些奇怪的行为。我在这里写到:你能看一下吗?@Pikk看起来这就是这个问题的链接。你发表了另一条评论吗?