续接上一篇,本编之后都是对wordPress站点进行的额外配置,选择喜好看个人了。
首先,重要的话说三遍:
保证wordPress版本最新,插件,主题最新才是重中之重!
保证wordPress版本最新,插件,主题最新才是重中之重!
保证wordPress版本最新,插件,主题最新才是重中之重!
这里本篇推荐一些配置用来增加wordPress的安全性,以尽量减少插件的使用来做。这里推荐一个本地远程工具,wpscan来在云主机上对系统安全性进行扫描。
安装wpscan
确认系统上已经安装了ruby。远程连接到自己的云主机。首先添加个人用户的ruby环境。执行命令:
vim ./.bashrc
在文件末尾添加两行:
export GEM_HOME="$(ruby -e 'puts Gem.user_dir')"
export PATH="$PATH:$GEM_HOME/bin"
保存退出后,开始安装wpscan。执行命令:
sudo apt install ruby-dev
gem install --user-install wpscan
等待安装完成后,去官网根据提示注册账号,可以申请一个api Token,用来显示扫描结果。使用前确认系统在线,即可开启扫描。可以执行下述命令确认系统在线(本地回环):
curl -X GET -i http://127.0.0.1
第一次使用记得更新wpscan,之后再进行扫描
wpscan --update
wpscan --url http://127.0.0.1 --api-token YOUR_TOKEN
把其中的YOUR_TOKEN修改为自己的TOKEN。
针对扫描结果进行修改:1. 隐藏登录界面
这里首先隐藏自己的登录界面。在自己的后台,依次打开工具->主题文件编辑器,在右侧编辑栏选择模板函数,在最下面添加:
// Redirect WP-Login.php
add_action('login_enqueue_scripts','tb_wp_login_protection');
function tb_wp_login_protection(){
if( !isset($_GET['12345']) ){
header( 'Location: ' . home_url() );
exit;
}
}
其中,12345更换为自己喜欢的字符串。这样直接访问wp-login.php会被跳转到主页,而真正后台页面地址为wp-login.php?12345。
针对扫描结果进行修改:2. 限制对部分文件的访问
主要用来限制对xmlrpc.php以及wp-cron.php的直接访问。
注意:如无法更新wordpress版本请取消对wp-cron.php的屏蔽。
执行命令:
vim /etc/nginx/sites-available/default
在service_name 行下面添加:
location ~* /xmlrpc.php{ allow 127.0.0.1; return 403; }
location ~* /wp-cron.php{
allow 127.0.0.1;
return 403;
}
保存后并执行:
sudo nginx -t
确认配置文件正确,并重新加载Nginx
sudo systemctl reload nginx
针对扫描结果进行修改:3. 隐藏版本信息
同第一条,在模板函数末尾,添加:
// remove version from head
remove_action('wp_head','wp_generator');// remove version from rss
add_filter('the_generator','__return_empty_string');
// remove verion from script and styles
function remove_version_from_wordpress($src){
if(strpos($src,'ver=')){
src = remove_query_arg('ver',src);
}
return $src;
}
add_filter('style_loader_src','remove_version_from_wordpress');
add_filter('script_loader_src','remove_version_from_wordpress');
保存退出即可。此条只能从访问发送的数据中尽可能隐藏版本信息,但仍然能使用wpscan扫描得到版本信息。如需要增加反wpscan的扫描,需要配置自己的防火墙,也可以询问自己的服务提供商。