페이지 상단으로

정보

DNS FAQ

홈으로 > 정보 > FAQ > DNS FAQ
  • DNS
  • DNSSEC
  • 화살표 궁금하신 질문을 입력해 주십시오. 예) 정보보호제품
  • 검색하기
  • *추가 문의사항 접수 : in_chk@nic.or.kr
DNS-DNSSEC FAQ 목록
번호 FAQ
10 질문 DNSSEC이 피싱, 파밍, DDoS 공격 등을 방지할 수 있나요?
다양한 보안공격 유형들 중 DNSSEC은 아래와 같이 "데이터 위-변조" 유형의 공격에 한하여 보안성 강화와 방어체계를 제공합니다.
9 질문 DNSSEC을 지원하는 DNS S/W에는 어떤 것이 있나요?
다음의 DNS S/W들이 DNSSEC을 지원하고 있습니다.

 o NSC(권한DNS) / Unbound(캐시DNS), https://www.nlnetlabs.nl
 o Knot DNS, https://knot-dns.cz
 o Windows Server 2012 이상, https://www.microsoft.com
  ※ Windows Server 2008 이전 버전은 DNSSEC을 지원하지 않으며, 2008 R2는 일부 기능만 구현하고 있어, DNSSEC 사용 시 2012 이후 버전을 사용할 것을 권고
 
위에 나열된 DNS S/W 외에도 최신 DNS S/W는 대부분 DNSSEC을 지원하고 있으며, 더 자세한 사항은 사용 중이신 DNS S/W의 개발사에 문의하시기 바랍니다.
8 질문 DNSSEC 지원을 위한 BIND 9 DNS S/W 패키지 컴파일 방법
BIND DNS는 DNSSEC 지원 네임서버로 동작하기 위해 OpenSSL 패키지를 필요로 한다. BIND 9 DNS를 컴파일 할 때, 디폴트로 컴파일 하는 경우에는 DNSSEC을 지원하지 않는다.
 
DNSSEC을 지원하도록 컴파일 하려면 "--with-openssl" 옵션을 지정하여 컴파일 환경을 설정하는 것이 요구된다.
 
따라서 BIND S/W를 DNSSEC이 지원하는 네임서버로 컴파일 하기 위해서는 먼저 시스템에 OpenSSL 패키지가 설치 구성되어 있어야 한다. OpenSSL 패키지는 취약점이 패치된 버전이 필요하므로 가능한 최신버전으로 설치한다.
 
o OpenSSL 프로젝트 공식 홈페이지, http://www.openssl.org
 
OpenSSL은 소스 패키지를 다운받아 컴파일하여 설치하거나 미리 컴파일된 설치 패키지를 다운로드 하여 설치한다.
 
DNSSEC 지원 가능하도록 하기위한 BIND 9 DNS 서버 컴파일 절차는 다음과 같다.
 
$ ./configure ―with-openssl=/usr/local/ssl
$ make
$ make install
 
위 사례에서 "--with-openssl=/usr/local/ssl"에서의 디렉토리 "/usr/local/ssl"은 시스템의 OpenSSL이 설치된 디렉토리를 의미한다. 이 위치는 시스템에 따라 다를 수 있다.
7 질문 PC에서의 도메인 위-변조 검증방법은?
① 서명검증 가능한 DNSSEC 캐시 DNS서버를 PC에 설정하는 방법
6 질문 도메인 존의 A 레코드가 변조되거나 서명이 유효기간이 경과해 버리면 어떻게 되나?
① 서명검증 가능한 DNSSEC 캐시 DNS서버를 이용하고 있는 경우
 
