WordPress网站安装SSL证书及安全优化

WordPress网站安装SSL证书及安全优化

内容纲要

最近我的博客上线了,接下里我准备给它安装ssl证书。此外,我在网站的访问日志中,发现了大量恶意的请求,主要是尝试登录、尝试执行恶意脚本、获取敏感信息等。虽然WordPress核心总体来说已经足够安全,但是我还是决定禁用xmlrpc,隐藏后台登录入口,以提高网站的安全性。

安装免费的ssl证书-Let's Encrypt

Certbot是一个开源免费的工具,主要功能是为网站自动安装基于Let’s Encrypt服务的SSL证书。

  • 安装Certbot
apt install certbot
apt install python3-certbot-nginx
  • 验证网站所有权,生成证书文件
certbot certonly --nginx
# 或者让Certbot自动编辑您的nginx配置
# certbot --nginx 

默认生成证书的目录 /etc/letsencrypt/live/$domain/

  • 编辑nginx配置,手动配置证书
server {
    listen 80;
    server_name  kxler.com www.kxler.com;
    # http强制到https
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl default_server;

    server_name  kxler.com www.xkler.com;
    root /workspace/wordpress;

    # ssl证书
    ssl_certificate           /etc/letsencrypt/live/kxler.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/kxler.com/privkey.pem;
    ssl_session_timeout  30m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_session_cache shared:SSL:10m;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

    #以下省略...
}

重启nginx

# 测试配置是否正确
nginx -t
# 重启nginx
nginx -s reload

此时网站后台无法使用https域名登录,需要使用IP或http登录到wordpress后台,在设置>常规修改站点URL配置为https地址https://www.kxler.com

  • 关于自动续订

Let's Encrypt颁发的是短期证书(90 天),需要3个月内至少续订一次证书。

大多数Certbot安装都带有开箱即用的自动续订功能,Cerbot使用 certbot renew 完成自动续订,生成的续订定时任务在 /etc/cron.d/certbot

如果您仍不确定,可以按照官网手动配置自动续订。
Certbot自动续订

禁用xmlrpc.php

最近查看nginx访问日志,发现了大量关于xmlrpc.php的恶意请求。经查资料得知,XML-RPC是支持WordPress与其他系统之间通信的规范,如今已被REST API取代。所以决定禁用它。

禁用方式有很多种,这里选择修改nginx配置文件,在wordpress.conf配置中添加

# 务必加在 location ~ \.php${...} 前面的位置
location ~* ^/xmlrpc.php$ {
    return 403;
}

重启nginx

# 测试配置是否正确
nginx -t
# 重启nginx
nginx -s reload

隐藏登录入口

此外,在nginx访问日志,也发现了大量尝试登录的请求,这里直接修改登录入口,以提高安全性。

首先安装插件WPS Hide Login,然后在后台配置登录入口。

另外,如果觉得有必要还可安装限制登录频率的插件。

发表回复

您的电子邮箱地址不会被公开。