WordPress 暴力破解防护完全指南|安全加固与恶意登录拦截
暴力破解集中攻击:wp-login.php、xmlrpc.php,分5 层防护,从易到难部署,全部适配 Ubuntu26.04+Nginx 环境。
一、基础账号加固(必做,源头防护)
1. 删除默认管理员 admin
- 后台新建全新管理员用户名(禁止 admin、root、test、site)
- 登录新账号,删除原
admin账号、数据并入新用户
2. 高强度密码
≥16 位:大小写 + 数字 + 特殊符号,杜绝生日、手机号、域名;
插件:Force Strong Passwords强制全站用户强密码。
3. 开启 2FA 两步验证(最有效)
即使密码泄露也无法登录
- 推荐插件:Wordfence Login Security / WP 2FA,TOTP 谷歌验证器
- 强制所有编辑 / 管理员开启 2FA,普通用户可选开启。
二、WP 插件层防护(最快落地,新手首选)
方案 1:限制登录失败次数(拦截高频猜密码)
Limit Login Attempts Reloaded(免费)
设置参数:
- 失败 3 次→临时封禁 IP 30 分钟
- 累计 5 次封禁→永久拉黑 IP
- 白名单填入自己办公固定 IP,不受限制。
方案 2:修改默认登录地址,隐藏 /wp-admin
插件:WPS Hide Login
自定义登录:xxx.com/my-admin-2026,原/wp-login.php、/wp-admin直接 404,爬虫找不到登录页。
方案 3:禁用 XML-RPC(爆破重灾区,不用 APP/Jetpack 务必关闭)
xmlrpc 支持单请求批量几百次密码尝试,绕过登录限制
- 插件关闭:Wordfence 一键禁用 XML-RPC
- 代码禁用(functions.php)
add_filter('xmlrpc_enabled','__return_false');
- Nginx 直接拦截(下文配置)
全能安全插件(一站式 WAF)
Wordfence Security(免费够用)
开启:防爆破、恶意 IP 拦截、恶意扫描拦截、漏洞扫描、登录异常邮件提醒。
三、Nginx 服务器层防护(Ubuntu,底层拦截,优先于 WP 运行)
编辑站点配置/etc/nginx/sites-available/域名.conf,写入 server {} 内,nginx -t && systemctl reload nginx生效。
1. IP 白名单锁死后台(固定 IP 建站最优,外人无法访问登录)
# 仅允许自己IP访问登录与后台
location = /wp-login.php {
allow 你的公网IP;
deny all;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ^~ /wp-admin/ {
allow 你的公网IP;
deny all;
# 前台AJAX放行
location = /wp-admin/admin-ajax.php {allow all;}
try_files $uri $uri/ /index.php?$query_string;
}
2. 直接屏蔽 xmlrpc.php
location = /xmlrpc.php {
deny all;
return 444; # 丢弃连接,不返回页面
}
3. 对 wp-login 请求限流,防高频爆破
nginx 全局 http 段添加:
limit_req_zone $binary_remote_addr zone=wplogin:10m rate=2r/m;
站点 server 添加:
location ~ /wp-login.php {
limit_req zone=wplogin burst=2 nodelay;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
限制单个 IP 每分钟最多 2 次登录请求,卡死批量爬虫。
四、系统 Fail2ban 封禁(Ubuntu 服务器级自动拉黑恶意 IP)
1. 安装
sudo apt update && sudo apt install fail2ban -y
2. WP 日志对接:安装 WP Fail2ban 插件(WP 后台),登录失败写入系统 syslog
3. 添加规则
sudo vim /etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = .*Authentication failure for.*from <HOST>
ignoreregex =
sudo vim /etc/fail2ban/jail.local
[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/syslog
maxretry = 4
bantime = 3600
findtime = 300
sudo systemctl restart fail2ban
4 次失败→自动拉黑 IP1 小时,服务器底层拦截,绕不开。
五、CDN 云端防护(Cloudflare,在外网就拦截攻击,不进源站)
- CF→安全→WAF 规则:拦截
uri contains wp-login.php高频访问 - CF→安全→速率限制:单 IP1 分钟 > 10 次登录直接封禁
- 开启 CF 机器人防护,自动拦截爬虫爆破 IP
六、可选进阶配置
- 隐藏 WP 版本:删除源码版本号,防止漏洞针对性扫描
- 禁止直接访问 wp-config.php:Nginx 拦截
location ~* wp-config.php {deny all;}
- 定期更新 WP 内核、主题、插件,漏洞是间接入侵入口
最简落地优先级(3 步快速搞定)
- 改管理员账号 + 2FA 两步验证
- Nginx 屏蔽 xmlrpc + 登录限流
- Limit Login Attempts 限制 3 次失败锁 IP