대상 웹 사이트에 접속할 수 없다.
DNSSEC 캐시 DNS서버가 해당 도메인 레코드에 대해 서명검증에 실패하여 위-변조된 데이터로 판단하기 때문에 사용자 호스트로는 응답 데이터가 없는 에러 응답메시지로 응답하기 때문이다. 이때 DNS 응답 메시지에 설정되는 에러코드는 SERVFAIL(Server Fail)이다.
일반 웹 브라우저에서는 네트워크 장애 등에 의한 DNS 조회실패인지 서명검증 실패에 의한 것인지를 알 수 없다.
 
 
② 웹 브라우저에 DNSSEC 서명검증 부가기능을 설치하여 이용하고 있는 경우
 
대상 웹 사이트에 접속할 수 없다.
그러나 웹 브라우저의 DNSSEC Validator와 같은 서명검증 부가기능이 제공하는 상태 아이콘에 의해 서명 유효기간 만료에 의한 서명검증 실패에 의해 접속이 불가능한 것이라는 확인할 수 있다.
 
 
③ DNSSEC 서명검증 기능이 없는 일반 캐시 DNS서버를 이용하고 있는 경우
 
대상 웹 사이트에 접속하게 된다.
이 경우 캐시 DNS서버가 DNSSEC 서명검증을 수행하지 않으므로, 서명 유효기간 만료 여부를 검사하지 않고 DNS 질의응답 과정에서 파악된 A 레코드가 있으면 이 레코드 그대로 호스트로 응답 처리한다.
5 질문 서명검증 실패 종류에는 어떤 것들이 있는가?
특정 리소스 레코드에 대한 RRSIG 리소스 레코드가 오류가 있거나, 누락되어 검증될 수 없다고 한다면, DNSSEC 지원 캐시 DNS서버는 이 응답을 "위조된(bogus)" 데이터로 표시를 하고, 질의에 대한 응답으로는 SERVFAIL 에러로 응답한다.
4 질문 에러응답 경우, 장애가 원인인지 서명검증 실패가 원인인지 확인하는 방법은?
DNSSEC 질의를 사용한 점검으로 구분 및 확인이 가능하다.
3 질문 DNSSEC DS 레코드의 용도는 무엇인가?
DS는 "Delegation Signer"의 약자로써 위임에 대한 서명자(signer)라는 뜻을 가지고 있다.
 
DS 레코드는 DNSSEC에 의해 DNS 체계에 새로이 형성되는 트리구조의 논리적 보안위임체계인 "인증사슬"을 구성하는 핵심요소로 역할 한다.
 
DS 레코드는 자식 도메인 존의 DNSKEY 레코드의 해시(hash) 값을 가지고 있어, 해시처리를 통해 자식 도메인 존의 DNSKEY 레코드가 DS 레코드의 해시(hash) 값과 일치하는지 여부를 인증 확인할 수 있게 한다. DS 레코드는 자식 도메인 존의 정당한 DNSKEY 레코드를 보안 인증할 수 있는 수단을 제공한다.
 
DS 레코드는 자식 도메인에 대한 DS 레코드로 자식 도메인 존의 서명처리 과정에서 키 서명키(KSK)의 DNSKEY 레코드를 해시 처리하여 산출된다. 그러나 DS 레코드는 부모 도메인 존에 등록 반영됨으로서, 부모 도메인 존이 자식 도메인 존의 DS 레코드를 설정하고 자신의 서명키로 서명 처리한다. 이와 같은 방식으로 도메인 존의 DNSKEY 레코드 및 부모 존에 등록설정하는 DS 레코드로 최상위의 루트 도메인 존까지 연결되는 논리적 체인인 "인증사슬"을 형성한다.
 
DS 레코드와 이 DS 레코드와 해시값으로 일치하는 자식 도메인 존의 DNSKEY 레코드의 연결 리스트는 DNSSEC 캐시 DNS서버에서 서명검증 절차에 핵심적인 요소로 사용된다. 루트 도메인 존으로부터 최종 도메인 존까지의 DS 레코드와 DNSKEY 레코드 체인이 모두 해시값 일치가 되어있는 상태에서 A 레코드와 같은 응답 레코드의 서명검증이 최종 완료되어야 서명검증이 성공적으로 완료된 것으로 처리된다.
2 질문 DNSSEC의 서명키는 항상 안전하다고 할 수 있는가?
DNSSEC은 공개키 암호화방식의 전자서명 기술을 이용하고 있으며, 이에 따라 DNSSEC에서 사용하는 서명키의 보안 안정성은 공개키 암호화방식의 보안 안정성과 일치한다.
 
