一次阿里云 ECS 异地登录误报排查与顺手加固
630 字
3 分钟
一次阿里云 ECS 异地登录误报排查与顺手加固
凌晨的告警
某天凌晨,阿里云发来异地登录告警:来自 美国弗吉尼亚 的 IP 以 root 身份 SSH 登录了 8 次。
第一反应:密钥泄露了。
排查过程
登录日志分析
# 追踪特定 IPgrep 'xx.xx.xx.xx' /var/log/secure
# 爆破统计grep 'Failed password' /var/log/secure | \ awk '{print $(NF-3)}' | sort | uniq -c | sort -rn
# 最近登录记录last -20发现模式重复
为了验证,手动触发了一次 CI/CD 部署,服务器再次出现完全相同的连接模式:
| 对比项 | 第一次(被报警) | 手动触发 |
|---|---|---|
| 连接 IP | 美国 Azure | 美国 Azure |
| 连接次数 | 8 次 | 8 次 |
| 连接模式 | 22 秒内多端口并发 | 22 秒内多端口并发 |
| 部署结果 | - | 成功 ✅ |
模式完全一致——原来是 GitHub Actions 的 runner 跑在 Azure 基础设施上,SCP 上传时建立多个 SSH 并发连接(分片传输),被阿里云异地登录检测误报了。
顺手发现真实攻击
在同一份日志中发现了来自另一个 IP 的 287 次 SSH 密码爆破尝试,持续 14 分钟,全部失败。
# 封禁爆破 IPiptables -A INPUT -s xx.xx.xx.xx -j DROP安全加固清单
趁这个机会完成了一次完整的安全加固:
| 措施 | 说明 |
|---|---|
| 关闭 SSH 密码登录 | PasswordAuthentication no,只允许密钥登录 |
| 安装 fail2ban | 5 次失败自动封禁 24 小时 |
| 更换 SSH 密钥 | 旧密钥作废,更换新密钥对 |
| 更新 CI/CD Secrets | 替换为新私钥 |
| 封禁爆破 IP | iptables DROP |
| 解封 CI/CD IP | 确认为 GitHub Actions,从黑名单移除 |
后门排查
确认是误报后,还是彻底检查了一遍系统:
- 当前运行进程 → 无异常
- systemd 服务 → 无新增服务
- crontab / 定时任务 → 无后门
- 系统用户 → 只有必要的系统用户
authorized_keys→ 清理到只剩 2 个必要密钥- Docker 容器 → 无异常
- 系统文件完整性(
rpm -Va)→ 无篡改 - 监听端口 → 仅 22(SSH) + 80(nginx)
/tmp、/dev/shm→ 无可疑文件
总结
虚惊一场——所谓的”攻击”是 GitHub Actions CI/CD 的正常 SCP 上传行为,因 runner 位于美国 Azure 区域被阿里云异地登录检测误报。但借着这次误报完成了一次系统安全加固,也算是有惊无险的收获。
建议:如果你也用 GitHub Actions 部署到国内云服务器,收到异地登录告警时先确认是不是 CI runner 的连接,别急着封 IP。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
一次阿里云 ECS 异地登录误报排查与顺手加固
https://www.sanyablog.cn/posts/aliyun-ecs-login-alert-investigation/相关文章智能推荐
1
博客 AI 助手“无回复”根因:反代网关地址缓存过期导致 502
技术实践博客 AI 助手无回复的排查经历:根因是 Nginx 反代对后端容器名解析出旧地址导致 502;通过容器内 DNS + 变量转发,让网关每次请求重新解析后端容器地址实现自愈。
2
让博客文章携带可下载文件:随文附件功能实现记录
博客搭建给静态博客加上随文附件下载功能:附件不随整站部署,单独上传到服务器专用目录,正文用超链接即可下载;记录了重试兜底、只读挂载点踩坑与下载限流。
3
mdoc 定制化工具包:把修复文档管理系统搬到新机器
工具搭建一套便携部署工具包,在新机器上重建定制化的修复文档管理系统:技能、子代理、CLI 与配置模板全部就绪,按配置清单填好路径即可获得同等功能,附带 Claude Code 用法与 AI 部署教程。
4
mdoc 重构:从 Claude Code skill 到任意目录可解析的 CLI 工具库
工具搭建把 /mdoc 个人 skill 重构为 core+CLI 分层、打包分发,再到 0.1.1 版本支持任意目录解析文档库的完整过程:架构决策、阶段迁移、验收踩坑与配置解析优先级定稿
5
Coze 聊天窗 z-index 与 Swup 切页适配修复
技术实践Coze 聊天窗接入 Swup SPA 切页遇到的三个坑:z-index 层级被遮挡、切页后悬浮球消失、SDK 注入样式被 SwupHeadPlugin 清空
随机文章随机推荐













