Amazon Web Services 한국 블로그

Amazon Route 53 Resolver DNS 방화벽으로 CNAME 체인 문제 해결하기

오늘부터 Amazon Route 53 Resolver DNS Firewall (방화벽)이 분석 체인(예: CNAME, DNAME, Alias 체인)의 모든 도메인을 자동으로 신뢰하도록 구성할 수 있습니다.

아직 DNS에 익숙하지 않은 분들을 위해 비기술적인 용어로 설명해드리겠습니다.

DNS 방화벽을 사용하는 이유는 무엇인가요?
Route53 Resolver DNS 방화벽은 클라우드의 사설 네트워크(Amazon Virtual Private Cloud(Amazon VPC))로부터의 아웃바운드 DNS 요청을 보호합니다. 이러한 요청은 도메인 이름 분석을 위해 Amazon Route 53 Resolver를 통해 라우팅됩니다. 방화벽 관리자는 아웃바운드 DNS 트래픽을 필터링하고 규제하는 규칙을 구성할 수 있습니다.

DNS 방화벽은 여러 보안 위험으로부터 보호하는 데 도움이 됩니다.

악의적인 공격자가 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 또는 Virtual Private Cloud(VPC) 중 하나에서 실행 중인 컨테이너에 일부 코드를 설치 및 실행했다고 가정해 보겠습니다. 이 악성 코드는 발신 네트워크 연결을 시작할 가능성이 높습니다. 이러한 연결을 시작하면 명령 서버에 연결하여 컴퓨터에서 실행할 명령을 받을 수 있게 됩니다. 또는 조직적인 분산 서비스 거부(DDoS) 공격으로 타사 서비스에 대한 연결을 시작할 수도 있습니다. 혹은 네트워크에서 수집한 데이터를 유출할 수도 할 수도 있습니다.

하지만 다행히도 네트워크 및 보안 그룹이 올바르게 구성되어 있었기 때문에 앱에서 사용하는 잘 알려진 API 엔드포인트로의 트래픽을 제외한 모든 발신 트래픽을 차단했습니다. 아직까지는 큰 문제가 없습니다. 악성 코드는 일반 TCP 또는 UDP 연결을 사용하여 집으로 전화를 걸 수 없습니다.

그렇다면 DNS 트래픽은 어떨까요? 악성 코드는 제어 명령 또는 인코딩된 데이터를 전송하기 위해 자신이 제어하는, 권한이 있는 DNS 서버에 DNS 요청을 보내고 응답으로 데이터를 다시 받을 수 있습니다. 다음 다이어그램에 그 과정을 설명해 두었습니다.DNS 유출에 대한 설명이러한 시나리오를 방지하기 위해 DNS 방화벽을 사용하여 애플리케이션이 쿼리할 수 있는 도메인을 모니터링하고 제어할 수 있습니다. 사용자는 불량한 것으로 확인된 도메인에 대한 액세스를 거부하고 다른 모든 쿼리는 통과하도록 허용할 수 있습니다. 또는 명시적으로 신뢰하는 도메인을 제외한 모든 도메인에 대한 액세스를 거부할 수 있습니다.

CNAME, DNAME 및 별칭 레코드의 문제점은 무엇인가요?
잘 알려진 특정 도메인에 대해서만 DNS 쿼리를 허용하고 다른 모든 도메인은 차단하도록 DNS 방화벽을 구성했다고 가정해 보겠습니다. 애플리케이션이 alexa.amazon.com;과 통신하므로 DNS 트래픽이 해당 호스트 이름을 분석하도록 허용하는 규칙을 만들었습니다.

그러나 DNS 시스템에는 여러 유형의 레코드가 있습니다. 이 글에서 주목하려는 사항은 다음과 같습니다.

  • DNS 이름을 IP 주소에 매핑하는 A 레코드,
  • 다른 DNS 이름과 동의어인 CNAME 레코드,
  • DNS 이름 트리의 일부에서 다른 부분으로 리디렉션을 제공하는 DNAME 레코드 및
  • DNS 기능에 대한 라우트 53 특정 확장을 제공하는 별칭 레코드. 별칭 레코드를 사용하면 Amazon CloudFront 배포 및 Amazon S3 버킷과 같은 선택된 AWS 리소스로 트래픽을 라우팅할 수 있습니다

