侧边栏壁纸
博主头像
伯虔

追求源于热爱,极致源于梦想!

  • 累计撰写 98 篇文章
  • 累计创建 30 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

防止WordPress后台被暴力破解

伯虔
2017-04-06 / 0 评论 / 0 点赞 / 757 阅读 / 3,614 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-28,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

WordPress作为使用人数最多的博客系统,一直是大家关注的焦点,不安好心的人找漏洞,钻空子爆破别人网站的事情也经常也发生,如果你的密码设置的过于简单,比如用户名还是默认的admin,那就危险了,密码设置最好也包含数字,大小写字母,标点符号等,提高安全系数。

我的博客最近也一直被别人暴力登录,由于我设置过登录错误邮件提醒,所以邮箱收到一大堆邮件,手机从邮箱一直从中午推送消息,到晚上才消停。还好登录的次数不够频繁,几秒一次,所以服务器并没有宕机。
84_protectwordpress01.png

84_protectwordpress02.png

索性安装几个插件来防止,就搜索几个用的人数比较多的安装,发现并没有什么效果,插件功能太多,华而不实,而且插件安装过多影响前后台速度,于是全部卸载。

网上搜索网一些文章后,结合起来。自己理出几个防止恶意登录的思路:

1.修改后台登录文件名

修改www.xxxxx.com/wp-admin或者www.xxxxx.com/wp-login.php页面名称,修改一个长一点,复杂一点,然后加入浏览器收藏夹,方便自己登陆。缺点就是如果在别的电脑登录,忘记文件夹名,就不方便了,还有WordPress更新后,也会覆盖文件,导致失效。

2.安装相应插件

便捷,后台一键安装,有可视化界面操作。但是我用起来不太管用,不知道大家怎么样。缺点就是安装插件太多拖慢前后台速度。插件有:Limit Login Attempts、WP-Ban、IP Blacklist Cloud、Wordfence Security、Better WP Security、BulletProof Security

3.修改配置文件

这个可以实现插件的功能,只不过没有界面,纯代码,因为插件也是通过修改wp-config.php文件达到目的的,一般修改主题的function.php或者修改wp-config.php文件代码实现自定义功能。

这里我给出Nginx服务器的配置,经过我测试有效(lnmp.org的环境):

点击 生成密码 在这里输入你的用户名和密码(后面用于访问页面的密码,并不是wordpress的密码)后选择Crypt加密算法。在服务器上的/usr/local/nginx/conf目录下新建一个htpasswd文件,然后把刚才生成的账号密码粘贴到htpasswd文件中。
编辑 /usr/local/nginx/conf/vhost/www.xxxxx.com.conf,加入如下代码,如果你htpasswd文件位置和我不一样,请修改auth_basic_user_file  后面的文件路径:

location = /wp-login.php {
auth_basic "Restricted";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index wp-login.php;
include fastcgi.conf;
}

重载 Ningx ,让配置生效:service nginx reload

这时候再访问https://www.huangbowei.com/wp-login.php或者https://www.huangbowei.com/wp-admin,就会出现弹出框,让你输入刚刚生成的账号密码,然后才能访问wordpress后台登录页面,有效防止别人恶意爆破。

84_protectwordpress03.png

其他代码分享

这里给出一些之前收集的好用的代码,省去安装插件:

  • 为正文所有链接添加target="_blank"属性
//为正文所有链接添加target="_blank"属性
function auto_blank($text) {
    $return = str_replace('<a', '<a target="_blank"', $text);
    return $return;
}
add_filter('the_content', 'auto_blank');
  • SMTP发送邮件,注意设置SMTP服务区
//使用smtp发送邮件(请根据自己使用的邮箱设置SMTP)
    add_action('phpmailer_init', 'mail_smtp');
    function mail_smtp( $phpmailer ) {
        $phpmailer->FromName = 'Timhbw博客'; //发件人名称
        $phpmailer->Host = 'smtp.gmail.com'; //修改为你使用的邮箱SMTP服务器
        $phpmailer->Port = 465; //SMTP端口
        $phpmailer->Username = 'xxxxx@gmail.com'; //邮箱账户
        $phpmailer->Password = 'xxxxxxxxxx'; //邮箱密码
        $phpmailer->From = 'xxxxx@gmail.com'; //邮箱账户
        $phpmailer->SMTPAuth = true;
        $phpmailer->SMTPSecure = 'ssl'; //tls or ssl (port=25时->留空,465时->ssl)
        $phpmailer->IsSMTP();
    }
  • 博客后台登录失败时发送邮件通知管理员
// 博客后台登录失败时发送邮件通知管理员
   function wp_login_failed_notify()
   {
       date_default_timezone_set('PRC');
       $admin_email = get_bloginfo('admin_email');
       $to = $admin_email;
       $subject = '【登录失败】有人使用了错误的用户名或密码登录『' . get_bloginfo('name') . '』';
       $message = '<span style="color:red; font-weight: bold;">『' . get_bloginfo('name') . '』有一条登录失败的记录产生,若登录操作不是您产生的,请及时注意网站安全!</span><br /><br />';
       $message .= '登录名:' . $_POST['log'];
       $message .= '<br />尝试的密码:' . $_POST['pwd'];
       $message .= '<br />登录的时间:' . date("Y-m-d H:i:s");
       $message .= '<br />登录的 IP:' . $_SERVER['REMOTE_ADDR'];
       $message .= '<br /><br />';
       $message .= '您可以: <a href="' . get_bloginfo('url') . '" target="_target">进入' . get_bloginfo('name') . '»</a>';
       wp_mail( $to, $subject, $message, "Content-Type: text/html; charset=UTF-8" );
   }
   add_action('wp_login_failed', 'wp_login_failed_notify');
0

评论区