惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
小众软件
小众软件
博客园_首页
博客园 - 聂微东
V
V2EX
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
SegmentFault 最新的问题
J
Java Code Geeks
Last Week in AI
Last Week in AI
The Cloudflare Blog
月光博客
月光博客
雷峰网
雷峰网
宝玉的分享
宝玉的分享
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
博客园 - Franky
腾讯CDC
Jina AI
Jina AI
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
量子位
爱范儿
爱范儿
美团技术团队
T
Tailwind CSS Blog
博客园 - 【当耐特】
D
Docker
IT之家
IT之家
V
Visual Studio Blog
P
Proofpoint News Feed
L
LangChain Blog
Engineering at Meta
Engineering at Meta
C
Check Point Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
Recorded Future
Recorded Future

水拍石

AI的转变期终于来了 – 水拍石 错位 – 水拍石 癫狂 – 水拍石 第十章 超越主义之争:经济学与人类合作的未来 – 水拍石 第九章 算法、债务与新垄断:21世纪经济的新问题 – 水拍石 第八章 国家里面的市场:中国制内市场的历史逻辑 – 水拍石 第七章 资本主义的镜子:马克思主义的洞见与歧途 – 水拍石 第六章 交易为什么这么难:制度经济学与真实世界 – 水拍石 第五章 当所有人都不敢花钱:凯恩斯革命与现代国家的经济责任 – 水拍石 第四章 没有人掌握全部知识:奥地利学派与自发秩序 – 水拍石 第三章 看不见的手与看得见的贫困:古典政治经济学的展开与分裂 – 水拍石 第二章 国王的钱袋:重商主义、贸易与近代国家 – 水拍石 第一章 早晨的面包:经济秩序从哪里来 – 水拍石 序:在思想的长河中追寻经济的本质 – 水拍石 AI圆了我的写书梦 – 水拍石 情绪与自我激励 – 水拍石 心慌 – 水拍石 简单 – 水拍石 困局 – 水拍石 AI时代写高质量的原创文字更有意义 – 水拍石 AI给搓了一款wordpress主题nickel – 水拍石 他来了 – 水拍石 折腾 – 水拍石 摄影习作之2026年4月 – 水拍石 迷之自信 – 水拍石 不如狗 – 水拍石 马尔萨斯《人口原理》读后小记 – 水拍石 openclaw使用小记 – 水拍石 开封博物馆 – 水拍石 开封四日游 – 水拍石 图片压缩及打水印工具 – 水拍石 恐怖 – 水拍石 Ai与博客 – 水拍石 债务 – 水拍石 骨感 – 水拍石 养龙虾 – 水拍石 众菩萨 – 水拍石
给wordpress增加Basic Auth密码 – 水拍石
水拍石 · 2026-06-08 · via 水拍石

3634 字 47 评论

目录

  • 一、主题中修复简单薄弱点
  • 二、增加额外的验证方式
  • 三、最强的方案

最近几天博客一直被无聊的人扫描,尝试后台登陆及找回管理员密码。尽管博客没有什么有价值的东西,被攻破了也没有多大的损失,但这种扫描行为本身让人比较恶心,于是就想着增强下博客的安全性。

大的思路其实就三条,增加阿里云ESA的WAF和回源保护、wordpress的薄弱点加固、及增加额外的验证方式。阿里云ESA就不多说了,因为这个产品用的人可能不多,每家CDN的设置差异较大。下面主要集中在wordpress的薄弱点加固和增加额外的验证方式两方面总结下这次的经验。

一、主题中修复简单薄弱点

修复项 严重度 说明
统一登录错误消息 严重 无论用户名是否存在,一律返回“登录信息不正确”,防止攻击者通过错误提示枚举用户名
移除密码找回功能 严重 移除密码找回功能,以防无聊的人不断点击
增加登陆失败锁定 严重 随着登陆失败次数的增加不断增加锁定IP时长
增加登陆验证码 严重 将简单算数验证码改为图片显示的算数验证码,以增加机器识别的难度(需要OCR,会增加成本)
移除 WP 版本号 登录页+前端所有 CSS/JS 的 ver= 参数全部移除
移除 REST API Link 头 HTTP 响应头不再暴露 wp-json 端点
删除 readme.html 和 license.txt 这两个文件会暴露 WordPress 版本号
RSS Feed 隐藏作者名 Feed 中作者显示为“作者”而非真实昵称
移除 body class 主题名 不再暴露 wp-theme-nickel
移除登录页语言切换器 减少攻击面

