Amazon GuardDuty 威胁检测实战:给 AI Agent 服务器加一道自动安全防线
引子
上周翻 CloudTrail 日志,发现跑 OpenClaw(AI Agent)的 EC2 实例凌晨 3 点被人暴力破解 SSH——847 次尝试,来自荷兰的一个 IP。
虽然我用密钥登录不怕被破,但这事暴露了一个问题:如果不主动翻日志,这种攻击永远不知道。
配了 Amazon GuardDuty 之后,这类威胁会自动检测、自动告警。本文记录完整的配置过程和实际效果。
GuardDuty 工作原理
Amazon GuardDuty 是亚马逊云科技提供的托管威胁检测服务。它持续分析三类日志数据:
1. CloudTrail 日志
记录了所有 AWS API 调用。GuardDuty 分析这些日志检测异常行为——比如某个 IAM 凭证突然从一个从没见过的 IP 地址、从没见过的地区发起了 API 调用。
2. VPC Flow Logs
记录了 VPC 内所有网络连接的元数据(源 IP、目标 IP、端口、协议、字节数)。GuardDuty 用这些数据检测端口扫描、与已知恶意 IP 的通信、加密货币挖矿连接等。
3. DNS 日志
记录了 VPC 内的 DNS 查询。GuardDuty 检测是否有解析到已知恶意域名、DGA(域名生成算法)生成的域名等。
这三类数据源给 GuardDuty 提供了完整的视角:谁调了什么 API(身份层)、谁和谁通信了(网络层)、解析了什么域名(DNS层)。
GuardDuty 在这些数据上运行威胁情报匹配 + 异常检测模型,输出结果叫 Finding。
AI Agent 服务器面临的真实威胁
运行 OpenClaw 或其他 AI Agent 的 EC2,面临的威胁不只是 Prompt Injection。网络层和账号层的攻击同样真实:
暴力破解
只要 EC2 有公网 IP + 开了 22 端口,扫描器几分钟就会找到。我那台 EC2 一周内收到了来自 12 个不同 IP 的暴力破解尝试。
GuardDuty Finding: UnauthorizedAccess:EC2/SSHBruteForce
凭证泄露
EC2 上的 IAM Role 临时凭证如果被窃取(比如 SSRF 攻击),攻击者可以用这些凭证调用 AWS 服务——包括 Amazon Bedrock。GuardDuty 能检测到凭证从 EC2 外部被使用。
Finding: UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS
加密货币挖矿
EC2 被植入矿机是常见攻击。GuardDuty 通过检测与矿池 IP 的通信来识别。
Finding: CryptoCurrency:EC2/BitcoinTool.B
Bedrock 异常使用
这是 AI Agent 场景特有的——GuardDuty 能检测到 Amazon Bedrock 的 AI 安全防护被异常移除、模型被异常调用等信号。如果有人偷了你的凭证去调大模型,GuardDuty 能发现。
配置步骤
Step 1:开启 GuardDuty
aws guardduty create-detector \
--enable \
--finding-publishing-frequency FIFTEEN_MINUTES
一行命令。FIFTEEN_MINUTES 表示 Finding 每 15 分钟推送一次(默认 6 小时太慢)。
Step 2:开启增强保护
DETECTOR_ID=$(aws guardduty list-detectors --query 'DetectorIds[0]' --output text)
# EBS 恶意软件扫描
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 Injection 攻击后启动了可疑进程(反弹 shell、下载脚本),Runtime Monitoring 能在操作系统层面捕获。
Step 3:配置告警通知
# 创建 SNS Topic
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 security@company.com
# EventBridge 规则:严重性 ≥ 7 才推送
aws events put-rule \
--name guardduty-high-severity \
--event-pattern '{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"],
"detail": {
"severity": [{"numeric": [">=", 7]}]
}
}'
aws events put-targets \
--rule guardduty-high-severity \
--targets '[{
"Id": "sns-target",
"Arn": "arn:aws:sns:us-west-2:123456789012:guardduty-alerts"
}]'
严重性阈值设 7 是因为低危的 Finding(端口扫描等)天天有,全推就是噪音。高危的(凭证泄露、挖矿、恶意通信)才需要立即响应。
Step 4:管理 Finding 和误报
# 列出高危 Finding
aws guardduty list-findings \
--detector-id $DETECTOR_ID \
--finding-criteria '{"Criterion":{"severity":{"Gte":7}}}' \
--sort-criteria '{"AttributeName":"severity","OrderBy":"DESC"}'
# 查看 Finding 详情
aws guardduty get-findings \
--detector-id $DETECTOR_ID \
--finding-ids '["finding-id"]'
# 标记误报
aws guardduty archive-findings \
--detector-id $DETECTOR_ID \
--finding-ids '["finding-id"]'
# 设置 Suppression Rule 过滤低优先级告警
aws guardduty create-filter \
--detector-id $DETECTOR_ID \
--name suppress-low-port-probes \
--action ARCHIVE \
--finding-criteria '{
"Criterion": {
"type": {"Eq": ["Recon:EC2/PortProbeUnprotectedPort"]},
"severity": {"Lt": 5}
}
}'
实际效果
开了 GuardDuty 一周后的发现:
| Finding | 严重性 | 详情 |
|---|---|---|
| SSH 暴力破解 | Medium | 荷兰 OVH 机房 IP,847 次/6小时 |
| 端口探测 | Low | 多个 IP 扫描 3389/8080/9090/6379 |
SSH 暴力破解虽然因为密钥登录不影响安全,但说明这台 EC2 已经被攻击者发现。如果后续有端口配置失误或服务暴露,风险就不一样了。
端口探测每天都有,设了 Suppression Rule 就不看了。
成本分析
| 数据源 | 计费 |
|---|---|
| CloudTrail 管理事件 | 免费 |
| VPC Flow Logs | ~$1/百万事件 |
| DNS 日志 | ~$1/百万查询 |
| EBS 恶意软件扫描 | 按扫描量 |
| Runtime Monitoring | 按 vCPU 小时 |
单台 EC2 跑 AI Agent:每月约 $3-10。前 30 天免费试用。
和 AI Agent 每天调 Amazon Bedrock 大模型的成本比,这个几乎可以忽略不计。
安全全链路
结合这个系列前几篇的内容,AI Agent 生产环境的云安全体系:
| 层面 | 服务 | 作用 |
|---|---|---|
| 身份权限 | IAM | 控制 Agent 能调什么 API |
| 网络隔离 | VPC Endpoint | Bedrock 流量不出公网 |
| 密钥管理 | Secrets Manager | API Key 不硬编码 |
| 操作审计 | CloudTrail | 全量记录谁做了什么 |
| 威胁检测 | GuardDuty | 自动发现异常和攻击 |
GuardDuty 是这个链路里的最后一环——前面 4 个是防御,GuardDuty 是检测。防御做得再好也不能保证万无一失,能及时发现异常才能及时止损。
以上配置在亚马逊云科技上验证通过。GuardDuty 提供 30 天免费试用期。

浙公网安备 33010602011771号