VPC 트래픽 미러링 – 네트워크 트래픽 캡처 및 검사 기능 출시 (서울 리전 포함)
복잡한 서비스 네트워크를 운영하는 것은 쉬운 일이 아닙니다. 네트워크 침입, 손상된 인스턴스 또는 기타 다른 예외를 나타낼 수 있는 비정상적인 트래픽 패턴이나 콘텐츠를 항상 주의 깊게 관찰해야 합니다.
이를 위해 VPC 트래픽 미러링(Traffic Mirroring) 기능을 신규 출시했습니다. 이 기능은 기존 VPC와 함께 사용하여 대규모 네트워크 트래픽을 캡처하고 검사할 수 있습니다. 이 기능을 통해 다음을 수행할 수 있습니다.
- 네트워크 및 보안 이상 감지 – VPC의 모든 워크로드에서 관심 트래픽을 추출하여 원하는 감지 도구로 라우팅할 수 있습니다. 따라서 기존의 로그 기반 도구를 사용할 때보다 더 빠르게 공격을 감지하고 대응할 수 있습니다.
- 운영 통찰력 확보 – VPC 트래픽 미러링을 사용하여 보다 정확한 정보를 기반으로 보안 결정을 내리는 데 필요한 네트워크 가시성 및 제어 기능을 활용할 수 있습니다.
- 규정 준수 및 보안 제어 구현 – 모니터링, 로깅 등을 요구하는 규제 및 규정 준수 요구 사항을 충족할 수 있습니다.
- 문제 해결 – 테스트 및 문제 해결을 위해 내부적으로 애플리케이션 트래픽을 미러링할 수 있습니다. 트래픽 패턴을 분석하여, 애플리케이션의 성능을 저하시키는 주요 지점(choke point)을 사전 예방적으로 찾아낼 수 있습니다.
VPC 트래픽 미러링은 VPC를 통과하는 네트워크 패킷에 직접 액세스할 수 있는 “가상 파이버 탭”으로 생각할 수 있습니다. 곧 알게 되겠지만 모든 트래픽을 캡처하도록 선택하거나 필터를 사용하여 특히 관심 있는 패킷을 캡처할 수 있으며 패킷당 캡처된 바이트 수를 제한하는 옵션을 사용할 수 있습니다. 다중 계정 AWS 환경에서 VPC 트래픽 미러링을 사용하여 여러 AWS 계정에 분산되어 있는 VPC의 트래픽을 캡처한 다음 검사를 위해 중앙 VPC로 라우팅할 수 있습니다.
AWS Nitro 시스템(이 글의 작성 시점을 기준으로 A1, C5, C5d, M5, M5a, M5d, R5, R5a, R5d, T3 및 z1d)을 기반으로 하는 EC2 인스턴스의 트래픽을 미러링할 수 있습니다.
VPC 트래픽 미러링 시작하기
VPC 트래픽 미러링의 핵심 요소를 검토하고 설정해 보겠습니다.
- 미러 소스 – 특정 VPC 내에 존재하며 트래픽 소스로 사용할 수 있는 AWS 네트워크 리소스입니다. VPC 트래픽 미러링은 ENI(Elastic Network Interfaces)를 미러 소스로 사용하도록 지원합니다.
- 미러 타겟 – 미러된 트래픽의 타겟으로 사용되는 ENI 또는 Network Load Balancer입니다. 타겟은 미러 소스와 동일한 AWS 계정에 있거나 위에서 언급 한 중앙-VPC 모델 구현에 사용되는 다른 계정에 있을 수 있습니다.
- 미러 필터 – 캡처(수락) 또는 건너 뛸(거부) 인바운드 또는 아웃바운드(소스와 관련된) 트래픽의 사양입니다. 필터에서 프로토콜, 소스 및 대상 포트의 범위, 소스 및 타겟의 CIDR 블록을 지정할 수 있습니다. 규칙은 번호가 매겨져, 특정 미러 세션의 범위 내에서 순서대로 처리됩니다.
- 트래픽 미러 세션 – 필터를 사용하는 미러 소스와 타겟 간의 연결입니다. 세션은 번호가 매겨져 순서대로 평가되며 첫 번째 일치(수락 또는 거부)가 패킷의 운명을 결정하는 데 사용됩니다. 지정된 패킷은 최대 하나의 타겟으로 전송됩니다.
CloudFormation이 지원되는 VPC 콘솔, EC2 CLI 또는 EC2 API를 사용하여 타겟을 설정할 수 있습니다. 저는 콘솔을 사용하겠습니다.
저는 미러 소스 및 타겟으로 사용할 ENI가 이미 있습니다(실제 사용 사례에서는 아마도 NLB 대상을 사용할 것임).
MirrorTestENI_Source 및 MirrorTestENI_Destination ENI는 이미 적절한 EC2 인스턴스에 연결되어 있습니다. VPC 콘솔을 열고 [Traffic Mirroring(트래픽 미러링)] 항목까지 아래로 스크롤한 다음 [Mirror Targets(미러 타겟)]를 클릭합니다.
Create traffic mirror target(트래픽 미러 타겟 생성)을 클릭합니다.
이제 이름과 설명을 입력하고 [Network Interface(네트워크 인터페이스)] 타겟 유형을 선택한 다음 메뉴에서 제 ENI를 선택합니다. 제가 했던 연습과 마찬가지로 타겟에 [Blog(블로그)] 태그를 추가하고 [Create(만들기)]를 클릭합니다.
내 타겟이 생성되어 즉시 사용할 수 있게 됩니다.
이제 [Mirror Filters(미러 필터)]와 [Create traffic mirror filter(트래픽 미러 필터 만들기)]를 클릭합니다. 세 개의 포트(22, 80 및 443)에서 인바운드 트래픽을 캡처하는 간단한 필터를 만들고 [Create(만들기)]를 클릭합니다.
다시 말하지만, 필터가 생성되어 곧 사용할 수 있게 됩니다.
이번에는 [Mirror Sessions(미러 세션)]와 [Create traffic mirror session(트래픽 미러 세션 만들기)]을 클릭합니다. MirrorTestENI_Source, MainTarget 및 MyFilter를 사용하는 세션을 생성하고, AWS에서 VXLAN 네트워크 식별자를 선택하도록 허용하고, 전체 패킷을 미러링하도록 지정하는 세션을 생성합니다.
이제 모든 준비가 끝났습니다. 제 필터와 일치하는 미러 소스의 트래픽은 RFC 7348에 지정된 대로 캡슐화되어 미러 타겟으로 전달됩니다. 그런 다음 Suricata와 같은 도구를 사용하여 캡처, 분석 및 시각화할 수 있습니다.
참고 사항
몇 가지 참고할 사항을 알려드리겠습니다.
- ENI당 세션 수 – 각 ENI에서 최대 세 개의 활성 세션을 가질 수 있습니다.
- 교차 VPC – 소스 및 타겟 ENI는 서로 피어링되거나 Transit Gateway를 통해 연결된 경우 서로 다른 VPC에 있을 수 있습니다.
- 확장 및 고가용성 – 대부분의 경우 트래픽을 Network Load Balancer로 미러링한 다음에 자동 확장된 EC2 인스턴스에서 캡처 및 분석 도구를 실행해야 합니다.
- 대역폭 – 각 인스턴스에서 생성되는 복제된 트래픽은 인스턴스에서 사용할 수 있는 전체 대역폭에 포함됩니다. 트래픽 정체가 발생하면 미러링된 트래픽이 먼저 삭제됩니다.
정식 출시
VPC 트래픽 미러링은 현재 사용할 수 있으며, 지금으로서는 아시아 태평양(시드니), 중국(베이징) 및 중국(닝샤)을 제외한 모든 상용 AWS 리전에서 사용할 수 있습니다. 제외된 리전에 대한 지원은 곧 추가될 예정입니다. 각 미러 소스에 대해 시간당 요금(시간당 $0.015부터)을 지불해야 합니다. 자세한 내용은 VPC 요금 페이지를 참조하십시오.
— Jeff;
Leave a Reply