前言
在2018年5月23日,博客被黑过!
打从那时起,对wordpress安全,耿耿为怀 > 步步为营 > 采取措施 > 防卫于未然
开始与黑客攻击的攻防战役吧!
第一防线:服务器端
1.参考前面这篇文章的:
2.安装最新且稳定的PHP版本,如:PHP 7.4.21
;
3.设置WordPress文件目录权限,如:755
;
4.设置 HTTPS – SSL Certificate
;
5.注册使用 Cloudflare
来防盗链、CDN、SSL、预防DDoS等等。
第二防线:安装WordPress时
1.使用复杂的用户名与密码,比如用户名为邮箱地址,密码为类似:Kt83QPHefnGK;
2.使用自定义的数据库前缀如比如 sgq_
,只要不是默认的 wp_
就可以;
3.手动保持WordPress更新,为什么不设置自动更新?看清楚更新版本是修复什么,先备份好,再升级,避免wordpress出错;
4.只安装有知名度、质量的主题和插件;
5.必装插件列表:
- 安全插件,比如
Wordfence
; - 备份插件,比如
UpdraftPlus
:开启定期备份到网盘; - 缓存插件,比如
WP Rocket
:加速网站。
6.可选插件列表:
Disable Google Fonts
(国内博客使用);Enlighter
——可自定义的语法高亮显示插件(喜欢linux的话);WP Mail SMTP
;Yoast SEO
;Two Factor Authentication
。
第三防线:设置WordPress时
.htaccess
说明:以下示例都是增加代码到wordpress根目录下的 .htaccess
能用几行代码就达到目的,就不必安装插件了
1.Disable Directory Indexing and Browsing(禁止浏览目录)
#protect directory browse
Options -Indexes
2.Protect wp-config.php(保护WP配置文件)
#protect wp-config.php
order allow,deny
deny from all;
wp-config.php
Your wp-config.php file is like the heart and soul of your WordPress installation. It is by far the most important file on your site when it comes to WordPress security. It contains your database login information and security keys which handle the encryption of information in cookies.
wp-config.php
1.修改 wp-config.php
文件权限为440或者400
2.关闭后台的 theme editor
功能
#Disallow file edit
define( 'DISALLOW_FILE_EDIT', true );
functions.php
说明:以下示例都是增加代码到WP主题目录下的(有启用子主题的话就在子主题下)的 functions.php
1.修改后台登录网址
- 更改登陆URL为:https://shenguanqun.com/wp-login.php?11=22&33=44
- 记得把示例参数:11,22,33,44和https://shenguanqun.com/wp-content/uploads/图片.jpg,改为你自己的参数!
/**
* wordpress: change login URL
*/
add_action('login_enqueue_scripts','login_protection');
function login_protection(){
if(($_GET['11'] != '22') || ($_GET['33'] != '44'))header('Location: https://shenguanqun.com/wp-content/uploads/图片.jpg');
}
:wq
保存后,后台的登陆网址只能是上面的格式了;不然的话比如访问/wp-admin或者/wp-login的话,浏览器就只会显示你在代码中设置的那张图片:https://shenguanqun.com/wp-content/uploads/图片.jpg
比如我现在设置的就是这张:
2.隐藏wordpress版本号:
/**
* wordpress: hide version number
*/
function wp_version_remove_version() {
return '';
}
add_filter('the_generator', 'wp_version_remove_version');
nginx.php
如果你用的是 lnmp(linux、nginx、mysql、php)
那么可以通过nginx来做很多事情;修改对应的虚拟主机配置文件即可,一般在路径 /usr/local/nginx/conf/vhost/以域名命名.conf
1.Disable XML-RPC
避免被恶意攻击(大量访问)xmlrpc.php;
攻击原理:wordpress网站xmlrpc.php文件是一个远程端口文件,攻击者通过POST提交恶意大量的提交,不断的访问xmlrpc.php文件,形成DDOS攻击,致使网站服务器CPU过高停机,网站无法打开。
解决方法:关闭掉自己网站xmlrpc.php文件。
#方法1:添加代码到上边子主题的functions.php文件中
add_filter('xmlrpc_enabled', '__return_false');
#再添加下边代码,通过.htaccess屏蔽xmlrpc.php文件的访问
#Block WordPress xmlrpc.php requests
Order Deny,Allow
Deny from all
#方法2:利用nginx控制
location ~* ^/xmlrpc.php$ {
return 403;
}
2.Prevent Hotlinking(防盗链)
location ~ .(gif|png|jpe?g)$ {
valid_referers none blocked ~.google. ~.bing. ~.yahoo yourdomain.com *.yourdomain.com;
if ($invalid_referer) {
return 403;
}
}
3.阻止上传文件夹内的任何php文件执行
location /wp-content/uploads/ {
location ~ .*.(php)?$ {
deny all;
}
}
直接插件配置
嫌麻烦的话,直接安装 All In One WP Security
插件设置就行,功能如下:
后话
防线配置得差不多了,就可以开始去充实网站内容了~
定期备份!
定期备份!
定期备份!