我对WordPress的一些安全建议


广告:

本文针对nginx做的一些设置,其他服务器请自行搜索配置
1、因为每次更新WordPress的时候都会增加install.php文件,所以需要禁止install.php的访问

location = /wp-admin/install.php {
        return 301 https://blog.7xiaowu.cn;
}

2、禁止针对wp-login.php的爆破,一个是被爆破成功后的危险,第二个是不断有post进来对php的消耗还是不小的,我曾经被爆破到无法访问,通过nginx层面禁止是非常有效的手段。因为我这边遇到进行爆破的主要都是来自欧洲各国的IP,所以我这里禁止了所有非中文用户访问本页面

location = /wp-login.php {
  if ( $http_accept_language !~* zh){
    return 503;
  }
  fastcgi_pass unix:/tmp/php-cgi.sock;
  include fastcgi.conf;
}

设置好后可以用curl测试效果

curl -I -H "Accept-Language:en" https://blog.7xiaowu.cn/wp-login.php

3、针对2的补充,如果你的攻击来源主要是国内或者攻击者伪造浏览器语言可以增加鉴权
3.1、利用利用htpasswd创建鉴权文件

htpasswd -c /home/nginx/users.db username
#如果系统没有htpasswd 可以使用这个python版的https://gist.github.com/parhammmm/3775241
python htpasswd.py -b -c /home/nginx/users.db username password

3.2、配置nginx

location = /wp-login.php {
        auth_basic "Login";
        auth_basic_user_file /home/nginx/users.db;
        #下面这个是配置解析php文件,否则会变成下载php文件
        fastcgi_pass unix:/tmp/php-cgi.sock;
        #fastcgi_index index.php;
        include fastcgi.conf;
}

4、禁用xmlrpc.php访问,大多数人用不到这个,但是这个却可以被用来破解密码也可以被用来发动DDOS,曾经我也被用来破解导致宕机了,频率极高

location = /xmlrpc.php {
        return 404;
}

发表评论

电子邮件地址不会被公开。