페이지 상단으로

DNS FAQ

홈으로 > 정보 > FAQ > DNS FAQ
  • DNS
  • DNSSEC
검색
  • 화살표 궁금하신 질문을 입력해 주십시오. 예) 정보보호제품
  • 검색하기 다시쓰기
  • *추가 문의사항 접수 : img
10 DNSSEC이 피싱, 파밍, DDoS 공격 등을 방지할 수 있는가?

다양한 보안공격 유형들 중 DNSSEC은 아래와 같이 주로 "데이터 위-변조" 유형의 공격에 국한하여 보안성 강화와 방어체계를 제공한다.
 
공격유형
방어여부
비고
파밍 (캐시 포이즈닝)
방어/방지
o DNS 데이터 위-변조 방식 이용 공격에 효과적 대응
피싱
해당없음
o 피싱은 유사 도메인네임 사용하지만, 데이터 위-변조에 해당하지 않음
DDoS 공격
해당없음
o DDoS 공격방어 메커니즘이 아님
웜바이러스에 의한
호스트 정보변조
해당없음
o DNSSEC은 DNS 질의응답 절차관련 "데이터 위-변조" 방지기술
 
DNSSEC은 인터넷 상에서 이루어지는 DNS 질의응답 절차 가운데에서 발생할 수 있는 "DNS 데이터 위-변조" 공격을 차단하기 위한 기술이다. 웜바이러스에 의한 호스트 내부에서의 파일내용 변조 등은 DNSSEC이 포괄할 수 있는 영역이 아니다. DDoS 공격 같은 경우도 마찬가지로 대상 영역에 해당하지 않는다.

9 DNSSEC을 지원하는 DNS 서버에는 어떤 것이 있나?

다음의 네임서버들이 DNSSEC을 지원하고 있다.
 
o 오픈소스(Open Source) 네임서버
 - NSD (권한 DNS서버 전용), http://www.nlnetlabs.nl/nsd/
 - Unbound (캐시 DNS서버 전용), http://www.unbound.net/
 
o 상용 서버
 
※ Windows Server 2008 R2 경우, DNSSEC의 부분적 기능을 구현하고 있으며 Windows Server 8에서DNSSEC 전체 기능을 지원 구현할 예정으로 있음
 
이 이외에도 최근버전의 각종 네임서버들은 DNSSEC을 지원할 수 있다. 여기서는 국내에서 주로 많이 쓰고 있는 네임서버를 중심으로 소개하였다.

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에 설정하는 방법
 
DNSSEC이 적용된 캐시 DNS서버로 현재 누구나 사용할 수 있는 서버는 DNS-OARC에서 제공하고 있는 공개 DNSSEC 캐시 DNS서버가 있어 이를 이용할 수 있다.
 
o DNS-OARC 공개 DNSSEC 서명검증 캐시 DNS서버 리스트
 
캐시 DNS서버 종류
IPv4
IPv6
BIND 9
149.20.64.20
2001:4f8:3:2bc:1::64:20
Unbound
149.20.64.21
2001:4f8:3:2bc:1::64:21
 
※ DNS-OARC 공개 DNSSEC 캐시 DNS서버, https://www.dns-oarc.net/oarc/services/odvr/
 
위 2개 DNS IP주소를 PC의 DNS IP 주소 설정에 반영하면, DNSSEC 서명검증이 적용된 인터넷 환경을 사용할 수 있게 된다.
 
 
② 웹 브라우저에 DNSSEC 서명검증 기능을 제공하는 부가기능 설치하는 방법
 
현재 웹 브라우저들은 DNSSEC 서명된 도메인을 확인할 수 있는 기본 기능은 제공하지 않고 있지 않으나, 일부 웹 브라우저 경우 확장부가기능으로 설치하여 사용할 수 있는 DNSSEC 서명검증 기능이 있다.
 
주요 웹 브라우저별로 설치 이용할 수 있는 DNSSEC 서명검증용 확장부가기능 현황이다.
 
