你可曾碰到过这般状况:运行着AI Agent的EC2服务器,公网IP已然开启,然而却全然不知它正被互联网上的扫描器疯狂地进行试探?有位开发者,在翻阅CloudTrail日志的时候,着实吓了一跳——凌晨3点,他的服务器出现了847次SSH登录失败记录,全部都是暴力破解的尝试。不翻阅日志就什么都不知道,可是天天去翻阅日志又不太实际。这揭示了一个关键问题:AI Agent服务器的安全威胁,需要自动化的检测手段。
每一台具备公网 IP 的 EC2 实例,自启动之时起便会沦为自动化扫描工具的目标,这些扫描器于 24 小时里不间断于 IPv4 地址空间展开随机探测,寻觅开放了 22 端口(SSH)、3389 端口(RDP)或者其他常见端口的服务器,对于运行 AI Agent 的服务器而言,风险尤为高,因为 Agent 常常需调用各类 API、拉取模型、处理外部输入,攻击面相较于普通 Web 服务器更大。
按照Shodan搜索引擎给出的数据来看,全球范围内有超出400万台设备暴露在了SSH端口之上,其中有相当一大部分是云服务器。攻击者会使用弱口令字典、已知漏洞,甚至零日漏洞去展开尝试。一旦成功实施入侵行为,服务器有可能被植入挖矿程序,会变成僵尸网络节点,或者被用于攻击其他系统。而AI Agent所特有的风险在于,要是Agent本身存在Prompt注入漏洞,攻击者就有可能凭借恶意输入使得Agent执行危险命令。
Amazon GuardDuty是由亚马逊云科技所提供的那一项托管威胁检测服务,其核心价值在于,你无需于EC2之上安装任一Agent,并且也无需手动去配置繁杂的检测规则,它就能够自动地分析云环境里的各类日志数据,GuardDuty会持续地监控CloudTrail(API调用日志)、VPC Flow Logs(网络流量日志)以及DNS查询日志,借助威胁情报以及机器学习算法来识别异常行为。
GuardDuty一旦察觉到可疑活动,便会生成一个Finding也就是告警,还会依据严重程度进行分级是1到10分。比如说,源自已知恶意IP的SSH爆破去尝试,就会被标记成UnauthorizedAccess:EC2/SHBruteForce,然而端口扫描会被标记成Recon:EC2/PortProbeUnprotectedPort。这些查找结果,会借助事件桥梁推送到你所指定的目标处,举个例子来说,像是社交网络服务邮件通知、拉姆达函数或可扩展的实时协作平台频道。
对于运行AI Agent的EC2服务器而言,GuardDuty涵盖了多个关键威胁情形。SSH/RDP暴力破解属极为常见的攻击类别,攻击者借由持续尝试用户名与密码组合以获取访问权限。端口扫描探测乃是攻击的前期征兆,扫描器于寻觅你所开放的服务端口。IAM凭证泄露是更为危险的状况,一旦攻击者获取了EC2绑定的IAM角色的临时凭证,便能够从外部调用AWS API,甚至启动全新资源。
对于AI Agent所特有的风险,GuardDuty也给出了专门的检测。要是你的Agent呼叫了Amazon Bedrock (托管大模型服务),GuardDuty能够检测出异常的模型调用举动,诸如短时间里大量呼叫成本高昂的模型,又或者试图去除AI安全防护配置。加密货币挖矿检测可以发觉服务器CPU异常增高、连接已知矿池的行为。恶意出站通信,能够识别Agent服务器,与C&C服务器,也就是命令与控制服务器 ,建立连接,而这常常意味着服务器,已被植入后门。
aws guardduty create-detector --enable --finding-publishing-frequency FIFTEEN_MINUTES
在AWS平台开启GuardDuty这件事是简单的事儿没错在AWS CLI命令的协助下就能够完成,得在AWS控制台要么是命令行里进入GuardDuty服务接着点击“启用”按钮,关键配置项是Finding的发布频率默认是每6小时发布一次这个频率太慢了建议调整为15分钟,要在控制台那边的“检测频率”的装置里选择“15分钟”选项如此这般就能在攻击发生之后一刻钟时间内收到告警。
DETECTOR_ID=$(aws guardduty list-detectors --query 'DetectorIds[0]' --output text)
# EBS 恶意软件扫描
# EC2 被入侵时,自动扫描 EBS 卷找恶意文件
aws guardduty update-detector \
--detector-id $DETECTOR_ID \
--features '[{"Name":"EBS_MALWARE_PROTECTION","Status":"ENABLED"}]'
# Runtime Monitoring
# 在 EC2 上部署轻量 Agent,监控进程/文件/网络行为
aws guardduty update-detector \
--detector-id $DETECTOR_ID \
--features '[{"Name":"RUNTIME_MONITORING","Status":"ENABLED","AdditionalConfiguration":[{"Name":"EC2_AGENT_MANAGEMENT","Status":"ENABLED"}]}]'
GuardDuty开启后,会自动对你账号之中所有区域的CloudTrail管理事件、VPC Flow Logs以及DNS日志展开分析,整个进程无需任何手动配置,也不必重启EC2实例或者安装额外软件,对于已经运行了一段时间的账号而言,GuardDuty还会回溯剖析过去7至14天的日志数据,找出先前有可能被忽略的威胁。
# 创建 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 ops-team@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]}]
}
}'
# 绑定 SNS Target
aws events put-targets \
--rule guardduty-high-severity \
--targets '[{"Id":"sns-target","Arn":"arn:aws:sns:us-west-2:123456789012:guardduty-alerts"}]'
基础版本的GuardDuty就已然能够对大部分网络层以及账号层的威胁予以覆盖,然而针对AI Agent服务器而言,建议开启若干增强模块。Runtime Monitoring(运行时监控)乃是最具价值的其中一个,它会于EC2实例的操作系统层面实施进程行为监控。要是攻击者借助Prompt注入致使Agent执行了反弹shell命令,或者下载了恶意脚本,又或者尝试进行提权,Runtime Monitoring能够在进程创建的那一瞬间捕捉到这一行为。
开启Runtime Monitoring,需在每个EC2实例上安装SSM Agent,大多数Amazon Linux和Ubuntu AMI已预装此软件,还要在GuardDuty控制台中为对应的实例启用该功能。EBS恶意软件扫描是另一个有用的增强模块,GuardDuty发现可疑文件时,能自动触发对EBS卷的快照扫描,检测有无已知的恶意软件特征码。这些增强功能会引发额外费用,不过,相较于AI Agent每日调用大模型的成本而言,几乎能够被忽略。
# 查看高危 Finding
aws guardduty list-findings \
--detector-id $DETECTOR_ID \
--finding-criteria '{"Criterion":{"severity":{"Gte":7}}}' \
--sort-criteria '{"AttributeName":"severity","OrderBy":"DESC"}'
# 查看详情
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-port-probes \
--action ARCHIVE \
--finding-criteria '{
"Criterion": {
"type": {"Eq": ["Recon:EC2/PortProbeUnprotectedPort"]},
"severity": {"Lt": 5}
}
}'
来源 IP: 185.xxx.xxx.xxx(荷兰,OVH 机房)
目标端口: 22
尝试次数: 847 次 / 6 小时
发觉了那种构成威胁之物然而却没有任何人知晓这一情况,就等同于未曾进行检测。你必须去开展配置告警推送方面的操作,以便能够切实使得GuardDuty的Finding可以主动地向你发出通知。最为经常被使用的方案是借助EventBridge(事件总线)规则,挑选出严重程度大于或者等于7的Finding,接着把它发送至SNS主题。SNS随后经由邮件、短信或者HTTP端点转而推送给专门负责运维的人员。具体这样来进行配置步骤,首先要创建一个EventBridge规则,接着事件源要选择“GuardDuty”,然后事件类型得选择“GuardDuty Finding”,之后还要添加过滤条件“detail.severity >= 7”,最后目标要选择SNS主题。
被探测端口: 3389(RDP), 8080, 9090, 6379(Redis)
来源: 多个不同 IP
一周实际运行过后,你或许会见到多种Finding。SSH暴力破解,其严重程度为中等,端口扫描,严重程度较低,几乎每日都会出现。针对端口扫描这类低价值告警,你能够于GuardDuty控制台设置Suppression Rule,也就是抑制规则,以使特定IP或者特定类型的Finding不再产生告警。然而对于凭证泄露、挖矿程序、恶意出站连接等高危Finding,务必要配置实时告警。牢记着,哪怕你运用的是密钥登录方式,SSH暴力破解这种情况的存在,本身就表明你的服务器已然被攻击者给盯上了,任何一个端口,或者配置方面出现的失误,都极有可能酿成严重灾祸。
GuardDuty的费用由你所启用的检测源以及所分析的数据量来决定,CloudTrail管理事件分析是免费的,然而非管理事件像S3(GetObject)、Lambda(Invoke)这类是要付费的,VPC Flow Logs分析依照每百万个事件大概1美元来计费,DNS日志分析同样是以大约1美元每百万次查询来计费的。一台运行AI Agent的t3.medium实例,在每月当中,所产生的VPC Flow Logs日志数量,通常是在几百万条以内,对应费用是2到5美元,一台运行AI Agent的t4g.small实例,每月产生的DNS日志,通常也是在几百万条以内,对应费用同样是2到5美元。
运行时监测是按照vCPU小时来计费的,对于单台具备2个vCPU的实例而言,每个月大概是3到5美元左右。弹性块存储的恶意软件扫描是依据扫描次数来收取费用的。从整体方面来审视,一台人工智能代理服务器的GuardDuty总的成本大概处在每月3到20美元这个范围之内。此项费用跟人工智能代理每天调用克劳德、GPT或者Llama大模型的应用程序编程接口的费用相比较,几乎是能够忽略不计的了。除此之外,亚马逊网络服务提供30天的免费试用机会,你能够先启动试用去评估效果。
是不是你的AI Agent服务器正处于被扫描的状态,有没有去思考过今晚凌晨3点的时候,又会有多少IP在试着破解你的SSH,欢迎于评论区去分享你的经历,要不然点赞转发以便让更多AI Agent开发者能够看到这篇安全指南。
