续接上一篇,本编之后都是对wordPress站点进行的额外配置,选择喜好看个人了。
首先,重要的话说三遍:
保证wordPress版本最新,插件,主题最新才是重中之重!
保证wordPress版本最新,插件,主题最新才是重中之重!
保证wordPress版本最新,插件,主题最新才是重中之重!
这里本篇推荐一些配置用来增加wordPress的安全性,以尽量减少插件的使用来做。这里推荐一个本地远程工具,wpscan来在云主机上对系统安全性进行扫描。
安装wpscan
确认系统上已经安装了ruby。远程连接到自己的云主机。首先添加个人用户的ruby环境。执行命令:
代码语言:shell复制vim ./.bashrc
在文件末尾添加两行:
代码语言:shell复制export GEM_HOME="$(ruby -e 'puts Gem.user_dir')"
export PATH="$PATH:$GEM_HOME/bin"
保存退出后,开始安装wpscan。执行命令:
代码语言:shell复制sudo apt install ruby-dev
gem install --user-install wpscan
等待安装完成后,去官网根据提示注册账号,可以申请一个api Token,用来显示扫描结果。使用前确认系统在线,即可开启扫描。可以执行下述命令确认系统在线(本地回环):
代码语言:javascript复制curl -X GET -i http://127.0.0.1
第一次使用记得更新wpscan,之后再进行扫描
代码语言:javascript复制wpscan --update
wpscan --url http://127.0.0.1 --api-token YOUR_TOKEN
把其中的YOUR_TOKEN修改为自己的TOKEN。
针对扫描结果进行修改:1. 隐藏登录界面
这里首先隐藏自己的登录界面。在自己的后台,依次打开工具->主题文件编辑器,在右侧编辑栏选择模板函数,在最下面添加:
代码语言:php复制// 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的屏蔽。
执行命令:
代码语言:shell复制vim /etc/nginx/sites-available/default
在service_name 行下面添加:
代码语言:javascript复制location ~* /xmlrpc.php{
allow 127.0.0.1;
return 403;
}
location ~* /wp-cron.php{
allow 127.0.0.1;
return 403;
}
保存后并执行:
代码语言:shell复制sudo nginx -t
确认配置文件正确,并重新加载Nginx
代码语言:shell复制sudo systemctl reload nginx
针对扫描结果进行修改:3. 隐藏版本信息
同第一条,在模板函数末尾,添加:
代码语言:php复制// 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的扫描,需要配置自己的防火墙,也可以询问自己的服务提供商。