亚马逊AWS官方博客
使用 FortiGate 和 Amazon Lambda 自动隔离失陷主机
传统情况下,云上部署的第三方防火墙只能控制互联网方向或者 VPC 层面的流量,无法控制子网级别或者 EC2 之间的访问。一旦 EC2 被入侵或者植入病毒,又没有及时进行隔离,则很有可能波及同子网或同 VPC 的其他 EC2。通过本文您将了解到,如何使用与亚马逊云科技服务深度集成的 FortiGate 遇到此情况时可采取的操作:通过 Amazon Lambda 修改 EC2 的安全组实现免装 Agent 的 EC2“微隔离”,以免 EC2 中病毒或被控制后影响其他 EC2。
在本文中,除 FortiGate 外,我们会涉及如下亚马逊云科技服务:Amazon Lambda,Amazon API Gateway,Security Group。
在环境中,我们有两台部署在同一子网的业务 EC2 和一台 FortiGate 作为安全网关。现在我们先来创建一个修改安全组的 Lambda Function,命名为 ChangeSG,使用语言为 Python:
点击创建 Function 之后,我们需要调整 Lambda 的 Permission,如下图点击 Configuration:
在 Configuration 中找到 Permission 页签,会看到刚创建的 ChangeSG Lambda Role,点击这个 Role Name:
点击 Role Name 后会进入到 IAM 界面,进行 Permission 配置,点击 Policy Name 中的条目,并点击编辑就开始编辑 Role Policy 了。
在 Policy 中,增加如下代码段并保存:
之后回到 Lambda 配置页,代码页签,移除默认代码,替换为如下代码并如下图所示,并点击 Deploy 部署代码:
这样 Lambda 功能代码就完成了,下一步创建一个触发器来调用 Lambda:
触发器类型为 API Gateway,创建一个新 API,类型为 REST,安全方式为 API Key:
点击添加后,我们可以看到创建好的 API Gateway:
此时这个 API Gateway 是公共访问的,确保安全和隐私,且只能由 FortiGate 调用,我们需要调整这个 API Gateway 的访问设置,将 Endpoint Type 从默认的 Regional 调整为 Private,如下图所示:
保存后,我们进入 Resource Policy,添加如下代码:
注意,这里需要将上图红框中的 your 位置改为实际 region,account,API-ID 和 Endpoint-ID。之后,我们为 ChangeSG-API 创建一个 Usage Plan 并与该 API 进行关联,并创建一个 API Key:
创建好 Lambda 和 API Gateway 之后,我们回到 EC2 配置中,创建一个安全组配置,用来在出现安全事件时隔离失陷主机。
这里我们创建一个名为 sg_no_access 的安全组,并移除所有的 Inbound 和 outbound 规则,一旦这个安全组被调用关联,则该 EC2 将无法接收和发送任何流量。
下面我们到 FortiGate 中进行安全自动化的配置。假设的场景是一旦 FortiGate 检测到病毒,则调用 Lambda 变更 EC2 的安全组配置为 sg_no_access。
在 FortiGate 中,我们在左边栏的 Security Fabric-Automation 配置中,创建一个新的自动化插件:
自动化插件命名为 Change-SG,添加一个触发器(Virus Log)
为触发器添加一个执行动作,选择 AWS Lambda
在 AWS Lambda 中将相关的 API 配置信息(URL 和 Key)填入,并填写 HTTP Header:
Srcip:%%log.srcip%% // 产生日志的源 IP
Sgname:sg_no_access //调用 sg_no_access 安全组
创建好后我们在 Add Action 处选择 API-ChangeSG 并保存。
现在我们使用其中一台 EC2 测试连通性,并访问 eicar 下载一个病毒样本。可以看到可以访问,但是下载被阻断了。
我们到 FortiGate 中查看安全事件日志,可以看到该下载行为已被阻断:
并且,在自动化插件页面,我们看到 ChangeSG 被触发了一次。
我们回到 EC2 CLI 尝试对外访问:ping 8.8.8.8 和再次执行下载动作,发现均无响应。与此同时,我们使用同子网另一台 EC2 ping 该主机也无响应。符合安全组变更的预期效果。
最后,我们希望对相关事件通过 Teams 进行告警,在 Teams 中我们创建一个 Incoming Webhook,并在 FortiGate 上的 Change-SG 自动化插件中添加一个 Teams 通知动作,填写相关 Webhook 信息(URL 和 Message)。
我们通过另一台可以联网的 EC2 再次执行病毒下载动作后,在 Teams 中收到了相关告警。
通过本示例,可以看到 FortiGate 与亚马逊云科技服务的深度集成带来的安全自动化价值。可以为用户提供实时威胁防御与告警。用户可以为安全自动化添加更多触发条件,比如针对防火墙暴力破解的 IP 隔离,EC2 对外 DNS 请求安全监控与自动隔离,针对 EC2 的入侵检测与攻击 IP 自动阻断等等场景,都可以成为本实例的延展用例。
此外,您可以在亚马逊云科技 Marketplace 中订阅并采购 FortiGate:
BYOL(Graviton):FortiGate Next-Generation Firewall (ARM64/Graviton)
BYOL:FortiGate Next-Generation Firewall (BYOL)
PAYG:FortiGate Next-Generation Firewall (PAYG)