文章目录[隐藏]
虽然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 输入错误,就会跳转到凤姐的照片欣赏地址(当然你也可以把该地址换成你想转向的网址)
4)更换更强的的密码
千万不要用12345678之类,IP也不可以用。尽量使用自动生成密码。自己做备份就可以了。
WordPress 用户密码 和 数据库用户密码 最好分开设置成不一样的密码。
安装 WordPress 时不要用默认的 WordPress_ 前缀
这个前缀在安装页面,提交的时候就要把表前缀进行修改..
如果你已经安装过了,想修改前缀,可以使用 WordPress-DBManager 插件即可修改 WordPress 数据表前缀。修改之后你可以再删除插件。
定期备份网站
关于备份数据库,你可以使用 WordPress Database Backup 插件来定期备份数据库。如果想要备份整个网站,那么推荐使用 BackUpWordPress 或 Duplicator 插件,它基本上可以把网站文件和数据库都备份好。
如果你用的是 VPS,如 Linode,那么我建议你还可以考虑开通 BackUp 服务,每个月 2.5 美金,定期备份整个磁盘,生成快照。不要嫌贵,如果你整个网站文件和数据库被删除,你就知道整盘备份这功能是多么重要了。
阻止文件目录浏览(Directory Browse)
大部分的虚拟主机对于文件目录浏览的权限都是开放的,这并不安全。浏览者可以看到你目录里有哪些文件,文件名称是什么。如下图所示:
显然这是相当不安全的。一般是由于当前目录下没有主页文件引起的。有两种解决办法:
- 每个文件目录下放一个空的 index.html 或 index.php 文件
- 修改 .htaccess 配置文件不显示文件目录
前一种方式操作很简单,就是稍微有点麻烦,我们用第二种方法。
点击 public_html 找到你的网站目录,在网站根目录下找 .htaccess 文件。
找到以后,在文件上点击右键,选择菜单中的 “Code Edit”。
会出现一个对话框,只需点击“编辑”按钮继续,编辑器将在新窗口中打开。
编辑完成后,保存即可。
隐藏 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 处,截图如下:
记得点保存,然后在网站首页按 ctrl+F5 强制刷新生效。
我们来测试一下,我们上传一个 test.php文件,此文件内我们写入 <?php echo phpinfo(); ?> ,此函数会显示 php 服务器信息。然后我们来访问看看:
没有添加截图 2 的代码时,显示了主机的详细信息:
稍微懂点 php 的人都知道,这个信息是黑客/攻击者最想获取的服务器信息,里面记录各种配置参数、路径、版本等等。
我们添加截图中代码 2 以后,再访问此 php 文件,显示 403 不允许访问,拒绝访问一切 php 文件!
至此,你已经成功地配置了防御措施。
如果你是 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博客变得更加安全