일반적으로 시중의 컴퓨팅 시스템이 처리할 수 있는 계산능력으로는 하나의 2048 비트 서명키를 해독하기 위해 필요한 시간이 수년이상 소요되기 때문에 상대적으로 안전하다고 할 수 있다. 다만 수 십년이상 이 서명키를 지속적으로 사용한다면, 그 보안 안정성을 보장할 수 없다. 오랜 시간동안 서명키 해독을 위해 시도하고 있다면 이 서명키가 그 동안 해독될 가능성이 있어 취약한 상태에 있기 때문이다.
 
이러한 이유로, DNSSEC에 사용되는 서명키는 일정한 주기로 교체를 해 주어야 한다. 키 서명키(KSK)는 1년에 1회, 존 서명키(ZSK)는 약 3개월에 1회 정도의 주기로 새로운 서명키로 교체를 해야 보안 안정성을 유지할 수 있다고 권고하고 있다. (RFC4641)
 
공개키 암호화방식의 각 암호화 알고리즘별로 암호화 키(서명키)의 암호화 키 해독 가능성 관련 보안 안정성에 대해 지속적으로 연구가 지속되고 있으며, 특정 비트수의 암호화 키 해독을 해낼 수 있는 경우가 발견될 때마다 해당 권고사항을 공지하고 있다. 따라서 DNSSEC 서명키의 관리에 있어 보안안정성을 유지하기 위해서는 공개키 암호화 알고리즘 암호화키 관련 보안공지사항에 따라 서명키 생성 등에 참고하여 관리하는 것이 필요하다.
 
BIND DNS 같은 경우, DNSSEC에 필요한 공개키 암호화방식의 암호화 기능은 OpenSSL 라이브러리를 사용하고 있으므로, OpenSSL의 보안 취약점에 대한 공지사항 확인과 패치 업데이트도 중요하다.
1 질문 Windows PC에서 BIND의 dig, dnssec-keygen 유틸리티를 사용하는 방법은?
Windows용 BIND 패키지에는 BIND 네임서버 프로그램 외에 dig, nslookup, named-checkconf, named-checkzone, nsupdate 등 DNS 진단 및 관리도구가 포함되어 있다. 이러한 유틸리티를 Windows PC에서 직접 사용할 수 있게 구성하면 DNS 관리에 도움이 된다.
 
o ISC BIND DNS 패키지 배포 페이지, http://bind9.net
 
위 페이지에서, 필요한 BIND DNS 버전을 선택하고, 해당 "Windows Download" 링크를 클릭하여 Windows용 BIND DNS 바이너리 압축파일을 다운로드 한다.
 
[구성 방법]
 
① 다운로드한 Windows용 BIND DNS 패키지 압축파일을 "C:\Bind9"와 같은 디렉토리에 풀어낸다.
② Windows용 BIND DNS를 처음 PC에 구성하는 경우, 구성파일 중 "vcredist_x86.exe"을 실행시켜 BIND DNS 유틸리티 실행에 필요한 라이브러리 파일을 PC에 설치한다.
③ 디렉토리 "C:\Bind9"를 아래와 같이 PC의 환경변수 PATH에 추가 설정한다.
   "컴퓨터"의 "속성" -> "고급 시스템 설정" -> "환경변수" -> "시스템 변수" 중 Path 변수를 선택하여 "편집"을 클릭 -> Path 변수 값의 끝에 ";C:\Bind9"를 추가 입력
 
이로써 PC에서 dig 유틸리티 등을 사용할 수 있는 환경 구성이 완료된다.
1