VPC 및 서브넷에 대한 퍼블릭 액세스 차단
VPC 퍼블릭 액세스 차단(BPA)은 전체 AWS 계정에서 권한을 사용하여 VPC 리소스에 대한 퍼블릭 인터넷 액세스를 차단할 수 있는 중앙 집중식 보안 기능으로, 보안 요구 사항을 준수하는 동시에 특정 예외 및 감사 기능에 대한 유연성을 제공합니다.
VPC BPA 기능에는 다음과 같은 모드가 있습니다.
-
양방향: 이 리전의 인터넷 게이트웨이 및 송신 전용 인터넷 게이트웨이(제외된 VPC 및 서브넷 제외)를 오가는 모든 트래픽이 차단됩니다.
-
수신 전용: 이 리전의 VPC에 대한 모든 인터넷 트래픽(제외된 VPC 또는 서브넷 제외)이 차단됩니다. NAT 게이트웨이 및 송신 전용 인터넷 게이트웨이를 오가는 트래픽만 허용되는데, 이러한 게이트웨이는 아웃바운드 연결만 설정되도록 허용하기 때문입니다.
차단하지 않으려는 트래픽에 대해서는 이 기능의 "제외 항목"을 생성할 수도 있습니다. 제외 항목은 계정의 BPA 모드에서 제외하고 양방향 또는 송신 전용 액세스를 허용하는 단일 VPC 또는 서브넷에 적용할 수 있는 모드입니다.
제외 항목에는 다음 모드 중 하나를 사용할 수 있습니다.
BPA 기본 사항
이 섹션에서는 VPC BPA를 지원하는 서비스와 이를 사용하는 방법을 포함하여 VPC BPA에 대한 중요한 세부 정보를 다룹니다.
리전별 가용성
VPC BPA는 GovCloud 및 중국 리전을 포함한 모든 상용 AWS 리전에서 사용할 수 있습니다.
이 설명서에서는 VPC BPA와 함께 Network Access Analyzer 및 Reachability Analyzer를 사용하는 방법에 대한 정보도 확인할 수 있습니다. Network Access Analyzer 및 Reachability Analyzer는 일부 상용 리전에서 사용할 수 없습니다. Network Access Analyzer 및 Reachability Analyzer의 리전별 가용성에 대한 자세한 내용은 Network Access Analyzer 설명서의 제한 사항 및 Reachability Analyzer 설명서의 고려 사항을 참조하세요.
AWS 서비스 영향 및 지원
다음 리소스 및 서비스는 VPC BPA를 지원하며 이러한 서비스 및 리소스로의 트래픽은 VPC BPA의 영향을 받습니다.
인터넷 게이트웨이: 모든 인바운드 및 아웃바운드 트래픽이 차단됩니다.
송신 전용 인터넷 게이트웨이: 모든 아웃바운드 트래픽이 차단됩니다. 송신 전용 인터넷 게이트웨이는 인바운드 트래픽을 허용하지 않습니다.
NAT 게이트웨이: 모든 인바운드 및 아웃바운드 트래픽이 차단됩니다. NAT 게이트웨이에는 인터넷 연결을 위한 인터넷 게이트웨이가 필요합니다.
인터넷 연결 Network Load Balancer: 모든 인바운드 및 아웃바운드 트래픽이 차단됩니다. 인터넷 연결 Network Load Balancer에는 인터넷 연결을 위한 인터넷 게이트웨이가 필요합니다.
인터넷 연결 Application Load Balancer: 모든 인바운드 및 아웃바운드 트래픽이 차단됩니다. 인터넷 연결 Application Load Balancer에는 인터넷 연결을 위한 인터넷 게이트웨이가 필요합니다.
-
AWS Global Accelerator: VPC로의 인바운드 트래픽이 차단됩니다.
다음 서비스 및 리소스에 대한 트래픽과 같은 프라이빗 연결과 관련된 트래픽은 VPC BPA에 의해 차단되거나 영향을 받지 않습니다.
VPC의 리소스로부터 VPC에서 실행되는 다른 서비스(예: EC2 DNS Resolver)로 비공개로 전송되는 트래픽은 VPC의 인터넷 게이트웨이를 통과하지 않으므로 BPA가 켜져 있더라도 허용됩니다. 이러한 서비스는 사용자를 대신하여 VPC 외부의 리소스에 요청을 할 수 있으며(예: DNS 쿼리를 해결하기 위한 요청), 다른 보안 제어 수단을 통해 완화하지 않는 경우 VPC 내의 리소스 활동에 대한 정보를 노출할 수 있습니다.
BPA 제한 사항
VPC BPA 수신 전용 모드는 NAT 게이트웨이 및 송신 전용 인터넷 게이트웨이가 허용되지 않는 로컬 영역(LZ)에서는 지원되지 않습니다.
IAM 정책을 사용하여 VPA BPA에 대한 액세스 제어
VPC BPA 기능에 대한 액세스를 허용/거부하는 IAM 정책의 예는 VPC 및 서브넷에 대한 퍼블릭 액세스 차단 섹션을 참조하세요.
계정에 대해 BPA 양방향 모드 활성화
VPC BPA 양방향 모드는 이 리전의 인터넷 게이트웨이 및 송신 전용 인터넷 게이트웨이(제외된 VPC 및 서브넷 제외)를 오가는 모든 트래픽을 차단합니다. 제외 항목에 관한 자세한 내용은 제외 항목 생성 및 삭제 섹션을 참조하세요.
프로덕션 계정에서 VPC BPA를 활성화하기 전에 인터넷 액세스가 필요한 워크로드를 철저히 검토하는 것이 좋습니다.
- AWS Management Console
-
이제 VPC BPA 양방향 모드가 켜져 있습니다.
- AWS CLI
-
-
VPC BPA 켜기:
aws ec2 --region us-east-2
modify-vpc-block-public-access-options --internet-gateway-block-mode block-bidirectional
BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
-
VPC BPA 상태 보기:
aws ec2 --region us-east-2
describe-vpc-block-public-access-options
VPC BPA 모드를 수신 전용으로 변경
VPC BPA 수신 전용 모드는 이 리전의 VPC에 대한 모든 인터넷 트래픽(제외된 VPC 또는 서브넷 제외)을 차단합니다. NAT 게이트웨이 및 송신 전용 인터넷 게이트웨이를 오가는 트래픽만 허용되는데, 이러한 게이트웨이는 아웃바운드 연결만 설정되도록 허용하기 때문입니다.
- AWS Management Console
-
-
VPC 콘솔에서 퍼블릭 액세스 설정을 수정하고 방향을 수신 전용으로 변경합니다.
-
변경 사항을 저장하고 상태가 업데이트될 때까지 기다립니다. BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
- AWS CLI
-
-
VPC BPA 차단 방향 수정:
aws ec2 --region us-east-2
modify-vpc-block-public-access-options --internet-gateway-block-mode block-ingress
BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
-
VPC BPA 상태 보기:
aws ec2 --region us-east-2
describe-vpc-block-public-access-options
제외 항목 생성 및 삭제
VPC BPA 제외 항목은 계정의 BPA 모드에서 제외하고 양방향 또는 송신 전용 액세스를 허용하는 단일 VPC 또는 서브넷에 적용할 수 있는 모드입니다. 계정에서 BPA가 활성화되지 않은 경우에도 VPC 및 서브넷에 대한 BPA 제외 항목을 생성하여 VPC BPA가 켜져 있을 때 제외 항목에 대한 트래픽 중단이 없도록 할 수 있습니다.
최대 50개의 제외 항목을 생성할 수 있습니다. 한도 증가 요청에 대한 자세한 내용은 Amazon VPC 할당량의 계정별 VPC BPA 제외 항목을 참조하세요.
- AWS Management Console
-
-
퍼블릭 액세스 차단 탭의 제외 항목에서 제외 항목 생성을 선택합니다.
-
VPC 또는 서브넷을 선택하고 차단 방향을 선택합니다.
제외 항목 생성을 선택합니다.
-
제외 상태가 활성으로 변경될 때까지 기다립니다. 변경 사항을 보려면 제외 항목 테이블을 새로 고쳐야 할 수 있습니다.
제외 항목이 생성되었습니다.
- AWS CLI
-
-
제외 항목 허용 방향 수정:
aws ec2 --region us-east-2
create-vpc-block-public-access-exclusion --subnet-id subnet-id
--internet-gateway-exclusion-mode allow-bidirectional
-
제외 상태가 업데이트되는 데 시간이 걸릴 수 있습니다. 제외 항목의 상태를 보려면:
aws ec2 --region us-east-2
describe-vpc-block-public-access-exclusions --exclusion-ids exclusion-id
BPA의 영향 평가 및 BPA 모니터링
이 섹션에는 VPC BPA를 켜기 전에 VPC BPA의 영향을 평가하고 VPC BPA를 켠 후에 트래픽이 차단되는지 모니터링하는 방법에 대한 정보가 포함되어 있습니다.
네트워크 액세스 분석기를 사용하여 BPA의 영향 평가
이 섹션에서는 VPC BPA를 활성화하여 액세스를 차단하기 전에 네트워크 액세스 분석기를 사용하여 인터넷 게이트웨이를 사용하는 계정의 리소스를 확인하는 방법을 살펴봅니다. 이 분석을 사용하여 계정에서 VPC BPA를 켜고 트래픽을 차단할 때의 영향을 파악할 수 있습니다.
Network Access Analyzer는 IPv6을 지원하지 않으므로 송신 전용 인터넷 게이트웨이 아웃바운드 IPv6 트래픽에 대한 BPA의 잠재적 영향을 확인하는 데 사용할 수 없습니다.
Network Access Analyzer를 사용하여 수행하는 분석에는 요금이 부과됩니다. 자세한 정보는 네트워크 액세스 분석기 설명서의 요금을 참조하세요.
Network Access Analyzer의 리전별 가용성에 대한 자세한 내용은 Network Access Analyzer 설명서의 제한 사항을 참조하세요.
- AWS Management Console
-
-
https://console.aws.amazon.com/networkinsights/에서 AWS Network Insights 콘솔을 엽니다.
-
Network Access Analyzer를 선택합니다.
-
네트워크 액세스 범위 생성을 선택합니다.
-
인터넷 게이트웨이 외부 또는 내부의 액세스 식별을 선택하고 다음을 선택합니다.
-
템플릿은 이미 계정의 인터넷 게이트웨이를 오가는 트래픽을 분석하도록 구성되어 있습니다. 소스 및 대상에서 이를 확인할 수 있습니다.
-
Next(다음)를 선택합니다.
-
네트워크 액세스 범위 생성을 선택합니다.
-
방금 생성한 범위를 선택하고 분석을 선택합니다.
-
분석이 완료될 때까지 기다립니다.
-
분석 결과를 확인합니다. 분석 결과 아래의 각 행에는 패킷이 네트워크에서 계정의 인터넷 게이트웨이를 들어오고 나갈 때 거칠 수 있는 네트워크 경로가 표시됩니다. 이 경우 VPC BPA를 켜고 이러한 분석 결과에 나타나는 VPC 및/또는 서브넷 중 BPA 제외 항목으로 구성된 것이 없는 경우 해당 VPC 및 서브넷으로의 트래픽이 제한됩니다.
-
각 분석 결과를 확인하여 BPA가 VPC의 리소스에 미치는 영향을 파악합니다.
영향 분석이 완료되었습니다.
- AWS CLI
-
-
네트워크 액세스 범위 생성:
aws ec2 create-network-insights-access-scope --region us-east-2
--match-paths "Source={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}" "Destination={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}"
-
범위 분석 시작:
aws ec2 start-network-insights-access-scope-analysis --region us-east-2
--network-insights-access-scope-id nis-id
-
분석 결과 가져오기:
aws ec2 get-network-insights-access-scope-analysis-findings --region us-east-2
--network-insights-access-scope-analysis-id nisa-0aa383a1938f94cd1 --max-items 1
결과는 계정의 모든 VPC에서 인터넷 게이트웨이를 들어오고 나가는 트래픽을 보여줍니다. 결과는 "분석 결과"로 구성됩니다. "FindingId": "AnalysisFinding-1"은 이것이 분석의 첫 번째 결과임을 나타냅니다. 여러 분석 결과가 있는 경우 각 분석 결과는 VPC BPA를 켜면 영향을 받는 트래픽 흐름을 나타냅니다. 첫 번째 분석 결과는 인터넷 게이트웨이("SequenceNumber": 1)에서 시작된 트래픽이 NACL("SequenceNumber": 2)을 거쳐 보안 그룹("SequenceNumber": 3)으로 전달되고 인스턴스("SequenceNumber": 4)에서 종료된 것을 보여줍니다.
-
분석 결과를 확인하여 BPA가 VPC의 리소스에 미치는 영향을 파악합니다.
영향 분석이 완료되었습니다.
흐름 로그를 사용하여 BPA 영향 모니터링
VPC 흐름 로그는 VPC의 탄력적 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능입니다. 이 기능을 사용하여 VPC BPA가 인스턴스 네트워크 인터페이스에 도달하지 못하도록 차단한 트래픽을 모니터링할 수 있습니다.
흐름 로그 작업의 단계에 따라 VPC에 대한 흐름 로그를 생성합니다.
흐름 로그를 생성할 때 reject-reason
필드가 포함된 사용자 지정 형식을 사용해야 합니다.
흐름 로그를 볼 때 BPA로 인해 ENI에 대한 트래픽이 거부된 경우 흐름 로그 항목에 reject-reason
이 BPA
로 표시됩니다.
VPC 흐름 로그의 표준 제한 사항 외에도 VPC BPA와 관련된 다음 제한 사항에 유의하세요.
CloudTrail을 사용하여 제외 항목 삭제 추적
이 섹션에서는 AWS CloudTrail을 사용하여 VPC BPA 제외 항목 삭제를 모니터링하고 추적하는 방법을 설명합니다.
- AWS Management Console
-
https://console.aws.amazon.com/cloudtrailv2/의 AWS CloudTrail 콘솔에서 리소스 유형 > AWS::EC2::VPCBlockPublicAccessExclusion
을 조회하면 CloudTrail 이벤트 기록의 삭제된 제외 항목을 볼 수 있습니다.
- AWS CLI
-
lookup-events
명령을 사용하여 제외 항목 삭제와 관련된 이벤트를 볼 수 있습니다.
aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::EC2::VPCBlockPublicAccessExclusion
Reachability Analyzer를 사용하여 연결이 차단되었는지 확인
VPC Reachability Analyzer를 사용하면 VPC BPA 설정을 포함한 지정된 네트워크 구성에서 특정 네트워크 경로에 도달할 수 있는지 여부를 평가할 수 있습니다.
Reachability Analyzer의 리전별 가용성에 대한 자세한 내용은 Reachability Analyzer 설명서의 고려 사항을 참조하세요.
- AWS Management Console
-
- AWS CLI
-
-
소스의 트래픽을 차단하려는 인터넷 게이트웨이의 ID와 대상의 트래픽을 차단하려는 인스턴스의 ID를 사용하여 네트워크 경로를 생성합니다.
aws ec2 --region us-east-2
create-network-insights-path --source igw-id
--destination instance-id
--protocol TCP
-
네트워크 경로에 대한 분석 시작:
aws ec2 --region us-east-2
start-network-insights-analysis --network-insights-path-id nip-id
-
분석 결과 검색:
aws ec2 --region us-east-2
describe-network-insights-analyses --network-insights-analysis-ids nia-id
-
연결성이 부족한 경우 VPC_BLOCK_PUBLIC_ACCESS_ENABLED
가 ExplanationCode
인지 확인합니다.
고급 예제
이 섹션에는 VPC 퍼블릭 액세스 차단 기능이 다양한 시나리오에서 작동하는 방식을 이해하는 데 도움이 되는 고급 예제가 포함되어 있습니다. 각 시나리오는 이전 시나리오를 기반으로 구축되므로 순서대로 단계를 완료하는 것이 중요합니다.
프로덕션 계정에서 이 예제를 실행하지 마세요. 프로덕션 계정에서 VPC BPA를 활성화하기 전에 인터넷 액세스가 필요한 워크로드를 철저히 검토하는 것이 좋습니다.
VPC BPA 기능을 완전히 이해하려면 계정에 특정 리소스가 필요합니다. 이 섹션에서는 이 기능의 작동 방식을 완전히 이해하는 데 필요한 리소스를 프로비저닝하는 데 사용할 수 있는 AWS CloudFormation 템플릿을 제공합니다. CloudFormation 템플릿을 사용하여 프로비저닝하는 리소스와 Network Access Analyzer 및 Reachability Analyzer로 수행하는 분석에는 관련된 비용이 있습니다. 이 섹션의 템플릿을 사용하는 경우 이 예제를 완료한 후 정리 단계를 완료해야 합니다.
CloudFormation 템플릿 배포
이 기능의 작동 방식을 확인하려면 VPC, 서브넷, 인스턴스 및 기타 리소스가 필요합니다. 이 데모를 더 쉽게 완료할 수 있도록 이 데모의 시나리오에 필요한 리소스를 빠르게 준비하는 데 사용할 수 있는 AWS CloudFormation 템플릿을 아래에 제공했습니다.
NAT 게이트웨이 및 퍼블릭 IPv4 주소의 비용과 같이 CloudFormation 템플릿을 사용하여 이 섹션에서 생성하는 리소스에는 관련된 비용이 있습니다. 과도한 비용이 발생하지 않도록 정리 단계를 완료하여 이 예제를 위해 생성된 모든 리소스를 제거해야 합니다.
이 템플릿은 계정에 다음 리소스를 생성합니다.
-
외부 전용 인터넷 게이트웨이
-
인터넷 게이트웨이
-
NAT 게이트웨이
-
퍼블릭 서브넷 2개
-
프라이빗 서브넷 1개
-
퍼블릭 및 프라이빗 IPv4 주소가 있는 EC2 인스턴스 2개
-
IPv6 주소 및 프라이빗 IPv4 주소가 있는 EC2 인스턴스 1개
-
프라이빗 IPv4 주소만 있는 EC2 인스턴스 1개
-
SSH 및 ICMP 인바운드 트래픽이 허용되고 모든 아웃바운드 트래픽이 허용되는 보안 그룹
-
VPC 흐름 로그
-
서브넷 B의 EC2 Instance Connect 엔드포인트 1개
아래 템플릿을 복사하여 .yaml 파일로 저장합니다.
AWSTemplateFormatVersion: '2010-09-09'
Description: Creates a VPC with public and private subnets, NAT gateway, and EC2 instances for VPC BPA.
Parameters:
InstanceAMI:
Description: ID of the Amazone Machine Image (AMI) to use with the instances launched by this template
Type: AWS::EC2::Image::Id
InstanceType:
Description: EC2 Instance type to use with the instances launched by this template
Type: String
Default: t2.micro
Resources:
# VPC
VPCBPA:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsHostnames: true
EnableDnsSupport: true
InstanceTenancy: default
Tags:
- Key: Name
Value: VPC BPA
# VPC IPv6 CIDR
VPCBPAIpv6CidrBlock:
Type: AWS::EC2::VPCCidrBlock
Properties:
VpcId: !Ref VPCBPA
AmazonProvidedIpv6CidrBlock: true
# EC2 Key Pair
VPCBPAKeyPair:
Type: AWS::EC2::KeyPair
Properties:
KeyName: vpc-bpa-key
# Internet Gateway
VPCBPAInternetGateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: VPC BPA Internet Gateway
VPCBPAInternetGatewayAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref VPCBPA
InternetGatewayId: !Ref VPCBPAInternetGateway
# Egress-Only Internet Gateway
VPCBPAEgressOnlyInternetGateway:
Type: AWS::EC2::EgressOnlyInternetGateway
Properties:
VpcId: !Ref VPCBPA
# Subnets
VPCBPAPublicSubnetA:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPCBPA
CidrBlock: 10.0.1.0/24
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: VPC BPA Public Subnet A
VPCBPAPublicSubnetB:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPCBPA
CidrBlock: 10.0.2.0/24
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: VPC BPA Public Subnet B
VPCBPAPrivateSubnetC:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPCBPA
CidrBlock: 10.0.3.0/24
MapPublicIpOnLaunch: false
Ipv6CidrBlock: !Select [0, !GetAtt VPCBPA.Ipv6CidrBlocks]
AssignIpv6AddressOnCreation: true
Tags:
- Key: Name
Value: VPC BPA Private Subnet C
# NAT Gateway
VPCBPANATGateway:
Type: AWS::EC2::NatGateway
Properties:
AllocationId: !GetAtt VPCBPANATGatewayEIP.AllocationId
SubnetId: !Ref VPCBPAPublicSubnetB
Tags:
- Key: Name
Value: VPC BPA NAT Gateway
VPCBPANATGatewayEIP:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Tags:
- Key: Name
Value: VPC BPA NAT Gateway EIP
# Route Tables
VPCBPAPublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPCBPA
Tags:
- Key: Name
Value: VPC BPA Public Route Table
VPCBPAPublicRoute:
Type: AWS::EC2::Route
DependsOn: VPCBPAInternetGatewayAttachment
Properties:
RouteTableId: !Ref VPCBPAPublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref VPCBPAInternetGateway
VPCBPAPublicSubnetARouteTableAssoc:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref VPCBPAPublicSubnetA
RouteTableId: !Ref VPCBPAPublicRouteTable
VPCBPAPublicSubnetBRouteTableAssoc:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref VPCBPAPublicSubnetB
RouteTableId: !Ref VPCBPAPublicRouteTable
VPCBPAPrivateRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPCBPA
Tags:
- Key: Name
Value: VPC BPA Private Route Table
VPCBPAPrivateRoute:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref VPCBPAPrivateRouteTable
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref VPCBPANATGateway
VPCBPAPrivateSubnetCRoute:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref VPCBPAPrivateRouteTable
DestinationIpv6CidrBlock: ::/0
EgressOnlyInternetGatewayId: !Ref VPCBPAEgressOnlyInternetGateway
VPCBPAPrivateSubnetCRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref VPCBPAPrivateSubnetC
RouteTableId: !Ref VPCBPAPrivateRouteTable
# EC2 Instances Security Group
VPCBPAInstancesSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: VPC BPA Instances Security Group
GroupDescription: Allow SSH and ICMP access
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
- IpProtocol: icmp
FromPort: -1
ToPort: -1
CidrIp: 0.0.0.0/0
VpcId: !Ref VPCBPA
Tags:
- Key: Name
Value: VPC BPA Instances Security Group
# EC2 Instances
VPCBPAInstanceA:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref InstanceAMI
InstanceType: t2.micro
KeyName: !Ref VPCBPAKeyPair
SubnetId: !Ref VPCBPAPublicSubnetA
SecurityGroupIds:
- !Ref VPCBPAInstancesSecurityGroup
Tags:
- Key: Name
Value: VPC BPA Instance A
VPCBPAInstanceB:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref InstanceAMI
InstanceType: !Ref InstanceType
KeyName: !Ref VPCBPAKeyPair
SubnetId: !Ref VPCBPAPublicSubnetB
SecurityGroupIds:
- !Ref VPCBPAInstancesSecurityGroup
Tags:
- Key: Name
Value: VPC BPA Instance B
VPCBPAInstanceC:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref InstanceAMI
InstanceType: !Ref InstanceType
KeyName: !Ref VPCBPAKeyPair
SubnetId: !Ref VPCBPAPrivateSubnetC
SecurityGroupIds:
- !Ref VPCBPAInstancesSecurityGroup
Tags:
- Key: Name
Value: VPC BPA Instance C
VPCBPAInstanceD:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref InstanceAMI
InstanceType: !Ref InstanceType
KeyName: !Ref VPCBPAKeyPair
NetworkInterfaces:
- DeviceIndex: '0'
GroupSet:
- !Ref VPCBPAInstancesSecurityGroup
SubnetId: !Ref VPCBPAPrivateSubnetC
Ipv6AddressCount: 1
Tags:
- Key: Name
Value: VPC BPA Instance D
# Flow Logs IAM Role
VPCBPAFlowLogRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: vpc-flow-logs.amazonaws.com
Action: 'sts:AssumeRole'
Tags:
- Key: Name
Value: VPC BPA Flow Logs Role
VPCBPAFlowLogPolicy:
Type: AWS::IAM::Policy
Properties:
PolicyName: VPC-BPA-FlowLogsPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'logs:CreateLogGroup'
- 'logs:CreateLogStream'
- 'logs:PutLogEvents'
- 'logs:DescribeLogGroups'
- 'logs:DescribeLogStreams'
Resource: '*'
Roles:
- !Ref VPCBPAFlowLogRole
# Flow Logs
VPCBPAFlowLog:
Type: AWS::EC2::FlowLog
Properties:
ResourceId: !Ref VPCBPA
ResourceType: VPC
TrafficType: ALL
LogDestinationType: cloud-watch-logs
LogGroupName: /aws/vpc-flow-logs/VPC-BPA
DeliverLogsPermissionArn: !GetAtt VPCBPAFlowLogRole.Arn
LogFormat: '${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status} ${vpc-id} ${subnet-id} ${instance-id} ${tcp-flags} ${type} ${pkt-srcaddr} ${pkt-dstaddr} ${region} ${az-id} ${sublocation-type} ${sublocation-id} ${pkt-src-aws-service} ${pkt-dst-aws-service} ${flow-direction} ${traffic-path} ${reject-reason}'
Tags:
- Key: Name
Value: VPC BPA Flow Logs
# EC2 Instance Connect Endpoint
VPCBPAEC2InstanceConnectEndpoint:
Type: AWS::EC2::InstanceConnectEndpoint
Properties:
SecurityGroupIds:
- !Ref VPCBPAInstancesSecurityGroup
SubnetId: !Ref VPCBPAPublicSubnetB
Outputs:
VPCBPAVPCId:
Description: A reference to the created VPC
Value: !Ref VPCBPA
Export:
Name: vpc-id
VPCBPAPublicSubnetAId:
Description: The ID of the public subnet A
Value: !Ref VPCBPAPublicSubnetA
VPCBPAPublicSubnetAName:
Description: The name of the public subnet A
Value: VPC BPA Public Subnet A
VPCBPAPublicSubnetBId:
Description: The ID of the public subnet B
Value: !Ref VPCBPAPublicSubnetB
VPCBPAPublicSubnetBName:
Description: The name of the public subnet B
Value: VPC BPA Public Subnet B
VPCBPAPrivateSubnetCId:
Description: The ID of the private subnet C
Value: !Ref VPCBPAPrivateSubnetC
VPCBPAPrivateSubnetCName:
Description: The name of the private subnet C
Value: VPC BPA Private Subnet C
VPCBPAInstanceAId:
Description: The ID of instance A
Value: !Ref VPCBPAInstanceA
VPCBPAInstanceBId:
Description: The ID of instance B
Value: !Ref VPCBPAInstanceB
VPCBPAInstanceCId:
Description: The ID of instance C
Value: !Ref VPCBPAInstanceC
VPCBPAInstanceDId:
Description: The ID of instance D
Value: !Ref VPCBPAInstanceD
- AWS Management Console
-
- AWS CLI
-
-
다음 명령을 실행하여 CloudFormation 스택을 생성합니다.
aws cloudformation create-stack --stack-name VPC-BPA-stack --template-body file://sampletemplate.yaml --capabilities CAPABILITY_IAM --region us-east-2
출력:
{
"StackId": "arn:aws:cloudformation:us-east-2:470889052923:stack/VPC-BPA-stack/8a7a2cc0-8001-11ef-b196-06386a84b72f"
}
-
진행 상황을 확인하고 계속하기 전에 스택이 완료되었는지 확인합니다.
aws cloudformation describe-stack-events --stack-name VPC-BPA-stack --region us-east-2
Network Access Analyzer를 사용하여 VPC BPA의 영향 확인
이 섹션에서는 Network Access Analyzer를 사용하여 인터넷 게이트웨이를 사용하는 계정의 리소스를 확인합니다. 이 분석을 사용하여 계정에서 VPC BPA를 켜고 트래픽을 차단할 때의 영향을 파악할 수 있습니다.
Network Access Analyzer의 리전별 가용성에 대한 자세한 내용은 Network Access Analyzer 설명서의 제한 사항을 참조하세요.
- AWS Management Console
-
-
https://console.aws.amazon.com/networkinsights/에서 AWS Network Insights 콘솔을 엽니다.
-
Network Access Analyzer를 선택합니다.
-
네트워크 액세스 범위 생성을 선택합니다.
-
인터넷 게이트웨이 외부 또는 내부의 액세스 식별을 선택하고 다음을 선택합니다.
-
템플릿은 이미 계정의 인터넷 게이트웨이를 오가는 트래픽을 분석하도록 구성되어 있습니다. 소스 및 대상에서 이를 확인할 수 있습니다.
-
Next(다음)를 선택합니다.
-
네트워크 액세스 범위 생성을 선택합니다.
-
방금 생성한 범위를 선택하고 분석을 선택합니다.
-
분석이 완료될 때까지 기다립니다.
-
분석 결과를 확인합니다. 분석 결과 아래의 각 행에는 패킷이 네트워크에서 계정의 인터넷 게이트웨이를 들어오고 나갈 때 거칠 수 있는 네트워크 경로가 표시됩니다. 이 경우 VPC BPA를 켜고 이러한 분석 결과에 나타나는 VPC 및/또는 서브넷 중 BPA 제외 항목으로 구성된 것이 없는 경우 해당 VPC 및 서브넷으로의 트래픽이 제한됩니다.
-
각 분석 결과를 확인하여 BPA가 VPC의 리소스에 미치는 영향을 파악합니다.
영향 분석이 완료되었습니다.
- AWS CLI
-
-
네트워크 액세스 범위 생성:
aws ec2 create-network-insights-access-scope --match-paths "Source={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}" "Destination={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}" --region us-east-2
출력:
{
"NetworkInsightsAccessScope": {
"NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e",
"NetworkInsightsAccessScopeArn": "arn:aws:ec2:us-east-2:470889052923:network-insights-access-scope/nis-04cad3c4b3a1d5e3e",
"CreatedDate": "2024-09-30T15:55:53.171000+00:00",
"UpdatedDate": "2024-09-30T15:55:53.171000+00:00"
},
"NetworkInsightsAccessScopeContent": {
"NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e",
"MatchPaths": [
{
"Source": {
"ResourceStatement": {
"ResourceTypes": [
"AWS::EC2::InternetGateway"
]
}
}
},
{
"Destination": {
"ResourceStatement": {
"ResourceTypes": [
"AWS::EC2::InternetGateway"
]
}
}
}
]
}
}
-
범위 분석 시작:
aws ec2 start-network-insights-access-scope-analysis --network-insights-access-scope-id nis-04cad3c4b3a1d5e3e --region us-east-2
출력:
{
"NetworkInsightsAccessScopeAnalysis": {
"NetworkInsightsAccessScopeAnalysisId": "nisa-0aa383a1938f94cd1",
"NetworkInsightsAccessScopeAnalysisArn": "arn:aws:ec2:us-east-2:470889052923:network-insights-access-scope-analysis/nisa-0aa383a1938f94cd",
"NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e",
"Status": "running",
"StartDate": "2024-09-30T15:56:59.109000+00:00",
"AnalyzedEniCount": 0
}
}
-
분석 결과 가져오기:
aws ec2 get-network-insights-access-scope-analysis-findings --network-insights-access-scope-analysis-id nisa-0aa383a1938f94cd1 --region us-east-2
--max-items 1
출력:
{
"AnalysisFindings": [
{
"NetworkInsightsAccessScopeAnalysisId": "nisa-0aa383a1938f94cd1",
"NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e",
"FindingId": "AnalysisFinding-1",
"FindingComponents": [
{
"SequenceNumber": 1,
"Component": {
"Id": "igw-04a5344b4e30486f1",
"Arn": "arn:aws:ec2:us-east-2:470889052923:internet-gateway/igw-04a5344b4e30486f1",
"Name": "VPC BPA Internet Gateway"
},
"OutboundHeader": {
"DestinationAddresses": [
"10.0.1.85/32"
]
},
"InboundHeader": {
"DestinationAddresses": [
"10.0.1.85/32"
],
"DestinationPortRanges": [
{
"From": 22,
"To": 22
}
],
"Protocol": "6",
"SourceAddresses": [
"0.0.0.0/5",
"100.0.0.0/10",
"96.0.0.0/6"
],
"SourcePortRanges": [
{
"From": 0,
"To": 65535
}
]
},
"Vpc": {
"Id": "vpc-0762547ec48b6888d",
"Arn": "arn:aws:ec2:us-east-2:470889052923:vpc/vpc-0762547ec48b6888d",
"Name": "VPC BPA"
}
},
{
"SequenceNumber": 2,
"AclRule": {
"Cidr": "0.0.0.0/0",
"Egress": false,
"Protocol": "all",
"RuleAction": "allow",
"RuleNumber": 100
},
"Component": {
"Id": "acl-06194fc3a4a03040b",
"Arn": "arn:aws:ec2:us-east-2:470889052923:network-acl/acl-06194fc3a4a03040b"
}
},
{
"SequenceNumber": 3,
"Component": {
"Id": "sg-093dde06415d03924",
"Arn": "arn:aws:ec2:us-east-2:470889052923:security-group/sg-093dde06415d03924",
"Name": "VPC BPA Instances Security Group"
},
"SecurityGroupRule": {
"Cidr": "0.0.0.0/0",
"Direction": "ingress",
"PortRange": {
"From": 22,
"To": 22
},
"Protocol": "tcp"
}
},
{
"SequenceNumber": 4,
"AttachedTo": {
"Id": "i-058db34f9a0997895",
"Arn": "arn:aws:ec2:us-east-2:470889052923:instance/i-058db34f9a0997895",
"Name": "VPC BPA Instance A"
},
"Component": {
"Id": "eni-0fa23f2766f03b286",
"Arn": "arn:aws:ec2:us-east-2:470889052923:network-interface/eni-0fa23f2766f03b286"
},
"InboundHeader": {
"DestinationAddresses": [
"10.0.1.85/32"
],
"DestinationPortRanges": [
{
"From": 22,
"To": 22
}
],
"Protocol": "6",
"SourceAddresses": [
"0.0.0.0/5",
"100.0.0.0/10",
"96.0.0.0/6"
],
"SourcePortRanges": [
{
"From": 0,
"To": 65535
}
]
},
"Subnet": {
"Id": "subnet-035d235a762eeed04",
"Arn": "arn:aws:ec2:us-east-2:470889052923:subnet/subnet-035d235a762eeed04",
"Name": "VPC BPA Public Subnet A"
},
"Vpc": {
"Id": "vpc-0762547ec48b6888d",
"Arn": "arn:aws:ec2:us-east-2:470889052923:vpc/vpc-0762547ec48b6888d",
"Name": "VPC BPA"
}
}
]
}
],
"AnalysisStatus": "succeeded",
"NetworkInsightsAccessScopeAnalysisId": "nisa-0aa383a1938f94cd1",
"NextToken": "eyJOZXh0VG9rZW4iOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ=="
}
결과는 계정의 모든 VPC에서 인터넷 게이트웨이를 들어오고 나가는 트래픽을 보여줍니다. 결과는 "분석 결과"로 구성됩니다. "FindingId": "AnalysisFinding-1"은 이것이 분석의 첫 번째 결과임을 나타냅니다. 여러 분석 결과가 있는 경우 각 분석 결과는 VPC BPA를 켜면 영향을 받는 트래픽 흐름을 나타냅니다. 첫 번째 분석 결과는 인터넷 게이트웨이("SequenceNumber": 1)에서 시작된 트래픽이 NACL("SequenceNumber": 2)을 거쳐 보안 그룹("SequenceNumber": 3)으로 전달되고 인스턴스("SequenceNumber": 4)에서 종료된 것을 보여줍니다.
-
분석 결과를 확인하여 BPA가 VPC의 리소스에 미치는 영향을 파악합니다.
영향 분석이 완료되었습니다.
시나리오 1
이 섹션에서는 기준을 설정하고 BPA를 활성화하기 전에 모든 인스턴스에 연결할 수 있는지 확인하기 위해 모든 인스턴스에 연결하고 퍼블릭 IP 주소를 ping합니다.
VPC BPA가 켜져 있지 않은 VPC의 다이어그램:
1.1 인스턴스에 연결
이 섹션의 단계에 따라 VPC BPA가 꺼져 있는 인스턴스에 연결하여 문제 없이 연결할 수 있는지 확인합니다. 이 예제의 CloudFormation으로 생성된 모든 인스턴스에는 "VPC BPA Instance A"와 같은 이름이 있습니다.
- AWS Management Console
-
-
https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.
-
인스턴스 A 세부 정보를 엽니다.
-
EC2 Instance Connect > EC2 Instance Connect를 사용한 연결 옵션을 사용하여 인스턴스 A에 연결합니다.
-
연결을 선택합니다. 인스턴스에 성공적으로 연결되면 www.amazon.com을 ping하여 인터넷으로 아웃바운드 요청을 보낼 수 있는지 확인합니다.
-
인스턴스 A에 연결할 때 사용한 것과 동일한 방법을 사용하여 인스턴스 B에 연결하고 ping을 통해 인터넷으로 아웃바운드 요청을 보낼 수 있는지 테스트합니다.
-
EC2 Instance Connect > EC2 Instance Connect Endpoint를 사용하여 연결 옵션을 사용하여 인스턴스 C에 연결합니다. 인스턴스 C 및 D는 프라이빗 서브넷에 있고 퍼블릭 IP 주소가 없으므로 엔드포인트 옵션을 사용해야 합니다.
-
인스턴스 C에 연결할 때 사용한 것과 동일한 방법을 사용하여 인스턴스 D에 연결하고 ping을 통해 인터넷으로 아웃바운드 요청을 보낼 수 있는지 테스트합니다.
- AWS CLI
-
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 A를 ping하여 인바운드 트래픽 확인:
ping 18.225.8.244
출력:
Pinging 18.225.8.244 with 32 bytes of data:
Reply from 18.225.8.244: bytes=32 time=51ms TTL=110
Reply from 18.225.8.244: bytes=32 time=61ms TTL=110
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895
--region us-east-2
--connection-type eice
출력:
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~_ ####_ Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
/ /
/m/'
Last login: Fri Sep 27 18:27:57 2024 from 3.16.146.5
[ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
PING www-amazon-com.customer.fastly.net (18.65.233.187) 56(84) bytes of data.
64 bytes from 18.65.233.187 (18.65.233.187): icmp_seq=15 ttl=58 time=2.06 ms
64 bytes from 18.65.233.187 (18.65.233.187): icmp_seq=16 ttl=58 time=2.26 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 B를 ping하여 인바운드 트래픽 확인:
ping 3.18.106.198
출력:
Pinging 3.18.106.198 with 32 bytes of data:
Reply from 3.18.106.198: bytes=32 time=83ms TTL=110
Reply from 3.18.106.198: bytes=32 time=54ms TTL=110
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72
--region us-east-2
--connection-type eice
출력:
A newer release of "Amazon Linux" is available.
Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, # ~_ #### Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~.. _/
/ /
/m/'
Last login: Fri Sep 27 18:12:27 2024 from 3.16.146.5
[ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=249 time=1.55 ms
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=249 time=1.67 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
인스턴스 C에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4
--region us-east-2
출력:
A newer release of "Amazon Linux" is available.
Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, # ~_ #### Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~.. _/
/ /
/m/'
Last login: Thu Sep 19 20:31:26 2024 from 10.0.2.86
[ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=248 time=1.75 ms
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=248 time=1.97 ms
64 bytes from server-3-160-24-26.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=3 ttl=248 time=1.08 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
인스턴스 D에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0
--region us-east-2
출력:
The authenticity of host '10.0.3.59 can't be established.
ECDSA key fingerprint is SHA256:c4naBCqbC61/cExDyccEproNU+1HHSpMSzl2J6cOtIZA8g.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.3.59' (ECDSA) to the list of known hosts.
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, # ~_ #### Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~.. _/
_/ _/
_/m/'
[ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
PING www.amazon.com(2600:9000:25f3:ee00:7:49a5:5fd4:b121 (2600:9000:25f3:ee00:7:49a5:5fd4:b121)) 56 data bytes
64 bytes from 2600:9000:25f3:ee00:7:49a5:5fd4:b121 (2600:9000:25f3:ee00:7:49a5:5fd4:b121): icmp_seq=1 ttl=58 time=1.19 ms
64 bytes from 2600:9000:25f3:ee00:7:49a5:5fd4:b121 (2600:9000:25f3:ee00:7:49a5:5fd4:b121): icmp_seq=2 ttl=58 time=1.38 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
시나리오 2
이 섹션에서는 VPC BPA를 켜고 계정의 인터넷 게이트웨이에서 들어오고 나가는 트래픽을 차단합니다.
BPA 양방향 모드가 켜져 있는 VPC의 다이어그램:
2.1 VPC BPA 양방향 차단 모드 활성화
이 섹션을 완료하여 VPC BPA를 활성화합니다.
- AWS Management Console
-
이제 VPC BPA가 켜져 있습니다.
- AWS CLI
-
-
modify-vpc-block-public-access-options 명령을 사용하여 VPC BPA 켜기:
aws ec2 --region us-east-2
modify-vpc-block-public-access-options --internet-gateway-block-mode block-bidirectional
BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
-
VPC BPA 상태 보기:
aws ec2 --region us-east-2
describe-vpc-block-public-access-options
2.2 인스턴스에 연결
이 섹션을 완료하여 인스턴스에 연결합니다.
- AWS Management Console
-
-
시나리오 1에서와 같이 인스턴스 A 및 인스턴스 B의 퍼블릭 IPv4 주소를 ping합니다. 트래픽이 차단되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 각 인스턴스에 연결하고 www.amazon.com을 ping합니다. 모든 아웃바운드 트래픽이 차단되는지 확인합니다.
- AWS CLI
-
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 A를 ping하여 인바운드 트래픽 확인:
ping 18.225.8.244
출력:
Pinging 18.225.8.244 with 32 bytes of data:
Request timed out.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895
--region us-east-2
--connection-type eice
출력:
The authenticity of host '10.0.1.85' can't be established.
ECDSA key fingerprint is SHA256:3zo/gSss+HAZ+7eTyWlOB/Ke04IM+hadjsoLJeRTWBk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.1.85' (ECDSA) to the list of known hosts.
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~_ ####_ Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
/ /
/m/'
Last login: Fri Sep 27 14:16:53 2024 from 3.16.146.5
[ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 B를 ping하여 인바운드 트래픽 확인:
ping 3.18.106.198
출력:
Pinging 3.18.106.198 with 32 bytes of data:
Request timed out.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72
--region us-east-2
--connection-type eice
출력:
The authenticity of host '10.0.2.98' can't be established.
ECDSA key fingerprint is SHA256:0IjXKKyVlDthcCfI0IPIJMUiItAOLYKRNLGTYURnFXo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.2.98' (ECDSA) to the list of known hosts.
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, # ~_ #### Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~.. _/
/ /
/m/'
Last login: Fri Sep 27 14:18:16 2024 from 3.16.146.5
[ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
인스턴스 C에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4
--region us-east-2
출력:
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, # ~_ #### Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~.. _/
/ /
/m/'
Last login: Tue Sep 24 15:17:56 2024 from 10.0.2.86
[ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
인스턴스 D에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0
--region us-east-2
출력:
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, # ~_ #### Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~.. _/
_/ _/
_/m/'
Last login: Fri Sep 27 16:42:01 2024 from 3.16.146.5
[ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
PING www.amazon.com(2600:9000:25f3:8200:7:49a5:5fd4:b121 (2600:9000:25f3:8200:7:49a5:5fd4:b121)) 56 data bytes
ping이 실패하고 트래픽이 차단되는지 확인합니다.
2.3 선택 사항: Reachability Analyzer를 사용하여 연결이 차단되었는지 확인
VPC Reachability Analyzer를 사용하면 VPC BPA 설정을 포함한 지정된 네트워크 구성에서 특정 네트워크 경로에 도달할 수 있는지 여부를 파악할 수 있습니다. 이 예제에서는 이전에 시도한 것과 동일한 네트워크 경로를 분석하여 VPC BPA가 연결이 실패하는 이유인지 확인합니다.
- AWS Management Console
-
- AWS CLI
-
-
인터넷 게이트웨이에 태그가 지정된 VPC BPA 인터넷 게이트웨이의 ID와 인스턴스에 태그가 지정된 VPC BPA 인스턴스 A의 ID를 사용하여 네트워크 경로 생성:
aws ec2 --region us-east-2
create-network-insights-path --source igw-id
--destination instance-id
--protocol TCP
-
네트워크 경로에 대한 분석 시작:
aws ec2 --region us-east-2
start-network-insights-analysis --network-insights-path-id nip-id
-
분석 결과 검색:
aws ec2 --region us-east-2
describe-network-insights-analyses --network-insights-analysis-ids nia-id
-
연결성이 부족한 경우 VPC_BLOCK_PUBLIC_ACCESS_ENABLED
가 ExplanationCode
인지 확인합니다.
시나리오 3
이 섹션에서는 VPC BPA 트래픽 방향을 변경하고 NAT 게이트웨이 또는 송신 전용 인터넷 게이트웨이를 사용하는 트래픽만 허용합니다.
BPA 수신 전용 모드가 켜져 있는 VPC의 다이어그램:
3.1 모드를 수신 전용으로 변경
이 섹션을 완료하여 모드를 변경합니다.
- AWS Management Console
-
-
VPC 콘솔에서 퍼블릭 액세스 설정을 수정하고 방향을 수신 전용으로 변경합니다.
-
변경 사항을 저장하고 상태가 업데이트될 때까지 기다립니다. BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
- AWS CLI
-
-
VPC BPA 모드 수정:
aws ec2 --region us-east-2
modify-vpc-block-public-access-options --internet-gateway-block-mode block-ingress
BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
-
VPC BPA 상태 보기:
aws ec2 --region us-east-2
describe-vpc-block-public-access-options
3.2 인스턴스에 연결
이 섹션을 완료하여 인스턴스에 연결합니다.
- AWS Management Console
-
-
시나리오 1에서와 같이 인스턴스 A 및 인스턴스 B의 퍼블릭 IPv4 주소를 ping합니다. 트래픽이 차단되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 인스턴스 A 및 B에 연결하고 www.amazon.com을 ping합니다. 인스턴스 A 또는 B에서는 인터넷의 퍼블릭 사이트를 ping할 수 없으며 트래픽이 차단되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 인스턴스 C 및 D에 연결하고 www.amazon.com을 ping합니다. 인스턴스 C 또는 D에서는 인터넷의 퍼블릭 사이트를 ping할 수 있으며 트래픽이 허용되는지 확인합니다.
- AWS CLI
-
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 A를 ping하여 인바운드 트래픽 확인:
ping 18.225.8.244
출력:
Pinging 18.225.8.244 with 32 bytes of data:
Request timed out.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895
--region us-east-2
--connection-type eice
출력:
The authenticity of host '10.0.1.85' can't be established.
ECDSA key fingerprint is SHA256:3zo/gSss+HAZ+7eTyWlOB/Ke04IM+hadjsoLJeRTWBk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.1.85' (ECDSA) to the list of known hosts.
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~_ ####_ Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
/ /
/m/'
Last login: Fri Sep 27 14:16:53 2024 from 3.16.146.5
[ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 B를 ping하여 인바운드 트래픽 확인:
ping 3.18.106.198
출력:
Pinging 3.18.106.198 with 32 bytes of data:
Request timed out.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72
--region us-east-2
--connection-type eice
출력:
The authenticity of host '10.0.2.98 ' can't be established.
ECDSA key fingerprint is SHA256:0IjXKKyVlDthcCfI0IPIJMUiItAOLYKRNLGTYURnFXo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.2.98' (ECDSA) to the list of known hosts.
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, # ~_ #### Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~.. _/
_/ /
/m/'
Last login: Fri Sep 27 14:18:16 2024 from 3.16.146.5
[ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
인스턴스 C에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4
--region us-east-2
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Tue Sep 24 15:28:09 2024 from 10.0.2.86
[ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=248 time=1.84 ms
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=248 time=1.40 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
인스턴스 D에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0
--region us-east-2
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 16:48:38 2024 from 3.16.146.5
[ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
PING www.amazon.com(2600:9000:25f3:5800:7:49a5:5fd4:b121 (2600:9000:25f3:5800:7:49a5:5fd4:b121)) 56 data bytes
64 bytes from 2600:9000:25f3:5800:7:49a5:5fd4:b121 (2600:9000:25f3:5800:7:49a5:5fd4:b121): icmp_seq=14 ttl=58 time=1.47 ms
64 bytes from 2600:9000:25f3:5800:7:49a5:5fd4:b121 (2600:9000:25f3:5800:7:49a5:5fd4:b121): icmp_seq=16 ttl=58 time=1.59 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
시나리오 4
이 섹션에서는 제외 항목을 생성하고 VPC BPA에서 제외되지 않은 서브넷을 들어오고 나가는 트래픽만 차단합니다. VPC BPA 제외 항목은 계정의 BPA 모드에서 제외하고 양방향 또는 송신 전용 액세스를 허용하는 단일 VPC 또는 서브넷에 적용할 수 있는 모드입니다. 계정에서 BPA가 활성화되지 않은 경우에도 VPC 및 서브넷에 대한 BPA 제외 항목을 생성하여 VPC BPA가 켜져 있을 때 제외 항목에 대한 트래픽 중단이 없도록 할 수 있습니다.
이 예제에서는 VPC BPA가 제외 항목의 트래픽에 어떤 영향을 미치는지 보여주기 위해 서브넷 A에 대한 제외 항목을 생성합니다.
BPA 수신 전용 모드가 켜져 있는 VPC와 양방향 모드가 켜져 있는 서브넷 A의 다이어그램:
4.1 서브넷 A에 대한 제외 항목 생성
이 섹션을 완료하여 제외 항목을 생성합니다. VPC BPA 제외 항목은 계정의 BPA 모드에서 제외하고 양방향 또는 송신 전용 액세스를 허용하는 단일 VPC 또는 서브넷에 적용할 수 있는 모드입니다. 계정에서 BPA가 활성화되지 않은 경우에도 VPC 및 서브넷에 대한 BPA 제외 항목을 생성하여 VPC BPA가 켜져 있을 때 제외 항목에 대한 트래픽 중단이 없도록 할 수 있습니다.
- AWS Management Console
-
-
퍼블릭 액세스 차단 탭의 제외 항목에서 제외 항목 생성을 선택합니다.
-
VPC BPA 퍼블릭 서브넷 A를 선택하고 양방향 허용 방향이 선택되었는지 확인한 다음 제외 항목 생성을 선택합니다.
-
제외 상태가 활성으로 변경될 때까지 기다립니다. 변경 사항을 보려면 제외 항목 테이블을 새로 고쳐야 할 수 있습니다.
제외 항목이 생성되었습니다.
- AWS CLI
-
-
제외 항목 허용 방향 수정:
aws ec2 --region us-east-2
create-vpc-block-public-access-exclusion --subnet-id subnet-id
--internet-gateway-exclusion-mode allow-bidirectional
-
제외 상태가 업데이트되는 데 시간이 걸릴 수 있습니다. 제외 항목의 상태를 보려면:
aws ec2 --region us-east-2
describe-vpc-block-public-access-exclusions --exclusion-ids exclusion-id
4.2 인스턴스에 연결
이 섹션을 완료하여 인스턴스에 연결합니다.
- AWS Management Console
-
-
인스턴스 A의 퍼블릭 IPv4 주소를 ping합니다. 트래픽이 허용되는지 확인합니다.
-
인스턴스 B의 퍼블릭 IPv4 주소를 ping합니다. 트래픽이 차단되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 인스턴스 A에 연결하고 www.amazon.com을 ping합니다. 인스턴스 A에서는 인터넷의 퍼블릭 사이트를 ping할 수 있으며 트래픽이 허용되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 인스턴스 B에 연결하고 www.amazon.com을 ping합니다. 인스턴스 B에서는 인터넷의 퍼블릭 사이트를 ping할 수 없으며 트래픽이 차단되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 인스턴스 C 및 D에 연결하고 www.amazon.com을 ping합니다. 인스턴스 C 또는 D에서는 인터넷의 퍼블릭 사이트를 ping할 수 있으며 트래픽이 허용되는지 확인합니다.
- AWS CLI
-
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 A를 ping하여 인바운드 트래픽 확인:
ping 18.225.8.244
출력:
Pinging 18.225.8.244 with 32 bytes of data:
Reply from 18.225.8.244: bytes=32 time=51ms TTL=110
Reply from 18.225.8.244: bytes=32 time=61ms TTL=110
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895
--region us-east-2
--connection-type eice
출력:
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~_ ####_ Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
/ /
/m/'
Last login: Fri Sep 27 17:58:12 2024 from 3.16.146.5
[ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=249 time=1.03 ms
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=249 time=1.72 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 B를 ping하여 인바운드 트래픽 확인:
ping 3.18.106.198
출력:
Pinging 3.18.106.198 with 32 bytes of data:
Request timed out.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72
--region us-east-2
--connection-type eice
출력:
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, # ~_ #### Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~.. _/
_/ /
/m/'
Last login: Fri Sep 27 18:12:03 2024 from 3.16.146.5
[ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
인스턴스 C에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4
--region us-east-2
출력
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, # ~_ #### Amazon Linux 2023
~~ _#####\ ~~ ###|
~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~.. _/
_/ /
/m/'
Last login: Tue Sep 24 15:28:09 2024 from 10.0.2.86
[ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=248 time=1.84 ms
64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=248 time=1.40 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
인스턴스 D에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0
--region us-east-2
출력
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 18:00:52 2024 from 3.16.146.5
[ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
PING www.amazon.com(g2600-141f-4000-059a-0000-0000-0000-3bd4.deploy.static.akamaitechnologies.com (2600:141f:4000:59a::3bd4)) 56 data bytes
64 bytes from g2600-141f-4000-059a-0000-0000-0000-3bd4.deploy.static.akamaitechnologies.com (2600:141f:4000:59a::3bd4): icmp_seq=1 ttl=48 time=15.9 ms
64 bytes from g2600-141f-4000-059a-0000-0000-0000-3bd4.deploy.static.akamaitechnologies.com (2600:141f:4000:59a::3bd4): icmp_seq=2 ttl=48 time=15.8 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
4.3 선택 사항: Reachability Analyzer와의 연결 확인
이제 시나리오 2의 Reachability Analyzer에서 생성된 것과 동일한 네트워크 경로를 사용하여 새 분석을 실행할 수 있습니다. 퍼블릭 서브넷 A에 대한 제외 항목이 생성되었으므로 경로에 연결할 수 있는지 확인합니다.
Reachability Analyzer의 리전별 가용성에 대한 자세한 내용은 Reachability Analyzer 설명서의 고려 사항을 참조하세요.
- AWS Management Console
-
-
Network Insights 콘솔의 이전에 생성한 네트워크 경로에서 분석 재실행을 클릭합니다.
-
분석이 완료될 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다.
-
이제 경로가 연결 가능인지 확인합니다.
- AWS CLI
-
-
이전에 생성한 네트워크 경로 ID를 사용하여 새 분석 시작:
aws ec2 --region us-east-2
start-network-insights-analysis --network-insights-path-id nip-id
-
분석 결과 검색:
aws ec2 --region us-east-2
describe-network-insights-analyses --network-insights-analysis-ids nia-id
-
VPC_BLOCK_PUBLIC_ACCESS_ENABLED
설명 코드가 더 이상 존재하지 않는지 확인합니다.
시나리오 5
이 섹션에서는 제외 항목의 허용 트래픽 방향을 변경하여 VPC BPA에 어떤 영향을 미치는지 확인합니다. 제외 항목에 대한 송신 전용 모드는 수신 전용 차단 모드에서 VPC BPA를 활성화한 경우 실제로 의미가 없습니다. 이는 시나리오 3과 동일한 동작입니다.
BPA 수신 전용 모드가 켜져 있는 VPC와 송신 전용 모드가 켜져 있는 서브넷 A 제외 항목의 다이어그램:
5.1 제외 항목 허용 방향을 송신 전용으로 변경
이 섹션을 완료하여 제외 항목 허용 방향을 변경합니다.
- AWS Management Console
-
-
시나리오 4에서 생성한 제외 항목을 편집하고 허용 방향을 송신 전용으로 변경합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
-
제외 상태가 활성으로 변경될 때까지 기다립니다. BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다. 변경 사항을 보려면 제외 항목 테이블을 새로 고쳐야 할 수 있습니다.
- AWS CLI
-
-
제외 항목 허용 방향 수정:
aws ec2 --region us-east-2
modify-vpc-block-public-access-exclusion --exclusion-id exclusion-id
--internet-gateway-exclusion-mode allow-egress
BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
-
제외 상태가 업데이트되는 데 시간이 걸릴 수 있습니다. 제외 항목의 상태를 보려면:
aws ec2 --region us-east-2
describe-vpc-block-public-access-exclusion
5.2 인스턴스에 연결
이 섹션을 완료하여 인스턴스에 연결합니다.
- AWS Management Console
-
-
인스턴스 A 및 B의 퍼블릭 IPv4 주소를 ping합니다. 트래픽이 차단되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 인스턴스 A 및 B에 연결하고 www.amazon.com을 ping합니다. 인스턴스 A 또는 B에서는 인터넷의 퍼블릭 사이트를 ping할 수 없으며 트래픽이 차단되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 인스턴스 C 및 D에 연결하고 www.amazon.com을 ping합니다. 인스턴스 C 또는 D에서는 인터넷의 퍼블릭 사이트를 ping할 수 있으며 트래픽이 허용되는지 확인합니다.
- AWS CLI
-
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 A를 ping하여 인바운드 트래픽 확인:
ping 18.225.8.244
출력:
Pinging 18.225.8.244 with 32 bytes of data:
Request timed out.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895
--region us-east-2
--connection-type eice
출력:
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 18:09:55 2024 from 3.16.146.5
[ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 B를 ping하여 인바운드 트래픽 확인:
ping 3.18.106.198
출력:
Pinging 3.18.106.198 with 32 bytes of data:
Request timed out.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895
--region us-east-2
--connection-type eice
출력:
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 18:09:55 2024 from 3.16.146.5
[ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
인스턴스 C에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4
--region us-east-2
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 18:00:31 2024 from 3.16.146.5
[ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
PING www.amazon.com(2600:9000:25f3:a600:7:49a5:5fd4:b121 (2600:9000:25f3:a600:7:49a5:5fd4:b121)) 56 data bytes
64 bytes from 2600:9000:25f3:a600:7:49a5:5fd4:b121 (2600:9000:25f3:a600:7:49a5:5fd4:b121): icmp_seq=1 ttl=58 time=1.51 ms
64 bytes from 2600:9000:25f3:a600:7:49a5:5fd4:b121 (2600:9000:25f3:a600:7:49a5:5fd4:b121): icmp_seq=2 ttl=58 time=1.49 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
-
인스턴스 D에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0
--region us-east-2
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 18:13:55 2024 from 3.16.146.5
[ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
PING www.amazon.com(2606:2cc0::374 (2606:2cc0::374)) 56 data bytes
64 bytes from 2606:2cc0::374 (2606:2cc0::374): icmp_seq=1 ttl=58 time=1.21 ms
64 bytes from 2606:2cc0::374 (2606:2cc0::374): icmp_seq=2 ttl=58 time=1.51 ms
ping이 성공하며 트래픽이 차단되지 않는지 확인합니다.
시나리오 6
이 섹션에서는 VPC BPA 차단 방향을 변경하여 트래픽에 미치는 영향을 알아봅니다. 이 시나리오에서 양방향 모드로 활성화된 VPC BPA는 시나리오 1과 마찬가지로 모든 트래픽을 차단합니다. 제외 항목에 NAT 게이트웨이 또는 송신 전용 인터넷 게이트웨이에 대한 액세스 권한이 없는 경우 트래픽이 차단됩니다.
BPA 양방향 모드가 켜져 있는 VPC와 송신 전용 모드가 켜져 있는 서브넷 A의 다이어그램:
6.1 VPC BPA를 양방향 모드로 변경
이 섹션을 완료하여 BPA 모드를 변경합니다.
- AWS Management Console
-
-
퍼블릭 액세스 설정 편집을 선택합니다.
-
차단 방향을 양방향으로 변경한 다음 변경 사항 저장을 선택합니다.
-
상태가 켜기로 변경될 때까지 기다립니다. BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
- AWS CLI
-
-
VPC BPA 차단 방향 수정:
aws ec2 --region us-east-2
modify-vpc-block-public-access-options --internet-gateway-block-mode block-bidirectional
BPA 설정이 적용되고 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
-
VPC BPA 상태 보기:
aws ec2 --region us-east-2
describe-vpc-block-public-access-options
6.2 인스턴스에 연결
이 섹션을 완료하여 인스턴스에 연결합니다.
- AWS Management Console
-
-
인스턴스 A 및 B의 퍼블릭 IPv4 주소를 ping합니다. 트래픽이 차단되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 인스턴스 A 및 B에 연결하고 www.amazon.com을 ping합니다. 인스턴스 A 또는 B에서는 인터넷의 퍼블릭 사이트를 ping할 수 없으며 트래픽이 차단되는지 확인합니다.
-
시나리오 1에서와 같이 EC2 Instance Connect를 사용하여 인스턴스 C 및 D에 연결하고 www.amazon.com을 ping합니다. 인스턴스 C 또는 D에서는 인터넷의 퍼블릭 사이트를 ping할 수 없으며 트래픽이 차단되는지 확인합니다.
- AWS CLI
-
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 A를 ping하여 인바운드 트래픽 확인:
ping 18.225.8.244
출력:
Pinging 18.225.8.244 with 32 bytes of data:
Request timed out.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895
--region us-east-2
--connection-type eice
출력:
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 18:17:44 2024 from 3.16.146.5
[ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
퍼블릭 IPv4 주소를 사용하여 인스턴스 A를 ping하여 인바운드 트래픽 확인:
ping 3.18.106.198
출력:
Pinging 3.18.106.198 with 32 bytes of data:
Request timed out.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
프라이빗 IPv4 주소를 사용하여 연결하고 아웃바운드 트래픽 확인:
aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895
--region us-east-2
--connection-type eice
출력:
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 18:09:55 2024 from 3.16.146.5
[ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com
PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
인스턴스 C에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4
--region us-east-2
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 18:19:45 2024 from 3.16.146.5
[ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com
PING www.amazon.com(2600:9000:25f3:6200:7:49a5:5fd4:b121 (2600:9000:25f3:6200:7:49a5:5fd4:b121)) 56 data bytes
ping이 실패하고 트래픽이 차단되는지 확인합니다.
-
인스턴스 D에 연결합니다. ping할 퍼블릭 IP 주소가 없으므로 EC2 Instance Connect를 사용하여 연결한 다음 인스턴스에서 퍼블릭 IP를 ping하여 아웃바운드 트래픽을 확인합니다.
aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0
--region us-east-2
A newer release of "Amazon Linux" is available. Version 2023.5.20240916:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_ ~\_ ####_ Amazon Linux 2023
~~ \_#####\ ~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Sep 27 18:20:58 2024 from 3.16.146.5
[ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com
PING www.amazon.com(2600:9000:25f3:b400:7:49a5:5fd4:b121 (2600:9000:25f3:b400:7:49a5:5fd4:b121)) 56 data bytes
ping이 실패하고 트래픽이 차단되는지 확인합니다.
정리
이 섹션에서는 이 고급 예제에서 생성한 모든 리소스를 삭제합니다. 계정에서 생성된 리소스에 대한 과도한 추가 요금을 방지하려면 리소스를 정리하는 것이 중요합니다.
CloudFormation 리소스 삭제
이 섹션을 완료하여 AWS CloudFormation 템플릿으로 생성한 리소스를 삭제합니다.
- AWS Management Console
-
- AWS CLI
-
-
CloudFormation 스택을 삭제합니다. 스택을 강제로 삭제해야 스택이 완전히 삭제될 수 있습니다.
aws cloudformation delete-stack --stack-name VPC-BPA-stack --region us-east-2
-
진행 상황을 보고 스택이 삭제되었는지 확인합니다.
aws cloudformation describe-stack-events --stack-name VPC-BPA-stack --region us-east-2
AWS CloudTrail을 사용하여 제외 항목 삭제 추적
이 섹션의 단계에 따라 AWS CloudTrail을 사용하여 제외 항목 삭제를 추적합니다. 제외 항목을 삭제하면 CloudTrail 항목이 나타납니다.
- AWS Management Console
-
https://console.aws.amazon.com/cloudtrailv2/의 AWS CloudTrail 콘솔에서 리소스 유형 > AWS::EC2::VPCBlockPublicAccessExclusion을 조회하면 CloudTrail 이벤트 기록에서 삭제된 제외 항목을 볼 수 있습니다.
- AWS CLI
-
lookup-events 명령을 사용하여 제외 항목 삭제와 관련된 이벤트를 볼 수 있습니다.
aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::EC2::VPCBlockPublicAccessExclusion
고급 예제가 완료되었습니다.