二、增加额外的验证方式

增加额外的验证方式有两个思路,一个是增加2FA,就是类似于增加一个和手机端同步的动态密码,或邮件发送的6位数动态密码,从而形成wordpress的账户密码和动态密码的双重验证。另一个思路是增加一个nginx的Basic Auth密码,原理就是在访问登录页等敏感页面时会弹出一个登陆页面,只有通过了这个登陆页面才能看到真正的登录页。我最终选择了Basic Auth方案,原因有三个,一是2FA较复杂,因此插件普遍较重,我不想让网站加载这么多东西;二是除了登录页外/wp-admin/目录也需要保护,而轻量的2FA没有这个功能;三是Basic Auth完全由nginx处理,系统损耗最轻,即是被爆破小鸡也容易扛住。如果大家比较倾向于2FA方案,那么我推荐wp 2FA插件。

Basic Auth部署完后弹出的验证框如下,下面我贴上完整的部署步骤。

1、在nginx的配置文件中增加以下代码

记得要加在include enable-php-83.conf 之前,原因是正则 location 之间,先定义的优先。如果 enable-php-83.conf 中的 location ~ \.php$ 在前面,它就会抢先匹配 /wp-admin/index.php,auth_basic 就被绕过了。所以必须把 location ~ ^/wp-admin/.*\.php 放在它前面。

需要添加的代码如下:

============= ★ 新增:Basic Auth 保护 wp-admin 和 wp-login =============

# 1) 登录页加密(精确匹配,优先级最高,不被任何正则覆盖)

location = /wp-login.php {

auth_basic “Restricted”;

auth_basic_user_file /www/server/nginx/htpasswd/wp-auth;

try_files $uri =404;

fastcgi_pass unix:/tmp/php-cgi-83.sock;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

# 2) wp-admin 下 PHP 文件加密(正则,必须在 enable-php-83 之前定义)

location ~ ^/wp-admin/.*\.php(/|$) {

auth_basic “Restricted”;

auth_basic_user_file /www/server/nginx/htpasswd/wp-auth;

try_files $uri =404;

fastcgi_pass unix:/tmp/php-cgi-83.sock;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

# 3) 放行 admin-ajax.php(精确匹配,优先级高于上面的正则)

location = /wp-admin/admin-ajax.php {

auth_basic off;

try_files $uri =404;

fastcgi_pass unix:/tmp/php-cgi-83.sock;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

# ============= ★ Basic Auth 结束 =============

2、创建密码目录

mkdir -p /www/server/nginx/htpasswd

3、安装 htpasswd 工具

# CentOS / AlmaLinux / Rocky
yum install -y httpd-tools

# Ubuntu / Debian
apt install -y apache2-utils

4、创建密码文件和用户

# -c 表示创建新文件(首次使用)
# 替换 admin 为你想要的用户名
htpasswd -c /www/server/nginx/htpasswd/wp-auth admin

系统会提示输入两次密码:

New password: ********
Re-type new password: ********
Adding password for user admin

5、如果要添加第二个用户(可选)

# 注意:不要加 -c,否则会覆盖已有用户
htpasswd /www/server/nginx/htpasswd/wp-auth user2

6、验证密码文件

cat /www/server/nginx/htpasswd/wp-auth

应该看到类似输出(用户名:加密密码):

admin:$apr1$Xk7Zb2Qw$LmN3R4h5K6j7P8qRs9TtU0

7、设置文件权限

chown www:www /www/server/nginx/htpasswd/wp-auth
chmod 640 /www/server/nginx/htpasswd/wp-auth

8、检查 Nginx 语法并重载

nginx -t

看到 syntax is oktest is successful 后:

nginx -s reload

三、最强的方案

CDN端WAF+CDN源站保护(只有CDN节点能回源)+CDN端机器人拦截+网站加固+2FA+Basic Auth(作为简单替代,如果有固定IP的话,可以只允许自己的IP访问敏感页面)。但设置的规则越多,对于小站来说越麻烦,平时容易出错,搬迁时耗费的精力更多,所以如果没有被骚扰,那么CDN端WAF是最好的选择。

一直没有用过静态博客,是不是如果用了静态博客就没有了这些烦恼?

作为个人博客原本不用这么折腾的,但无奈蛋疼的人太多,总干这种损人不利己的事情,逼迫着不懂一点点技术的我也不得不花时间来学习这些网站维护知识。