防止WordPress后台被暴力破解

2017-04-0613:34:01 发表评论 955℃热度

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

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

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

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

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  后面的文件路径:
    1. location = /wp-login.php {
    2. auth_basic "Restricted";
    3. auth_basic_user_file /usr/local/nginx/conf/htpasswd;
    4. fastcgi_pass unix:/tmp/php-cgi.sock;
    5. fastcgi_index wp-login.php;
    6. include fastcgi.conf;
    7. }
  • 重载 Ningx ,让配置生效:service nginx reload

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏自由而无用的灵魂的碎碎念

Windows Server 2008 R2 到Windows 7的改造之路

与windows 7相比,windows server 2008 r2功能更为全面,开发人员也更喜欢使用win server 2008 r2进行开发。

1643

如何安装Node.js.

Node.js是服务器端JavaScript应用程序的跨平台运行环境。Node.js使用的是谷歌研发的JavaScript引擎V8,它也可以在Chromium和...

1724
来自专栏地方网络工作室的专栏

将移动硬盘上的archlinux复制到笔记本电脑硬盘并引导

将移动硬盘上的archlinux复制到笔记本电脑硬盘并引导 每次安装archlinux我都非常痛苦,在同事的协助下才能完成。为了避免这个问题,我在我的移动硬盘上...

2158
来自专栏懒人开发

WebStorm:遇到的问题

最近自己WebStorm用得多一点了 和android studio一样,同样是IDEA的ide (记得自己还是eclipse的时候,原来同事很早就开始用I...

2303
来自专栏魏艾斯博客www.vpsss.net

一款 windows 英文面板-Winginx 安装和配置过程

当下 windows 服务器的使用数量还是不少的,为了在网站上线之前测试程序可用性,很多人会在本地 windows 系统中安装使用 windows 面板来搭建 ...

1622
来自专栏黑白安全

初级渗透教学

通常,判断一个网站是否存在注入点,可以用’,and 1=1 ,and 1=2,+and+1=1,+and+1=2,%20and%201=1,%20and%201...

5953
来自专栏進无尽的文章

Fastlane| 一句代码完成自动打包发布到蒲公英

第一个选项的意思是:自动截屏。这个功能能帮我们自动截取APP中的截图,并添加手机边框(如果需要的话) 第二个选项的意思是:自动发布beta版本用于TestFli...

1813
来自专栏余生开发

cypress e2e 测试神器 安装使用及语法

cypress 我们直接去Cypress的官网,根据教程我们先进入我们项目的根目录,执行npm install cypress --save-dev,在安装完成...

2633
来自专栏我叫刘半仙

原帮你摆脱鼠标,提高工作效率的免费小工具

       一款只用键盘操作就能打开想要的软件的神器--ALTRun。在我刚开始学编程时,一次偶然的机会接触了ALTRun后,实在是爱不释手。它是一款快速启动...

4376
来自专栏知晓程序

如何让公众号粉丝使用小程序? | 小程序问答 #41

也许你已经知道,微信提供了「小程序关联公众号」的功能,而且小程序还能关联 50 个公众号。

1792

扫码关注云+社区

领取腾讯云代金券