웹 브라우저 종류
DNSSEC 서명검증 확장부가기능
인터넷 익스플로러
o 해당 부가기능 없는 상태
Firefox
o DNSSEC Validator
 - 플러그인 검색 설치가능
Chrome
o DNSSEC Validator
 - Chrome 웹 스토어에서 검색 설치가능

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 에러로 응답한다.
 
리소스 레코드 자체가 데이터 변조가 된 경우에도 이 레코드에 대한 RRSIG 서명데이터에 의해 서명검증 실패가 발생되므로, DNSSEC 지원 캐시 DNS서버는 이 응답을 "위조된(bogus)" 데이터로 표시를 하고, 질의에 대한 응답으로는 SERVFAIL 에러로 응답한다.
 
이 경우 SERVFAIL의 응답 메시지는 응답 데이터 없이 응답되므로, 호스트는 아무런 데이터를 얻지 못한다.
 
일반 웹 브라우저와 같은 어플리케이션의 입장에서는, 이 응답이 수신된 경우 DNS 데이터가 존재하지 않는 경우와 구분할 수 있는 방법이 없다. 하지만 "DNSSEC Validator"의 부가기능을 설치한 Firefox 웹 브라우저에서는 응답상태를 아이콘으로 표시하므로, 사용자가 세부 상태를 파악할 수 있다.
 
DNSSEC을 지원하지 않는 캐시 DNS서버는 이 경우에도 아무런 문제가 없는 것처럼 일반적인 DNS 질의응답 처리 동작을 수행한다.
 
캐시 DNS서버의 서명검증결과는 4가지 경우 중 하나가 된다.
 
결과 분류
캐시 DNS서버
비고
신뢰앵커
설정
DS 인증
신뢰사슬 구성
서명검증
정상여부
Secure
설정
정상
정상
o DNSSEC 서명적용 도메인인 경우
o 서명검증 결과 정상, 데이터 무결성 확인
o 호스트에 서명검증 된 데이터로 응답처리
Insecure
설정
오류
-
o DNSSEC 서명 미적용 도메인인 경우
o 상위 도메인은 서명되어 있는 상태
o 호스트에는 해당 데이터로 정상적 응답처리
Bogus
설정
정상
오류
o DNSSEC 서명적용 도메인인 경우
o 서명검증 오류 결과 발생
o DNS 응답 데이터의 데이터 위-변조 판단
o 호스트에 SERVFAIL 에러응답으로 응답처리
o 위-변조 판정 데이터는 호스트에 전달하지 않음
Indeterminate
미설정
-
-
o 캐시 DNS서버의 서명검증기능 비활성화 상태
o 일반 캐시 DNS서버와 동일한 처리동작 수행
 
4가지 결과 중, 호스트에서 웹 사이트 접속이 불가능하게 되는 경우는 Bogus(위조된) 상태인 경우이다. 이는 DNSSEC 캐시 DNS서버가 DNS 질의응답 과정에서 받은 데이터가 위-변조되어 있다고 서명검증 결과 판단한 경우에 해당한다.
 
나머지 경우는 호스트가 IP 주소 A 레코드를 응답받고 웹 사이트에 정상 접속하게 된다.

4 에러응답 경우, 장애가 원인인지 서명검증 실패가 원인인지 확인하는 방법은?

DNSSEC 질의를 사용한 점검으로 구분 및 확인이 가능하다.
 
서명검증에 실패하여 위조된 응답으로 판정된 경우, 응답메시지는 SERVFAIL(Server Fail)로 응답된다. 이 경우, dig을 사용하여 DNSSEC에서 정의된 CD(Checking Disabled) 플래그를 세팅하여 점검하면, DNSSEC 캐시 DNS서버는 서명검증에 사용하는 원본 레코드들을 그대로 응답해 준다.
 
