开了 GuardDuty 一周,发现 EC2 被人暴力破解 SSH 了
跑 OpenClaw 龙虾的 EC2 服务器,凌晨 3 点收到了一堆 SSH 登录失败记录。
这事我完全不知道。是翻 CloudTrail 日志时偶然看到的------有人拿暴力破解工具在试密码。虽然我用密钥登录(密码早关了),但问题是,如果不翻日志,这种事永远不会知道。
后来配了 Amazon GuardDuty,开启后它帮我自动检测各种威胁:暴力破解、异常 API 调用、恶意出站流量,都能发现并告警。
这篇记录一下怎么给 AI Agent 服务器配 GuardDuty,以及实际开了之后发现了什么。
GuardDuty 干嘛的
Amazon GuardDuty 是亚马逊云科技的托管威胁检测服务。
它分析三种数据源:
- CloudTrail 日志:哪个 IP 调了什么 API(比如凌晨从陌生 IP 调了 Bedrock)
- VPC Flow Logs:哪台机器和哪个 IP 通信了(比如和矿池 IP 建了连接)
- DNS 日志:解析了什么域名(比如解析了已知恶意域名)
不需要装 Agent,不需要写规则,开了就自动跑。内置威胁情报 + 机器学习模型,把发现的可疑行为输出为 Finding(告警)。
跑 AI Agent 的 EC2 面临什么威胁
说实话,我之前觉得"就一台 EC2 跑跑 OpenClaw,谁会盯上我"。
实际情况是------互联网上的自动扫描器 24 小时在跑,只要你的 EC2 有公网 IP,就会被扫到。
GuardDuty 能帮你检测的典型场景:
| 威胁 | 说明 | GuardDuty Finding 类型 |
|---|---|---|
| SSH 暴力破解 | 有人在试你的密码 | UnauthorizedAccess:EC2/SSHBruteForce |
| 端口扫描 | 扫描器在探测你的开放端口 | Recon:EC2/PortProbeUnprotectedPort |
| 凭证被盗用 | IAM 密钥从异常位置被使用 | UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration |
| 挖矿 | EC2 被植入矿机 | CryptoCurrency:EC2/BitcoinTool.B |
| 恶意出站 | 和 C&C 服务器通信 | Trojan:EC2/BlackholeTraffic |
| Bedrock 异常 | AI 安全防护被移除、模型被盗用 | Bedrock 相关 Finding |
最后一条重要------GuardDuty 能检测 Amazon Bedrock 相关的异常行为。如果有人偷了你的 IAM 凭证去调大模型(花你的钱),或者 AI 安全防护被异常移除,GuardDuty 都能发现。
一行命令开启
bash
aws guardduty create-detector --enable --finding-publishing-frequency FIFTEEN_MINUTES
FIFTEEN_MINUTES 是告警发布频率(默认 6 小时,太慢了)。
开了之后不需要其他配置。GuardDuty 会自动分析你账号下的 CloudTrail、VPC Flow Logs、DNS 日志。
开额外保护模块
GuardDuty 有几个可选的增强模块,建议都开上:
bash
# 先拿 detector ID
DETECTOR_ID=$(aws guardduty list-detectors --query 'DetectorIds[0]' --output text)
# EBS 恶意软件扫描------EC2 被入侵后自动扫描磁盘
aws guardduty update-detector \
--detector-id $DETECTOR_ID \
--features '[{"Name":"EBS_MALWARE_PROTECTION","Status":"ENABLED"}]'
# Runtime Monitoring------监控 EC2 上的进程/文件/网络行为
aws guardduty update-detector \
--detector-id $DETECTOR_ID \
--features '[{"Name":"RUNTIME_MONITORING","Status":"ENABLED","AdditionalConfiguration":[{"Name":"EC2_AGENT_MANAGEMENT","Status":"ENABLED"}]}]'
Runtime Monitoring 会在 EC2 上自动部署一个轻量级 Agent,监控运行时行为。如果 AI Agent 被 Prompt 注入后执行了可疑命令(比如反弹 shell),Runtime Monitoring 能抓到。
配告警推送
GuardDuty 发现威胁后生成 Finding,但你得配通知才能收到。
EventBridge + SNS
bash
# 创建通知主题
aws sns create-topic --name guardduty-alerts
aws sns subscribe \
--topic-arn arn:aws:sns:us-west-2:123456789012:guardduty-alerts \
--protocol email \
--notification-endpoint your@email.com
# EventBridge 规则:只推送严重性 ≥ 7 的高危告警
aws events put-rule \
--name guardduty-high-severity \
--event-pattern '{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"],
"detail": {
"severity": [{"numeric": [">=", 7]}]
}
}'
# 关联 SNS
aws events put-targets \
--rule guardduty-high-severity \
--targets '[{"Id":"sns-target","Arn":"arn:aws:sns:us-west-2:123456789012:guardduty-alerts"}]'
为什么只推 ≥ 7?因为低危的(端口扫描之类的)天天都有,推了也是噪音。高危的才需要立即处理。低危的每天汇总看就行。
我实际收到的 Finding
开了 GuardDuty 一周,实际收到这些:
1. SSH 暴力破解(严重性 Medium)
yaml
Finding Type: UnauthorizedAccess:EC2/SSHBruteForce
Description: EC2 instance is being probed with SSH brute force attacks
Actor: 185.xxx.xxx.xxx (Netherlands, ISP: OVH)
Target Port: 22
Count: 847 attempts in 6 hours
847 次尝试,来自荷兰的 IP。如果我用的是弱密码,早被破了。
2. 端口扫描(严重性 Low)
yaml
Finding Type: Recon:EC2/PortProbeUnprotectedPort
Description: Unprotected port on EC2 instance is being probed
Probed Ports: 3389, 8080, 9090, 6379
扫描器在试 RDP、常见 Web 端口、Redis 端口。好在安全组只开了 22 和 443。
3. DNS 异常查询(严重性 Info)
这个是误报------GuardDuty 把一些正常的 DNS 查询标记了。可以设 Suppression Rule 过滤掉。
查看和管理 Finding
bash
# 列出最近的 Finding
aws guardduty list-findings \
--detector-id $DETECTOR_ID \
--finding-criteria '{
"Criterion": {
"severity": {"Gte": 4}
}
}' \
--sort-criteria '{"AttributeName":"severity","OrderBy":"DESC"}'
# 查看 Finding 详情
aws guardduty get-findings \
--detector-id $DETECTOR_ID \
--finding-ids '["finding-id-here"]'
# 标记误报(Archive)
aws guardduty archive-findings \
--detector-id $DETECTOR_ID \
--finding-ids '["finding-id-here"]'
# 设置 Suppression Rule(过滤噪音)
aws guardduty create-filter \
--detector-id $DETECTOR_ID \
--name "suppress-low-severity" \
--action ARCHIVE \
--finding-criteria '{
"Criterion": {
"severity": {"Lt": 4}
}
}'
成本
| 数据源 | 大概费用 |
|---|---|
| CloudTrail 管理事件 | 免费(已包含) |
| VPC Flow Logs 分析 | 每百万事件约 $1 |
| DNS 日志 | 每百万查询约 $1 |
| EBS 扫描 | 按扫描量 |
| Runtime Monitoring | 按 vCPU 小时 |
单台 EC2 跑 AI Agent 的场景:每月大约 $3-10。和 OpenClaw 龙虾每天调 Bedrock 大模型的花费比,这个几乎可以忽略。
前 30 天免费试用,建议先开了看看。
小结
给 AI Agent 服务器开 GuardDuty,解决的核心问题是------被攻击了你能知道。
不开 GuardDuty 的情况下:SSH 被暴力破解、凭证被盗用、EC2 被植入矿机------除非你天天翻日志,否则可能过了几周才发现(或者账单暴涨了才发现)。
开了之后,高危事件 15 分钟内推送到你手机。
配合前面几篇的 IAM 权限控制、VPC Endpoint 网络隔离、Secrets Manager 密钥管理、CloudTrail 审计日志,GuardDuty 补上了自动检测这一环。
一行命令的事,没理由不开。
以上配置在亚马逊云科技上验证。GuardDuty 提供 30 天免费试用。