brunch

You can make anything
by writing

C.S.Lewis

by 테크유람 Mar 28. 2021

DNS 보안을 위한 DNSSEC 살펴보기

DNSSEC(DNS Security Extensions)

DNS는 인터넷 도메인의 record라 부르는 정보를 제공하기 위해 네트워크 구간에 설치되어 운영되는 서버입니다. 만약 DNS가 잘못된 정보를 제공한다면, 가짜 피싱 사이트로 사용자를 유도하여 ID/PW를 탈취하거나 이메일을 엿보고 인터넷 통화를 엿듣는 등의 범죄에 악용될 수 있습니다. 따라서 DNS의 보안 또한 IT 보안에서 매우 중요한 요소라 할 수 있습니다.


DNSSEC(Domain Name System Security Extensions)은 DNS의 보안성을 높이기 위한 기술입니다. DNSSEC을 이해하기 위해서는 DNS의 작동 과정과 이 과정에서 어느 부분에 보안 취약성이 존재하는지를 먼저 이해해야 합니다.


DNS의 작동 원리

DNS를 통해 특정 도메인의 주소를 알아내는 과정에는 클라이언트, 리졸버, 서버 3개의 컴포넌트가 있습니다. 클라이언트에 설치된 Stub 리졸버는 클라이언트가 사용하는 인터넷사의 DNS 리졸버 혹은 별도로 지정한 DNS 리졸버에게 도메인 주소 질의를 하고, DNS 리졸버가 Recursive 방식으로 각 네임 서버들을 접속하여 주소를 알아오는 방식입니다.


<DNS의 작동 원리>


클라이언트(사용자 브라우저)

접속하려는 도메인의 DNS 정보를 요청

예) blog.naver.com의 IP 주소를 질의


클라이언트에도 DNS만을 담당하는 모듈이 소프트웨어 형태로 존재할 수 있고 이를 Stub 리졸버(Resolver)라고 합니다. 주로 운영 체제(OS)에 포함되어 있습니다.


DNS 리졸버(Resolver)

클라이언트의 요청을 받고 해당 도메인의 정보를 요청 및 캐시 하는 서버

예) .com, naver, blog 도메인의 정보를 요청


DNS Resolver는 ISP의 안전한 네트워크에서 운용됩니다. 많은 가입자 클라이언트들의 DNS 질의를 받아 빠르게 결과를 전송해야 하므로 성능과 보안 모두 중요합니다. ISP가 아닌 구글이나 Cloudflare와 같은 클라우드 기반 회사들도 자체적인 DNS Resolver를 운영하고 있습니다. 구글의 OpenDNS(8.8.8.8), Cloudflare의 1.1.1.1 서비스가 여기에 해당합니다. 도메인의 구조에 따라 반복적인 질의를 하며 결과를 찾아내기 때문에 DNS Recursive Resolver 혹은 DNS Recursor라고도 부릅니다.


DNS 서버

DNS Resolver의 요청을 받고 DNS의 정보를 알려주는 서버

예) .com, naver, blog 도메인의 정보를 제공


DNS 기술 자체를 만들 때는 보안에 대한 개념이 적었기 때문에 일반적인 DNS 질의 과정 중에는 다음과 같은 보안 취약점이 있습니다. 

<DNS의 보안 취약점>

이중에서도 대표적인 DNS 공격 두 가지 - DNS 하이재킹과 DNS 캐시 포이즌을 알아본다면 다음과 같습니다.


DNS 하이재킹(hijacking)

도메인 등록 정보는 Registra(도메인 등록 대형 업체) 혹은 직접 DNS를 운영하는데, Registra의 관리 페이지는 보통 단순하게 ID/PW 기반으로 로그인합니다. 만약 관리자의 ID/PW 정보가 유출되었다면 해커가 DNS 정보를 변경하는 DNS hijacking의 위험성이 있습니다.


DNS 캐시 포이즌(Cache Poisoning)

DNS 리졸버는 한번 질의한 DNS 정보에 대해 TTL(Time to live) 주기 동안 캐싱을 하는데, 캐싱된 정보를 위조하여 결괏값을 변경하는 공격입니다.


그렇다면 DNSSEC은 어떤 핵심 기술을 통해 DNS 정보의 위변조를 방지할까요?

크게 3가지로 분류할 수 있습니다.


DNS 결괏값(레코드)이 변조되지 않은 올바른 값임을 증명하는 정합성(integrity)

DNS 레코드가 올바른 DNS 서버에서 조회한 값임을 증명하는 서버 인증(authenticity)

DNS 계층별로 각 DNS 서버가 올바른 서버임을 증명하는 Chain of Trust


DNSSEC은 위 3가지 기능에 대해 전자 서명과 PKI 기술을 사용하여 구현합니다.


정합성(integrity)

캐싱된 DNS 정보나, Authorative 서버를 통해 전달받은 레코드 값이 올바른 값인지를 전자 서명을 통해 검사합니다. 사설 키를 통해 만들어진 해시값을 공개키를 통해 검증하는 방식입니다.


<이미지 출처: ww.efficientip.com>


DNS 레코드 인증

DNS 결괏값이 올바른 DNS 존으로부터 도출되었는지를 검사합니다.


<이미지 출처: ww.efficientip.com>


Chain of Trust

DNS 체인이 올바른 값인지를 검사합니다.

<이미지 출처: ww.efficientip.com>


마지막으로, DNSSEC이 사용하는 암호키를 안전하게 저장하는 또한 매우 중요합니다.

일반적으로 S/W 방식 혹은 H/W 방식의 HSM(Hardware Security Module) 방식을 사용합니다.



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari