AWS 기술 블로그

Amazon S3용 마운트포인트를 사용한 Amazon VPC 트래픽 미러링

이 글은 Networking & Content Delivery 블로그의 Capture packets with Amazon VPC Traffic Mirroring and Mountpoint for Amazon S3 의 한국어 번역입니다.

트래픽 미러링은 Amazon Elastic Compute Cloud (EC2) 인스턴스의 엘라스틱 네트워크 인터페이스에서 네트워크 트래픽을 복사하고 분석을 위해 대상 스토리지 서비스로 전송하는 데 사용할 수 있는 Amazon VPC의 기능으로서, 콘텐츠 검사, 위협 모니터링, 네트워크 성능 모니터링 및 문제 해결에 사용할 수 있습니다. 트래픽 미러링을 사용하면 특정 트래픽 패턴을 분석하여 애플리케이션 계층이나 Amazon EC2 인스턴스 간의 보안 취약 구간 또는 병목 구간을 식별 할 수 있습니다. 또한 VPC 트래픽 미러링은 필터 및 패킷 잘라내기를 지원하므로 원하는 모니터링 도구를 사용하여 모니터링 대상트래픽만 추출할 수 있습니다.

이전 게시물인 VPC 트래픽 미러링 사용 GWLB 엔드포인트를 대상으로 하는 트래픽 미러링 소개에서는 기본 VPC 트래픽 미러링 기능을 사용하는 방법과, 중앙 집중식 방식으로 AWS Gateway Load Balancer (GWLB) 를 대상으로 사용하는 방법에 대해 알아보았습니다. 이 게시물에서는 이러한 기능을 사용하고 Amazon S3용 마운트포인트를 사용하여 중앙 집중식 Amazon Simple Storage Service (S3) 버킷으로 패킷 캡처 (PCAP) 를 추가로 내보내는 방법을 살펴봅니다.

Amazon S3용 마운트 포인트는 이 중앙 집중식 버킷을 마운트하고 로컬 파일 시스템으로 액세스하는 데 사용되어, 생성된 PCAP을 저장하고 액세스할 때 최적화된 높은 처리 성능을 제공합니다. 아키텍처 디자인에는 AWS GWLB, Amazon EC2 오토 스케일링 그룹, Amazon S3 및 VPC 트래픽 미러링을 사용하는 것이 포함됩니다. 아키텍처 디자인을 구현하기 전에 VPC 트래픽 미러링의 제한할당량을 검토하는 것이 좋습니다.

트래픽 미러링 솔루션 아키텍처 디자인

이 솔루션은 EC2 소스 인스턴스에 영구 트래픽 미러링 세션을 생성하여 대상인 GWLB 로 전달합니다. GWLB의 오토 스케일링 그룹에는 TCP (전송 제어 프로토콜) 덤프를 수행하고 PCAP을 중앙 집중식 S3 버킷으로 내보내는 대상 EC2 인스턴스 그룹이 있습니다. 에이전트 노드는 정기적으로 (예: 900초마다) 패킷을 캡처하여 중앙 집중식 스토리지 역할을 하는 구성된 S3 버킷에 패킷덤프를 저장 합니다.

샘플 솔루션은 소스에 대해 서로 다른 두 스포크 계정에 EC2 인스턴스를 생성하고 미러링 세션을 생성합니다. 중앙 집중식 GWLB, TCP 덤프 에이전트 플릿, PCAP을 저장하기 위한 S3 버킷은 허브 계정에 있습니다. 이는 다음 다이어그램에 나와 있습니다. (그림 1)

그림1. 트래픽 미러링 솔루션 아키텍처 디자인

솔루션 모듈 배포

이 솔루션은 Hashicorp Terraform을 기반으로 하며 허브 계정의 트래픽 미러링 구성 요소 및 GWLB, 소스 EC2 인스턴스 및 스포크 계정의 GWLB 엔드포인트를 위한 주요 모듈로 구성됩니다.

GWLB 엔드포인트 서비스 및 엔드포인트는 다양한 아키텍처 패턴으로 배포할 수 있습니다.

  • 방법 1: 모든 보안 주체 허용 및 수락 기능 제어단순화 및 자동화를 위해 이 솔루션은 이 방법을 따릅니다. terraform.tfvars에서 “enable_manual_acceptance” 변수를 업데이트하여 수동 수락이 필요하도록 변경할 수 있습니다.
  • 방법 2: 변수를 통해 특정 주체만 허용하고 자동 수락을 활성화합니다.

허브 계정 구성 요소: (모듈: gwlb_target)
여기에는 GWLB, GWLB 엔드포인트 서비스, TCP 덤프를 수행하기 위해 EC2 인스턴스에 에이전트가 설치된 오토 스케일링 그룹, PCAP을 저장하기 위한 S3 버킷이 포함됩니다.

스포크 계정 구성 요소: (모듈: ec2_src, tm_session)
여기에는 소스 EC2 인스턴스, GWLB 엔드포인트 및 세션, 필터, 규칙과 같은 트래픽 미러 구성 요소가 포함됩니다.

배포 단계

  1. GitHub 소스에서 프로젝트를 복제합니다.
  2. 허브 계정과 스포크 계정 모두에 필요한 수임 역할을 지정하여 providers.tf 파일을 업데이트하세요.
  3. terraform.tfvars를 필요한 값으로 업데이트하세요.
  4. 코드 터미널에서 다음 Terraform 명령을 실행하여 필수 구성 요소를 배포합니다.
    작업 디렉터리를 준비하세요: terraform init
    구성이 유효한지 확인: terraform validate
    현재 구성에 필요한 변경 사항 표시: terraform plan
    인프라 생성 또는 업데이트: terraform apply --auto-approve
  5. 허브 및 스포크 계정에 구성 요소 (아래 목록 참조) 가 성공적으로 배포 되었는지 확인합니다.

