起因是之前为了完成云计算实验课作业,尝试跨云厂商部署k8s,建立集群时出现各种奇奇怪怪的问题后放了一星期不管,再次登录控制台发现硬盘塞满了。为了省事,干脆重装系统。由于docsify的功能实在有限,实在难以称为博客,那么这次就顺便体验一下建站应用WordPress。
初始化完毕WordPress,研究了一下云厂商提供的应用镜像的运作原理把ssl证书给加上后,我很快注意到博客的后台管理页面是通过80/443端口暴露在公网不受保护的。半年前被人植入挖矿脚本的经历仍记忆犹新,这种行为的风险性是不言而喻的,必须得到妥善处理。
通过咨询llm,我大致思考了几种方案:
- 修改nginx反代服务器配置,限制ip访问
- 安装WordPress安全性插件
- 给登录页面加reCAPTCHA验证码
我本想采用第一种方案,通过allow 跳板机ip(天翼云电脑网关)deny all将和管理员相关的资源限制访问,但实践后却发现不太行得通。这种做法最大的问题是我给网站套了cdn,并没有在dns面板将域名解析给服务器ip。也就是说服务器的直接的访问请求都是来自cdn节点,我的allow操作是无效的。
欸,那可不可以在防火墙模板中配置80/443端口仅允许cdn节点ip和跳板机ip登录呢?理论上可以,但我并不知道京东云的cdn节点列表,而cdn节点可能会随时变换。所以我的防火墙模板一直是对外开放80/443端口的。
向llm追问,ta给我提出了进阶方案:将子域名(如admin.isga05.cn)解析到服务器ip,同时并不在公共dns发布这条记录,而实通过修改hosts/私有DNS/VPN仅让受信任的主机获得。但实际测试我发现可能由于浏览器缓存等因素或者我的配置存在问题,面板的登录页面的确做到仅限跳板机ip访问了,但跳转到后台管理页面时大概率又给我变回用主域名去请求返回403 bad request了。而且随后我转念一想我并没有CA签发的子域名的证书,而我又不想花钱,用certbot又不满足使用条件(要求解析到服务器ip的记录)用http无异于掩耳盗铃,遂只好作罢。
最后想了想,还是选择强密码+WordPress插件。至于可靠性?看运气吧。只是这种方案千万不能忘记密码,随便输错几次就得等20分钟登录了。话说容器内部应该能登录数据库,但毕竟没有面板操作直观方便,改个密码学习成本有点大,还不如再重装一次呢。
至于SMTP服务器和加验证码,等下次有热情了再研究吧。
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。
这是一条测试评论😅