alexa.amazon.com을 쿼리할 때 실제로는 pitangui.amazon.com을 가리키는 CNAME 레코드이며, 이는 또 다른 CNAME 레코드인 tp.5fd53c725-frontier.amazon.com을 가리키고, 이는 다시 d1wg1w6p5q8555.cloudfront.netCNAME인 것을 알 수 있습니다. 마지막 이름(d1wg1w6p5q8555.cloudfront.net)에만 IP 주소 3.162.42.28과 연결된 A 레코드가 있습니다. IP 주소는 사용자마다 다를 수 있습니다. 가장 가까운 Amazon CloudFront 엣지 로케이션 파리(CDG52)를 가리킵니다.

DNAME 또는 Alias 레코드를 분석할 때도 유사한 리디렉션 메커니즘이 발생합니다.

alexa.amazon.com에 대한 DNS 분석

이러한 CNAME 체인의 완전한 분석을 허용하려면 amazon.com(*.amazon.com) 아래의 모든 이름을 허용하도록 DNS 방화벽 규칙을 구성하고 싶을 수 있지만 이렇게 하면 cloudfront.net으로 연결되는 마지막 CNAME을 분석하지 못할 수 있습니다.

최악의 경우, 애플리케이션이 연결하는 서비스에 의해 DNS CNAME 체인이 제어됩니다. 체인은 언제든지 변경될 수 있으므로 DNS 방화벽 규칙 내에서 규칙 및 권한이 부여된 도메인 목록을 수동으로 유지 관리해야 합니다.

DNS 방화벽 리디렉션 체인 인증 소개
이 설명을 바탕으로 오늘 출시하는 새로운 기능을 이해할 수 있게 되었습니다. DNS 방화벽이 CNAME, DNAME 또는 Alias 체인의 모든 도메인을 따르고 자동으로 신뢰하도록 구성하기 위해 UpdateFirewallRule API(AWS Command Line Interface (AWS CLI)AWS Management Console에서도 사용 가능)에 매개 변수를 추가했습니다.

방화벽 관리자는 이 매개변수를 통해 애플리케이션이 쿼리하는 도메인만 허용할 수 있습니다. 방화벽은 IP 주소가 있는 A 레코드에 도달할 때까지 체인의 모든 중간 도메인을 자동으로 신뢰합니다.

실제 작동 모습 살펴보기
도메인 목록, 규칙 그룹 및 도메인 alexa.amazon.com에 대한 쿼리를 허용하는 규칙으로 이미 구성된 DNS 방화벽으로 시작합니다. 규칙 그룹이 EC2 인스턴스가 시작된 VPC에 연결되어 있습니다.

해당 EC2 인스턴스에 연결하여 alexa.amazon.com을 분석하기 위해 DNS 쿼리를 실행하면 도메인 체인의 첫 번째 이름(pitangui.amazon.com)만 반환하고 거기서 멈춥니다. 이는 pitangui.amazon.com이 분석 권한이 없기 때문에 예상되는 문제입니다.

alexa.amazon.com에 대한 DNS 쿼리가 첫 번째 CNAME에서 차단됨

이 문제를 해결하기 위해 전체 리디렉션 체인을 신뢰하도록 방화벽 규칙을 업데이트합니다. AWS CLI를 사용하여 새 매개 변수 firewall-domain-redirection-actionTRUST_REDIRECTION_DOMAIN으로 설정한 update-firewall-rule API를 호출합니다.

DNS 방화벽 규칙을 업데이트하는 AWS CLI

다음 다이어그램은 이 단계의 설정을 보여줍니다.DNS 방화벽 규칙 다이어그램EC2 인스턴스로 돌아와서 DNS 쿼리를 다시 시도합니다. 이번에는 제대로 작동합니다. IP 주소까지 전체 리디렉션 체인을 분석합니다🎉.

전체 CNAME 체인에 대한 DNS 분석

신뢰할 수 있는 체인 리디렉션 덕분에 네트워크 관리자는 이제 CNAME, DNAME, Alias 체인에 신경 쓰지 않고도 모든 도메인을 차단하고 알려진 도메인만 DNS 방화벽에서 승인하는 전략을 쉽게 구현할 수 있습니다.

이 기능은 모든 AWS 리전에서 추가 비용 없이 사용할 수 있습니다. 지금 바로 사용해 보세요!

— seb