주요 배포 자원

  • 스포크 VPC1의 GWLB 엔드포인트 (타겟 A) 에 대한 트래픽 미러링 대상
  • 스포크 VPC2의 GWLB 엔드포인트 (타겟 B) 에 대한 트래픽 미러링 대상
  • GWLB 엔드포인트의 TCP 인바운드 트래픽 (필터 1) 에 대한 트래픽 미러링 규칙이 포함된 트래픽 미러링 필터
  • 스포크 VPC1의 트래픽 미러링 세션에는 다음이 포함됩니다.
    • 트래픽 미러링 소스
    • GWLB 엔드포인트의 트래픽 미러링 대상 (타겟 A)
    • TCP 인바운드 트래픽에 대한 트래픽 미러링 규칙이 포함된 트래픽 미러링 필터 (필터 1)
  • 스포크 VPC1의 트래픽 미러링 세션에는 다음이 포함됩니다.
    • 트래픽 미러링 소스
    • GWLB 엔드포인트의 트래픽 미러링 대상 (타겟 B)
    • TCP 인바운드 트래픽에 대한 트래픽 미러링 규칙이 포함된 트래픽 미러링 필터 (필터 1)
  • GWLB는 Auto Scaling 그룹 뒤에 여러 어플라이언스를 대상으로 하는 허브 VPC에 배포됩니다.대상에는 PCAP을 생성하는 TCP 덤프 서비스가 설치되어 있습니다 (15분마다 생성).
  • PCAP 파일을 저장하는 중앙 집중식 S3 버킷입니다.Amazon S3용 마운트 포인트를 사용하여 S3 버킷을 마운트하여 생성된 PCAP을 다시 기록합니다.이 새로운 기능에 대한 세부 정보는 여기에서 설명합니다.

PCAP 파일 보기

구성 요소를 배포하고 나면 다음 스크린샷과 같이 트래픽 미러링 세션 (스포크 계정) 에서 트래픽 미러링을 시작하고 대상이 이를 엔드포인트 서비스 (허브 계정) 으로 전달 합니다. (그림 2 및 3)

그림 2: Spoke 계정에서 생성된 트래픽 미러링 세션

그림 3: Hub 계정의 트래픽 미러링 대상

  • TCP 덤프 에이전트를 배포한 Hub 계정에 로그인하여 PCAP 생성을 확인합니다.다음 서비스는 실행 상태여야 합니다.
       trafficmirror-tcpdump.service: TCP 덤프 작업을 수행하고 900초마다 PCAP을 생성하는 서비스 (run_tcpdump.sh에서 구성 가능) (그림 4)

systemctl status trafficmirror-tcpdump.service

그림 4: 트래픽 미러 TCP 덤프 시스템 서비스 상태

trafficmirror-svc-alerts.service: TCP 덤프 서비스에 장애가 발생할 경우 Amazon Simple Notification Service (SNS) 이메일 알림을 보내는 서비스 (그림 5)

systemctl status trafficmirror-svc-alerts.service

그림 5: 트래픽 미러는 시스템 서비스 상태를 경고

  • 생성된 중앙 집중식 S3 버킷은 패킷 캡처 디렉터리에 마운트됩니다 (그림 6).

그림 6: 패킷 캡처 디렉터리의 S3 마운트 포인트

  • 패킷 캡처 디렉터리에는 생성된 모든 PCAP을 저장하는 현재 인스턴스 ID의 폴더가 있습니다.PCAP은 YYYY-MM-DD-HH-MM 형식으로 저장됩니다 (그림 7)

그림 7: S3 마운트 포인트 디렉토리에 저장된 생성된 PCAP

  • PCAP은 다음 스크린샷과 같이 구성된 S3 버킷 (허브 계정) 에서도 사용할 수 있습니다 (그림 8).

그림 8: 아마존 S3 버킷에 저장된 PCAP

  • Wireshark와 같은 도구를 사용하여 (로컬 스토리지 필요 없이) Amazon S3에서 이러한 PCAP에 액세스하고 분석할 수 있습니다.

리소스 삭제

더 이상 필요하지 않은 리소스를 AWS 계정에 그대로 두면 요금이 발생할 수 있습니다.다음 명령을 실행하여 이 게시물에 설명된 솔루션 배포의 일환으로 생성된 인프라를 삭제 할 수 있습니다.

Destroy the infrastructure: terraform destroy --auto-approve

마치며

이 게시물에서는 이벤트 기반 패킷 캡처를 수행하고 Amazon S3에 저장하는 방법을 알아 보았으며, Amazon S3의 마운트 포인트의 장점인 탄력적인 처리량을 (Elastic throughput) 통해 보다 원활한 패킷캡처를 수행 및 저장 하는 방법을 알아 보았습니다.
생성된 패킷 캡처는 보안 위협을 해결하거나 식별하기 위해 Wireshark와 같은 타사 도구를 사용하여 다운로드하여 볼 수 있습니다.
EC2 인스턴스에 설치된 에이전트에서 실행되는 스크립트를 변경하여 패킷 크기를 조정하거나 일정 기간 내에 캡처를 완료할 수 있습니다.

Lee Hyunwoo

Lee Hyunwoo

이현우 Technical Account Manager는 클라우드 엔지니어 경험을 바탕으로 고객이 AWS 워크로드를 안정적으로 운영할 수 있도록 기술적 지원을 제공하고 있으며, 고객의 클라우드 여정에서 발생하는 다양한 과제에 대해 함께 고민하고 해결하는 역할을 수행하고 있습니다.