如何防止用户访问wp admin和wp-login.php?

时间:2016-02-04 19:22:54

标签: wordpress apache nginx

我希望限制所有用户访问WordPress网站登录。

例如:假设我有WordPress网站域example1.com,我想限制所有用户使用example1.com/wp-adminexample1.com/wp-login.php访问管理员登录。

当任何用户点击这些网址时,它会重定向到 restrict_user 页面,而且我想要使用example1.com/user_login访问wordpress登录页面,而不是点击example1.com/wp-adminexample1.com/wp-login.php网址。

请建议我如何使我的WordPress网站更加安全?

3 个答案:

答案 0 :(得分:1)

您可以使用htaccess deny all锁定wp-admin页面并设置允许的ip。

order deny,allow
deny from all
allow from 127.0.0.1

您还可以设置允许登录的htpasswd文件,并使用密码保护页面。我还要确保您在wp-admin中的用户名不是一件容易的事情' admin'或者'编辑'。

<IfModule mod_auth.c>
 AuthUserFile /home/path/.htpasswd
 AuthName "Username and password required"
 AuthType Basic
 <Limit GET POST>
  Require valid-user
 </Limit>
</IfModule>

此外,我强烈推荐使用wordfence作为防止黑客攻击的好插件等。

答案 1 :(得分:1)

限制对wp-admin目录

的访问

Apache 2.4 +

将此代码段添加到.htaccess目录中创建的wp-admin文件中:

<RequireAny>
    Require ip 64.176.174.0/255.255.255.0
    Require ip 64.176.176.0/255.255.255.0
</RequireAny>

并根据需要添加尽可能多的 IP地址/子网掩码对,以了解您希望访问管理区域的客户端IP地址。我在上面添加了两个样本。

Apache 2.4 -

将此代码段添加到.htaccess目录中创建的wp-admin文件中:

<Directory>
    Order Deny,Allow
    Deny from all
    Allow from 64.176.174.0/255.255.255.0
</Directory>

限制对wp-login.php路径

的访问

将此代码段添加到当前主题的functions.php文件中:

function my_checkRole(){
    if( !( current_user_can( 'administrator' ) ) && !( defined('DOING_AJAX') && DOING_AJAX ) ){
        wp_redirect( site_url( 'restrict_user' ) );
        exit;
    }
}

add_action( 'admin_init', 'my_checkRole' );

更改wp-admin路径

可以改变它,但为什么你认为它有任何价值?你无法隐藏Bot中的任何东西 - 这是不可能的。

黑客使用自动化的Bot程序来查找他们想要找到的任何内容。

一个好的方法是行动方法

  

黑客X执行错误操作Y,结果为Z = Forbidden

所以只需在限制访问wp-login.php路径部分中使用所提供的方法,这样就可以了。

答案 2 :(得分:0)

来自 nginx ,在 Ubuntu 16.04LTS 上使用 php7.0-fpm

我修改的基本配置: https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

我在网上发现了一堆试图将wp-login.phpwp-admin合并到同一规则中的配置,但允许wp-login.php可以原始下载!  当然,它是一个通用的Wordpress文件,但这是危险的行为。

我已将规则分开,因为wp-admin是一个文件夹,其中访问的任何内容都将遵循images / php / etc的通用规则。对于wp-login.php我想特别复制php执行。我已允许对10.x.x.x进行完全内部网络访问。

  location ~ wp-login\.php {
    allow 10.0.0.0/8
    deny all;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
  }
  location /wp-admin/ {
    allow 10.0.0.0/8
    deny all;
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
  }