如何让WordPress博客变得更加安全

wordpress-js-css

虽然WordPress占据着世界上用户最多的建站程序的头把交椅。但是用的人多,想尽办法破解,攻击行为就会非常多。

自己辛辛苦苦建立的WordPress博客被黑客攻击、植入后门。

我们不该责怪 WordPress,它本身并没有错。通常都是我们所做的防范措施太少,导致黑客轻松就侵入。

那么怎么样才能有效防范黑客的破坏行为?

锁掉登录页面防范暴力攻击

WordPress的标准后台登录页面为 /wp-admin/ 以及 /wp-login.php ,如果你使用的是宝塔面板,你可以查询一下这个页面,每天要被多少次攻击。

所以WordPress搭建后的第一件事情就是更换后台登录页面的地址。

关于后台登录页面,要做到以下几点:

1)对多次错误登录的行为进行监控和禁止

很多暴力破解的攻击手段都是不停的更换密码来尝试登录进 WordPress 后台。
我建议安装插件:Login LockDown,它在这方面的安全性做得很不错。如果某个访问者尝试不同的密码错误次数超过设定值,那么该 IP 会被记录,并且 IP 被拦截,禁止访问网站。

2)用 Email 地址而不是用户名登录

WordPress 默认是用 username 来登录,显然这个并不够安全。有些不够安全的主题,通过在域名后面加上 /?author=1 来访问的方式,会暴露 WordPress 的后台登录用户名。

而且很多博主可能用户名跟域名有关,甚至用admin 来作为用户名,使得黑客很容易就能猜测并暴力尝试。

可以使用更安全的方式:Email 地址作为用户名来登录。就是你安装 WordPress 或注册用户的时候填写的邮箱地址。你可以用 WordPress Email Login 插件来实现,它配置很简单,激活后几乎无需任何配置。

3)改掉登录页面的 URL

相当多的博主,在安装完后没有更改登录页面的 URL。这也是非常不安全。

将的 WordPress 主题文件夹里面的 functions.php 文件下载到本地,备份。编辑functions.php,在最底下,粘贴以下代码

//保护后台登录
add_action('login_enqueue_scripts','login_protection'); 
function login_protection(){ 
 if(($_GET['admin'] != 'whoareyou') || ($_GET['password'] != 'iamnobody'))header('Location: https://photocdn.sohu.com/20151012/mp35170363_749_8.jpeg');
}

然后保存并上传到空间将老的functions.php 替换。从现在开始,想要登录后台,所有人必须都通过访问

https://www.xx.com/WordPress-login.php?admin=whoareyou&password=iamnobody

这个唯一的 URL 页面地址来访问你的网站后台了。即:

在原来的 WordPress-login.php 的后面多加了两个变量 admin 和 password,这两个变量和变量值组合构成唯一的一个页面URL。(admin 和 password 不要写你登录的账号和密码)。

如果 URL 输入错误,就会跳转到凤姐的照片欣赏地址(当然你也可以把该地址换成你想转向的网址)

fengjie-1

4)更换更强的的密码

千万不要用12345678之类,IP也不可以用。尽量使用自动生成密码。自己做备份就可以了。

WordPress 用户密码 和 数据库用户密码 最好分开设置成不一样的密码。

安装 WordPress 时不要用默认的 WordPress_ 前缀

这个前缀在安装页面,提交的时候就要把表前缀进行修改..

fill-in-sheet

如果你已经安装过了,想修改前缀,可以使用 WordPress-DBManager 插件即可修改 WordPress 数据表前缀。修改之后你可以再删除插件。

定期备份网站

关于备份数据库,你可以使用 WordPress Database Backup 插件来定期备份数据库。如果想要备份整个网站,那么推荐使用 BackUpWordPress 或 Duplicator 插件,它基本上可以把网站文件和数据库都备份好。

如果你用的是 VPS,如 Linode,那么我建议你还可以考虑开通 BackUp 服务,每个月 2.5 美金,定期备份整个磁盘,生成快照。不要嫌贵,如果你整个网站文件和数据库被删除,你就知道整盘备份这功能是多么重要了。

阻止文件目录浏览(Directory Browse)

大部分的虚拟主机对于文件目录浏览的权限都是开放的,这并不安全。浏览者可以看到你目录里有哪些文件,文件名称是什么。如下图所示:

bl1

show-file-directory

bl2

显然这是相当不安全的。一般是由于当前目录下没有主页文件引起的。有两种解决办法:

  1. 每个文件目录下放一个空的 index.html 或 index.php 文件
  2. 修改 .htaccess 配置文件不显示文件目录