아래는 DNSSEC 캐시 DNS서버가 SERVFAIL로 응답한 사례이다.
 - '149.20.64.21' : DNS-OARC에서 제공하는 공개 DNSSEC 캐시 DNS서버 IP 주소
 - 'baddata-A.test.dnssec-tools.org' : DNSSEC-Tools 프로젝트에서 제공하는 테스트용 도메인
 
 $ dig @149.20.64.21 baddata-A.test.dnssec-tools.org a +multiline
 
; <<>> DiG 9.7.0-P2-RedHat-9.7.0-10.P2.el5_8.1 <<>> @149.20.64.21 baddata-A.test.dnssec-tools.org a +multiline
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 47983
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
 
;; QUESTION SECTION:
;baddata-A.test.dnssec-tools.org. IN A
 
;; Query time: 340 msec
;; SERVER: 149.20.64.21#53(149.20.64.21)
;; WHEN: Fri Aug 10 11:47:23 2012
;; MSG SIZE  rcvd: 49
 
$
 
이때, 동일한 DNSSEC 캐시 DNS서버로 CD 플래그를 세팅한 DNSSEC 질의를 하면 아래와 같이 응답된다.
 
$ dig @149.20.64.21 baddata-A.test.dnssec-tools.org a +dnssec +cdflag +multiline
 
; <<>> DiG 9.7.0-P2-RedHat-9.7.0-10.P2.el5_8.1 <<>> @149.20.64.21 baddata-A.test.dnssec-tools.org a +dnssec +cdflag +multiline
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23750
;; flags: qr rd ra cd; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 5
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;baddata-A.test.dnssec-tools.org. IN A
 
;; ANSWER SECTION:
baddata-A.test.dnssec-tools.org. 86400 IN A 75.119.216.30
baddata-A.test.dnssec-tools.org. 86400 IN RRSIG A 5 4 86400 20120825190517 (
                                20120726190517 19442 test.dnssec-tools.org.
                                rORR7PUOs2sH5YKVwTncsh4cjPI70AN13kYDsSTA2tXO
                                ekaNOu0oUGfJXO8//mI3a/qHMWg87Tk3tPOiNrAHB3J5
                                P5JjPlVHQd8nqId4LKCqoBZtNlXyqoNU0hWa5kxChiZc
                                2ZHSV0HXXBwuscNR4OXceBWs7QJ3hnvg0O5SFoE= )
 
;; AUTHORITY SECTION:
-- (생략) --
 
;; ADDITIONAL SECTION:
-- (생략) --
 
;; Query time: 172 msec
;; SERVER: 149.20.64.21#53(149.20.64.21)
;; WHEN: Fri Aug 10 11:49:20 2012
;; MSG SIZE  rcvd: 870
 
$
 
 
이 경우, IP 주소의 A 레코드와 RRSIG 레코드가 응답되어 있으므로, 이 경우는 캐시 DNS서버가 데이터를 모두 조회하여 확보했지만 최종적으로 서명검증에 실패하여 호스트에 전달하지 않은 경우에 해당하는 것을 확인할 수 있다.
 
이와 같은 방법으로, 특정 DNSSEC 캐시 DNS서버에서의 SERVFAIL  응답이 응답 레코드 조회절차 상에서 발생한 오류로 인한 것인지, 아니면 DNSSEC 서명검증 실패가 발생한 것인지를 구분해 낼 수 있다.
 
일반 웹 브라우저와 같은 어플리케이션의 입장에서는, 이 SERVFAIL 응답이 수신된 경우 DNS 데이터가 존재하지 않는 경우와 구분할 수 있는 방법이 없다. 하지만 "DNSSEC Validator"의 부가기능을 설치한 Firefox 웹 브라우저에서는 아이콘으로 구분하여 표시하므로, 사용자가 세부 상태를 파악할 수 있다.

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://www.isc.org/sw/bind/
 
위 페이지에서, 필요한 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
Home

전체메뉴

닫기