본문 바로가기

Cloud/AWS

Route 53 Resolver DNS 방화벽

Today Keys :  route 53, resolver, dns, firewall, 도메인, domain, query, 질의, 방화벽, firewall manager
 

이번 포스팅은 VPC 내에서 도메인 질의를 제어하기 위한 관리형 DNS 방화벽인, Route 53 Resolver DNS 방화벽에 대한 예제 포스팅입니다. Route 53 Resolver DNS 방화벽 적용을 위한 규칙 그룹과 도메인 목록을 만들어서, VPC에 적용하여 어떻게 제어를 하는지 간단하게 살펴봅니다.

Route 53 Resolver DNS 방화벽을 이용하면
VPC 내에서 아웃바운드 DNS 트래픽을 Filtering을 통해 도메인 질의를 제한 할 수 있습니다.          
 
규칙 그룹을 추가하는 첫 번째 Step는 규칙 그룹을 이름을 정하는 것입니다.
이름과 해당 규칙 그룹에 대한 이름을 적절하게 짓습니다.
여기에서는 ZIGI-Resolver-FW 라는 이름으로 규칙 그룹의 이름을 정하고, 설명은 별도로 넣지 않았습니다.           
 
규칙 그룹을 추가하는 두 번째 Step은 규칙을 추가하는 것입니다.
먼저 규칙 그룹을 만들고 나중에 추가 할 수도 있지만, 규칙 그룹을 만들면서 추가 할 수도 있습니다.
 
규칙 내에는 해당 규칙에서 관리할 도메인 목록을 설정합니다.
도메인 목록은 자체 도메인 목록 추가와 AWS 관리형 도메인 목록이 있습니다.
AWS 관리형 도메인 목록은 AWS를 통해서 관리하는 도메인이라고 보면 되고,
그 이외의 도메인 목록은 자체 도메인 목록이라고 보시면 됩니다.
자체 도메인 목록으로 추가 시에, 사전에 미리 정의한 도메인 목록을 선택하거나,
새로운 도메인 목록을 만들어서 지정할 수 있습니다.
그리고, 현재 규칙에 설정된 도메인 목록에 대한 질의를 Permit, Block, Alert 할 것인지 Action을 선택 할 수 있습니다.
 
만약 Block 할 경우에는 도메인 질의에 대한 응답을 어떤 것으로 할 것인지, 3가지를 선택할 수 있습니다.
선택 가능한 옵션은 다음과 같습니다. 
 
여기에서는  ZIGI-Domain-Permit-List 라는 도메인 목록을 만들고,
web.zigispace.net과 img.zigispace.net 이라는 2개의 도메인을 등록하고 Permit Action을 지정합니다.   
 
예시처럼 도메인을 일일히 입력할 수도 있고,
'대량 업로드 전환' 메뉴를 통해서 S3에 미리 정의한 도메인 목록을 한꺼번에 지정해서 관리할 수도 있습니다.
 
 
정상적으로 현재 규칙 그룹에 방금 전에 설정한 규칙이 설정된 것을 볼 수 있습니다.
테스트를 위해서 추가로 규칙을 만들기 위해서 '규칙 추가'를 선택합니다.
 
이번에는 ZIGI-Resolver-FW-Block-Rule2라는 이름으로 규칙을 만들고,
도메인에 *.zigispace.net 을 입력합니다.
즉,  zigispace.net의 모든 서브 도메인에 해당하는 규칙입니다.
 
이 규칙에 대해서는 Block Action을 선택하고, 질의에 대한 결과에 대한 응답이 불가(No answer)하도록 NODATA를 선택합니다.
 
정상적으로 규칙 2가지가 만들어진 것을 볼 수 있습니다. 
 
규칙 그룹을 만드는 3번째 Step은 규칙에 대한 우선 순위입니다.
규칙 그룹에 들어간 규칙은 Top-Down 방식으로 적용이 됩니다.
2번째로 만든 ZIGI-Resolver-FW-Block-Rule2를 우선 순위가 더 높게 아래와 같이 조정합니다.   
규칙 그룹을 만드는 4번째 단계는 태그 설정입니다.
여기에서는 별도의 태그를 추가하지 않고 넘어갑니다. 
 
규칙 그룹을 만드는 마지막 단계로, 전체 설정한 값을 검토하고,
'Create rule group'을 클릭하여 규칙 그룹을 생성합니다.   
 
현재 정상적으로 규칙 그룹이 만들어진 것을 볼 수 있습니다.   
 
규칙 그룹을 선택하여 세부 정보를 아래와 같이 확인 할 수 있습니다.
현재 규칙 그룹을 만들기만 하고, VPC에 연결하지 않았기 때문에
VPC 연결 상태는 '연결되지 않음', 연결된 VPC 수는 '0'으로 표기 됩니다.
하단에는 현재 설정된 규칙을 볼 수 있습니다.
참고로, 이렇게 개별적으로 규칙 그룹을 생성하고 관리하지 않고 Firewall Manager를 사용하면 조직 전체에 적용하고 관리할 수도 있습니다.
이번 포스팅에서는 Firewall Manager에 연결하지는 않습니다. 
 
 
등록된 규칙 그룹 및 규칙, 도메인 목록을 정리하면 다음과 같습니다.
 
이제 Route 53 Resolver DNS 방화벽 동작 확인을 위해서 VPC 내의 EC2 인스턴스에서 nslookup으로 도메인 질의 확인을 합니다.
테스트로 질의할 레코드를 3개이며 다음과 같습니다.
 
레코드
타입
blog
A
10.10.10.10
img
A
10.20.20.20
web
CNAME
blog.zigispace.net
 
3개의 도메인을 각각 질의하면 아래와 같이 정상적으로 질의한 결과가 뜨는 것을 볼 수 있습니다.   
 
이제 규칙 그룹에 VPC를 연결하여 다시 시도합니다.
규칙 그룹에서 'VPC 연결'을 선택합니다.
 
테스트를 진행 할 VPC를 선택하여, VPC를 연결합니다.
 
아래와 같이 정상적으로 연결된 것을 확인할 수 있습니다.
 
이제 다시 도메인을 질의하면,
3개의 도메인 모두 질의한 값을 받을 수 없는 것을 볼 수 있습니다.
현재 규칙에 *.zigispace.net 을 Block 하는 규칙이 최우선순위로 있기 때문입니다.
 
그럼 이제, 규칙의 우선순위를 조정해서 다시 테스트를 합니다.
 
img.zigispace.net과 web.zigispace.net을 허용(Allow)하는 규칙의 우선순위를 1순위로 올립니다.
 
이제 다시 도메인 질의를 합니다.
blog.zigispace.net는 여전히 값을 받아오지 못하고,
img.zigispace.net은  정상적으로 값을 받아오고,
web.zigispace.net은 cname 값만 받아오고, cname에 연결된 값은 받아오지 못합니다.
img.zigispace.net와 web.zigispace.net을 허용하는 규칙이 1순위이기 때문에 2개의 도메인 질의는 받아오긴 하지만,
web.zigispace.net은 cname 값으로 blog.zigispace.net으로 설정되어 있어서, 해당 값에 대한 답을 받아오지 못하기 떄문입니다.
 
실제 간단하게 ping으로 web.zigispace.net을 해보면,
Name or service not knwon으로 해당 도메인에 대한 질의 값을 정상적으로 받아오지 못하는 것을 볼 수 있습니다.