前一种方式操作很简单,就是稍微有点麻烦,我们用第二种方法。

点击 public_html 找到你的网站目录,在网站根目录下找 .htaccess 文件。

找到以后,在文件上点击右键,选择菜单中的 “Code Edit”。

file-manager-htaccess

 

会出现一个对话框,只需点击“编辑”按钮继续,编辑器将在新窗口中打开。

oai

编辑完成后,保存即可。

隐藏 config.php

WordPress 根目录下的 WordPress-config.php 文件中记录了我们的 wordpress 使用的 mysql 数据库表名、用户、以及明文的密码!

// ** MySQL 设置 ** //
/** WordPress 数据库的名称 */
define('DB_NAME', 'xxxxxxxxxxxxxxxxxxxx');

/** MySQL 数据库用户名 */
define('DB_USER', 'xxxxxxxxxxxxxxxxxxxx');

/** MySQL 数据库密码 */
define('DB_PASSWORD', 'xxxxxxx明文的密码xxxxxxxx');

/** MySQL 主机 */
define('DB_HOST', 'localhost');

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');

如果不加限制,WordPress-config.php 很容易就被黑客获取了。未加保护的 WordPress-config.php 文件,很容易被网络爬虫抓取到了

所以,我们必须把 WordPress-config.php 文件保护起来,我们需要修改 .htaccess 文件。

直接编辑 .htaccess 文件,加上以下代码:

<files WordPress-config.php>
order allow,deny
deny from all;
</files>

这样一来,就阻止了各类恶意网络爬虫抓取文件。

阻止上传文件夹内的任何 php 文件执行

通常你被黑之后都能在 WordPress-content/uploads/ 文件夹下发现一个可疑的 php 文件,这是黑客上传的控制文件,我们要关闭访问任何 .php 文件的权限。

在网站根目录的 .htaccess 文件中添加代码。代码如下:

RewriteEngine on RewriteCond % !^$

RewriteRule uploads/(.).(php)$ – [F]

注意:代码写在 <IfModule mod_rewrite.c> </IfModule> 内。

OK,结合上面的一些我们需要添加到 .htaccess 文件中的代码,完整的添加代码有 3 处,截图如下:

three-revise-finished

 

记得点保存,然后在网站首页按 ctrl+F5 强制刷新生效。

我们来测试一下,我们上传一个 test.php文件,此文件内我们写入 <?php echo phpinfo(); ?> ,此函数会显示 php 服务器信息。然后我们来访问看看:

没有添加截图 2 的代码时,显示了主机的详细信息:

phpinfo

稍微懂点 php 的人都知道,这个信息是黑客/攻击者最想获取的服务器信息,里面记录各种配置参数、路径、版本等等。

我们添加截图中代码 2 以后,再访问此 php 文件,显示 403 不允许访问,拒绝访问一切 php 文件!

403-pd

至此,你已经成功地配置了防御措施。


如果你是 VPS LNMP 环境的话,需要在虚拟主机配置文件 conf 中定义 ( 路径:/usr/local/nginx/conf/vhost/www.abc.com.conf  ) 。添加在 Server 段:

location /WordPress-content/uploads/ {

location ~ .*.(php)?$ {

deny all;

}

}

记得重启 nginx。 /etc/init.d/php-fpm restart

不用来历不明的免费主题和插件

当年为了能免费使用 themeforest 上的那些高大上的英文主题,我在百度里搜索,在国内一些主题免费下载站下载了一些国外主题。一开始不知道,后来偶然才发现这些英文主题里 functions.php 文件里竟然有一些伪装得很好的恶意代码,可以让人获得 uploads 文件夹的权限,我 TM 吓出一身冷汗~ 从此再也不用这些下载站的主题。

不管是免费还是付费的主题和插件,都尽量通过 WordPress 官方或者后台去获取安装。

使用 SSL 加密数据

用 SSL(安全套接层协议)证书不只是为了浏览器地址栏上那个绿色的小锁,更是为了安全。并且 SSL证书也会影响 Google 对你网站的信任度。Google 对没有启用 SSL 的网站都认为安全级别不够高,所以不久的将来 https 协议肯定会逐渐取代 http。

SSL 可以确保用户浏览器和服务器之间的安全数据传输,使黑客很难破坏连接信息。获取 SSL 证书不是问题,可以到阿里云、七牛等网站都提供

未经允许不得转载:主机格调 » 如何让WordPress博客变得更加安全