aws-samples/sample-accelerating-aws-network-firewall-troubleshooting-with-aws-devops-agent
GitHub: aws-samples/sample-accelerating-aws-network-firewall-troubleshooting-with-aws-devops-agent
该项目是一个基于 AWS CDK 的可部署示例,用于演示如何利用 AWS DevOps Agent 自动排查和加速恢复 AWS Network Firewall 引起的网络连通性故障。
Stars: 0 | Forks: 0
使用 AWS DevOps Agent 加速 AWS Network Firewall 故障排查
当管理员在 AWS Network Firewall 中引入规则更改并且网络连接中断时,要准确定位原因,需要检查流量路径中的多个节点。防火墙为您提供了无状态和有状态的规则引擎、域名规则,以及 Amazon Virtual Private Cloud (Amazon VPC) 内部指向防火墙端点的路由。无论从哪里开始,从工作负载的角度来看,网络中断的表现都是一样的。要查明原因,意味着需要将告警和流日志与防火墙配置、路由表以及 AWS CloudTrail 中可能修改了这些配置的近期 API 调用进行关联。这种手动关联正是 AWS DevOps Agent 的用武之地,它能加速根因分析,让您可以在几分钟而不是几小时内恢复连接。 AWS DevOps Agent 会为您完成这种关联。作为您随时可用的运维团队成员,它能够解决并主动预防跨 AWS、多云和本地环境的运维问题。当 Amazon CloudWatch 告警触发时,它会通过 webhook 到达 Agent。然后,Agent 会通过 AWS API 读取防火墙配置和日志,将数据丢弃与近期的 API 活动关联起来,并返回根因以及缓解计划供您在应用前进行审查。 这篇文章将 CloudWatch 监控与 DevOps Agent 连接起来。它从头到尾演示了三个 Network Firewall 故障。第一个是域名拒绝列表阻止了合法的端点。第二个是无状态规则优先级配置错误。第三个是跨可用区 (AZ) 的非对称路由丢弃。每一个都对应不同的网络层级,因此每一个都会引出不同的调查路径。一个 AWS Cloud Development Kit (AWS CDK) 应用程序会将整个环境部署在您自己的账户中,以便您可以重现每个故障并跟随操作。 ## 示例工作负载 作为此博客文章的一部分,我们提供了一个 CDK 堆栈,它同时部署了 AWS DevOps Agent Space 和一个用于演示三个独立故障排查场景的示例工作负载。受保护子网中的一个 `t3.micro` 实例会持续循环检查其与测试端点的连接,并将结果发布到 CloudWatch。流量通过 Network Firewall、NAT 网关和互联网网关经由互联网出口路径传输,以便防火墙可以拦截或丢弃它。完成此演练后,您可以使用 DevOps Agent 对您自己的 Network Firewall 部署应用相同的故障排查技术。 测试端点运行在由同一个 CDK 应用部署的一个独立 VPC 中。它在端口 443 上提供 HTTPS 服务,在端口 9142 上提供 TCP 服务,从而为每个场景提供了不同的协议层进行测试:场景 1 针对 443 上的 TLS 连接(通过 Server Name Indication 匹配),场景 2 针对 9142 上的 TCP 连接,场景 3 测试整个出口路径。 一个实时状态页面显示了每个场景的卡片以及网络拓扑。整个堆栈由单个 CDK 应用跨两个可用区部署,每个可用区都有一个防火墙端点和 NAT 网关,这正是场景 3 得以实现的基础。 如下图所示,出口数据路径从工作负载出发,通过 Network Firewall 以及 NAT 和互联网网关到达测试端点。告警管道从 CloudWatch 出发,通过 Amazon Simple Notification Service (Amazon SNS) 和 webhook AWS Lambda 函数到达 DevOps Agent。  *图 1:示例工作负载* 要将此解决方案用于您自己的工作负载,您需要一个能检测到连接问题的 CloudWatch 告警,以及将其交付给 DevOps Agent 的 webhook 管道(SNS 主题和 Lambda 函数)。Agent 会通过 AWS API 读取您的防火墙配置、日志和 CloudTrail,因此防火墙端无需额外的检测工具。 ## 前置条件 要跟随本文进行操作,您需要: - 一个 AWS 账户,且拥有部署 Amazon VPC、Network Firewall、Amazon Elastic Compute Cloud (Amazon EC2)、CloudWatch、Amazon SNS、Lambda、Amazon CloudFront 和 AWS Identity and Access Management (IAM) 资源的权限 - 访问 AWS DevOps Agent 的权限,并拥有配置其 webhook 的权限 - 已安装 Node.js 18 或更高版本以及 npm - 已配置好带有凭证的 AWS Command Line Interface (AWS CLI) 2.x - 需要 AWS CDK 2.x。您可以通过项目的 `npx` 依赖项来使用它,或者全局安装它: npm install -g aws-cdk ## 部署示例工作负载 克隆项目并使用一个命令将其部署到 `us-east-1`(设置 `awsRegion` 以使用其他 AWS 区域)。 ``` git clone https://github.com/aws-samples/sample-accelerating-aws-network-firewall-troubleshooting-with-aws-devops-agent cd sample-accelerating-aws-network-firewall-troubleshooting-with-aws-devops-agent bash scripts/deploy.sh ``` 该脚本会检查前置条件,安装依赖项,进行编译和测试,并在需要时引导 CDK。然后,它将从干净的基线部署所有堆栈,并打印输出,包括状态页面的 URL 和登录详细信息。 1. 打开状态页面链接(一个 `https://标签:AWS CDK, MITM代理, 故障排查, 网络防火墙, 自动化攻击, 自动化运维