凌晨3点17分,手机震动。
不是闹钟,是Bark告警推送。内容只有一行:【CRITICAL】异常登录告警 | 地区偏移 | IP: 45.33.xx.xx | 用户: admin | 偏移: 北京→洛杉矶
我迷迷糊糊点开,发现security-monitor已经自动做了三件事:
第一,封锁了该IP。第二,发送了Bark通知。第三,在日志里记录了完整的时间线。
而我只需要做一件事:确认这不是我自己。
背景:security-monitor是什么
security-monitor是部署在服务器上的一个守护进程,负责监控SSH登录日志、API访问日志、以及各类服务的认证记录。
监控维度包括:IP地理位置异常、登录时间异常、连续失败次数、User-Agent异常、API Key使用量突增。
检测到异常后,会根据严重程度自动处理:
INFO:记录到日志,Bark通知
WARNING:Bark通知 + 封禁IP(iptables)
CRITICAL:Bark + 封禁 + 发送邮件 + 触发webhook回调
凌晨3点发生了什么
事后的日志还原了完整经过:
[03:14:22] SSH登录失败 | user: root | ip: 45.33.xx.xx | attempts: 3
[03:14:45] SSH登录失败 | user: root | ip: 45.33.xx.xx | attempts: 6
[03:15:01] SSH登录失败 | user: root | ip: 45.33.xx.xx | attempts: 10 → 触发封禁
[03:15:03] 地理位置分析 | IP归属: 洛杉矶 | 时区: America/Los_Angeles
[03:15:03] 告警判定: CRITICAL | 原因: 异地登录 + 暴力破解
[03:15:03] Bark推送已发送
[03:15:04] iptables规则已添加: -A INPUT -s 45.33.xx.xx -j DROP
[03:17:11] 同一IP尝试访问 API endpoint /admin攻击者先尝试SSH暴力破解,失败后转向API后台。很典型的攻击路径。
技术踩坑
这个场景踩过一个坑:地理IP库不准。
之前用的是免费的GeoIP数据库,某次告警显示"北京→东京",实际上是北京办公室的VPN出口节点,IP库把出口节点判定成了东京。
解决方案:加入了白名单机制,信任的IP段不做地理位置告警。同时增加了"可信网络"配置,团队成员的家庭IP和VPN出口IP都可以加入白名单。
另一个坑:误封。某次CI机器的IP被判定为异常,触发了自动封禁,导致构建失败。后来加了"自动封禁冷却时间"——新IP首次触发WARNING只通知,不封禁;连续触发3次才封禁。
感悟
凌晨3点的告警,让我想起一个问题:监控的意义是什么?
不是为了第一时间响应,而是为了能在事后还原攻击路径,以及在无人值守时能自动止损。
security-monitor的价值不在于"告警",而在于"自动处置"。告警是给人类看的,处置是给机器看的。凌晨3点我最需要的不是知道被攻击了,而是攻击已经被阻止了。
安全感这种东西,有时候来自于知道"有人在帮我看着",哪怕那个"人"是一段Python脚本。
📮 订阅情报站:blog.eggtata.top | 发现内容有价值?点击订阅,不错过每一篇。
⚠️ 免责声明:本文由AI辅助创作,内容真实性已尽量核实,但不对完整性作保证,如有疏漏欢迎指正。
评论区