관리 메뉴

개발자비행일지

DNSSEC(DNS Security Extensions) 본문

▶ Computer Science

DNSSEC(DNS Security Extensions)

Cyber0946 2020. 10. 20. 16:01

우리는 인터넷 홈페이지에 접속 할 때, 상대방의 IP를 통해 접속하지 않는다. DNS라는 편리한 별칭 주소체계를 이용한다.

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

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

DNS의 작동 원리

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

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

접속하려는 도메인의 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 hijacking과 DNS Cache Poisoning를 알아보면..

DNS hijacking

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

DNS Cache Poisoning

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

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

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

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

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

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

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

정합성

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

DNS 레코드 인증

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

Chain of Trust

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

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

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

참고:

https://www.cloudflare.com/learning/dns/dns-server-types/

https://www.efficientip.com/what-is-dnssec/

https://blog.naver.com/aepkoreanet/221478403178

[출처] DNS 보안을 위한 DNSSEC(DNS Security Extensions) 살펴보기|작성자 Tech유람

'▶ Computer Science' 카테고리의 다른 글

파이프라이닝(Pipelining)  (0) 2020.12.01
신호  (0) 2020.11.15
Write Through, Write Back  (0) 2020.09.28
스트림 암호 one-time-pad 공격  (0) 2020.09.03
버스 스누핑(Bus Snooping), 캐시 일관성, 커널 보안  (0) 2020.09.03