DNSSEC 서명적용 및 구성에 있어, 정상적인 질의응답 및 서명검증이 이루어지고 있는지를 확인하는 것이 필요하게 됩니다.
여기서는 DNSSEC 서명적용 직후, 정상적 설정 구성여부를 확인할 수 있는 방법을 제시합니다.
마이크로소프트의 nslookup.exe 유틸리티는 아직 DNSSEC을 구현하지 않고 있는 상태입니다. 따라서 DNSSEC 서명 적용된 도메인 존에 대해 윈도우즈의 nslookup.exe 유틸리티를 사용한 점검은 현재로서는 불가능한 상태입니다.
권한 DNS서버에 DNSSEC 서명 적용된 도메인에 대하여 DNSSEC 질의응답이 원활하게 이루어지고 있는지를 점검하는 방법입니다.
아래와 같이, "@권한_DNS서버_IP주소"를 설정하고, dig의 DNSSEC 지원 옵션 "+dnssec"을 설정하여 질의를 합니다. 권한 DNS서버를 대상으로 하므로 iterative 질의옵션인 "+norecurse" 옵션을 지정하고, 보다 보기 편한 포맷으로 출력하도록 하기 위해 "+multiline" 옵션을 지정합니다.
아래와 같이, ANSWER 섹션에 A 레코드와 함께 RRSIG 레코드가 함께 응답되고 있다면, 정상적으로 DNSSEC 질의응답이 이루어지고 있는 상태입니다.
$ dig @199.6.1.30 www.isc.org a +dnssec +norecurse +multiline
;<<>> DIG 9.7.0-P2-RedHat-9.7.0-10.P2.el5_81 <<>> @199.6.1.30 www.isc.org a +dnssec +norecurse +multiline
;(1 server found)
;;gloval options: +cmd
;;Got answer;
;;->>HEADER<<-opcode; QUERY, status; NOERROR, id: 19146
;;flags; qr aa; QUERY: 1. ANSWER: 2, AUTHORITY:5, ADDITIONAL: 13
;;OPT PREUDOSECTION;
;EDNS; version: 0, flags: do; upd: 4096
;;QUESTION SECTION;
;www.isc.org. IN A
;;ANSWER SECTION:
www.isc.org. 600 IN A 149.20.64.42
www.isc.org. 600 IN RRSIG A 5 3 600 201209070220444 (
20120808020444 4442 isc.org.
UU7rX4NIeBXBkPehcYvn1VAMXsSHGbHW2kq7w9W1or
Mthb7MhpEHi8VJSqlXdrMHvm7jZytrc8V17OT2FugoJ
zADVidh1TVs1OHScHebmAzCgavQJ+pg8s1HbT94rZH0M
YpwNo/BH0u3254rMdOsvbWp7eBICNeidOMYjgM= )
;;AUTHORITY SECTION;
---(생력) --
;;ADDITIONAL SECTION;
---(생력) --
;;Query time: 327 msec
;;SERVER: 199.6.1.30#53(199.6.1.30)
;;WHEN: Wed Aug 8 16:27:49 2012
;;MSG SIZE rcvd: 1623
이상과 같이, 권한 DNS서버를 대상으로 하는 점검에서는 DNSSEC 질의응답이 정상적으로 처리되고 있는지에 대해 점검합니다.
권한 DNS서버의 서명된 도메인 존이 인터넷 상에서 질의응답 가능한 상태라면, 인터넷 상에서 구동하고 있는 DNSSEC 서명적용 캐시 DNS서버를 이용하여 서명검증이 정상적으로 이루어지고 있는지를 점검할 수 있습니다.
- 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서버_IP주소"를 설정하고, dig의 DNSSEC 지원 옵션 "+dnssec"을 설정하여 질의를 합니다. 보다 보기 편한 포맷으로 출력하도록 하기 위해 "+multiline" 옵션을 지정합니다. 캐시 DNS서버를 대상으로 하므로 "+norecurse" 옵션은 사용하지 않습니다.
ANSWER 섹션에 A 레코드와 함께 RRSIG 레코드가 함께 응답되고 있다면, 정상적으로 DNSSEC 질의응답이 이루어지고 있음을 아래 사례와 같이 확인할 수 있습니다.
$ dig @149.20.64.21 good-A.test.dnssec-tools.org a +dnssec +multiline
;<<>> DIG 9.7.0-P2-RedHat-9.7.0-10.P2.el5_81 <<>> @149.20.64.20 www.isc.org a +dnssec +norecurse +multiline
;(1 server found)
;;gloval options: +cmd
;;Got answer;
;;->>HEADER<<-opcode; QUERY, status; NOERROR, id: 62857
;;flags; qr aa; QUERY: 1. ANSWER: 2, AUTHORITY:3, ADDITIONAL: 5
;;OPT PREUDOSECTION;
;EDNS; version: 0, flags: do; upd: 4096
;;QUESTION SECTION;
;www.isc.org. IN A
;;ANSWER SECTION:
www.isc.org. 600 IN A 149.20.64.42
www.isc.org. 600 IN RRSIG A 5 3 600 201209070220444 (
20120808020444 4442 isc.org.
UU7rX4NIeBXBkPehcYvn1VAMXsSHGbHW2kq7w9W1or
Mthb7MhpEHi8VJSqlXdrMHvm7jZytrc8V17OT2FugoJ
zADVidh1TVs1OHScHebmAzCgavQJ+pg8s1HbT94rZH0M
YpwNo/BH0u3254rMdOsvbWp7eBICNeidOMYjgM= )
;;AUTHORITY SECTION;
---(생력) --
;;ADDITIONAL SECTION;
---(생력) --
;;Query time: 327 msec
;;SERVER: 149.20.64.21#53(149.20.64.21)
;;WHEN: Wed Aug 8 16:47:31 2012
;;MSG SIZE rcvd: 1623
캐시 DNS서버를 대상으로 하는 경우, 응답 DNS 메시지의 헤더 플래그 값 체크가 추가로 필요합니다.
헤더 플래그 값이 "flags: qr rd ra ad" 으로 되어 있습니다. 이 중에서 위 사례와 같이 "ad" 플래그가 반드시 셋팅되어 있어야 합니다. "ad" 플래그가 세팅되어 있다면, 캐시 DNS서버가 이 응답의 데이터에 대해 서명검증을 완료했고 아무 문제가 없음을 의미합니다. 만일 "ad" 플래그가 보이지 않는다면, 서명검증과정에서 문제가 발생한 것입니다. "ad" 플래그는 "Authenticated Data"의 약자로써 응답 메시지의 ANSWER 섹션에 설정된 데이터가 서명검증 확인된 데이터임을 표시하는 플래그입니다. "ad" 플래그는 네임서버에서 설정합니다.
DNSSEC 관련 유틸리티 및 프로그램을 개발하는 프로젝트인 DNSSEC-Tools 사이트에서는 DNSSEC 질의응답 테스트용 도메인을 제공하고 있습니다.
- DNSSEC-Tools 사이트, 테스트용 도메인 존 정보 : http://www.dnssec-tools.org/testzone/
먼저, 서명검증 정상인 경우로써, 정상적인 서명처리가 된 "good-A.test.dnssec-tools.org" 도메인의 A 레코드에 대해 캐시 DNS서버를 대상으로 DNSSEC 질의를 합니다.
아래와 같이, 점검하고자 하는 서버를 "@캐시_DNS서버_IP주소"로 설정하고, dig의 DNSSEC 지원 옵션 "+dnssec"을 설정하여 질의를 합니다. 보다 보기 편한 포맷으로 출력하도록 하기 위해 "+multiline" 옵션을 지정합니다. 캐시 DNS서버를 대상으로 하므로 "+norecurse" 옵션은 사용하지 않습니다.
아래와 같이, DNS ANSWER 섹션에 응답 레코드로 응답되고, 메시지 플래그 값에 "ad"가 설정되어 있다면 캐시 DNS서버가 이 도메인네임의 A 레코드에 대한 서명검증 절차를 원활히 수행하여 검증된 응답 메시지로 응답처리하고 있음을 확인할 수 있습니다.
$ dig @149.20.64.21 good-A.test.dnssec-tools.org a +dnssec +multiline
;<<>> DIG 9.7.0-P2-RedHat-9.7.0-10.P2.el5_81 <<>> @149.20.64.21 good-A.test.dnssec-tools.org a +dnssec +norecurse +multiline
;(1 server found)
;;gloval options: +cmd
;;Got answer;
;;->>HEADER<<-opcode; QUERY, status; NOERROR, id: 19146
;;flags; qr aa; QUERY: 1. ANSWER: 2, AUTHORITY:3, ADDITIONAL: 5
;;OPT PREUDOSECTION;
;EDNS; version: 0, flags: do; upd: 4096
;;QUESTION SECTION;
;good-A.test.dnssec-tools.org IN A
;;ANSWER SECTION:
good-A.test.dnssec-tools.org 86400 IN A 75.119.216.33
good-A.test.dnssec-tools.org 86400 IN RRSIG A 5 4 86400 20120825190617 (
20120825190617 19442 test.dnssec-tools.org
maSUeaf64edlXNLVc7Vo/CEBVZ23eIUHv/5kUKFjoL6
BesWQIkiteKsenbDL+swLY2lN3YCYxg5KOY0pigW6
W59BZJAcwZmHsH2VB6zYLwNIrBIrBnhPjo/O1JS= )
;;AUTHORITY SECTION;
---(생력) --
;;ADDITIONAL SECTION;
---(생력) --
;;Query time: 327 msec
;;SERVER: 149.20.64.21#53(149.20.64.21)
;;WHEN: Wed Aug 8 16:27:49 2012
;;MSG SIZE rcvd: 1623
두 번째로, 서명검증 실패가 발생하는 경우로써, 서명처리에 문제가 있는 "baddata-A.test.dnssec-tools.org" 도메인의 A 레코드에 대해 캐시 DNS서버를 대상으로 DNSSEC 질의를 합니다.
아래와 같이, 점검하고자 하는 서버를 "@캐시_DNS서버_IP주소"로 설정하고, dig의 DNSSEC 지원 옵션 "+dnssec"을 설정하여 질의를 합니다.
아래와 같이, DNS 응답 메시지의 응답코드가 "status: SERVFAIL" 상태이고, ANSWER 섹션에 응답 데이터가 0개, 메시지 플래그 값에 "ad"가 누락되어 있어야 정상입니다. 캐시 DNS서버가 이 도메인네임의 A 레코드에 대한 정상적 서명검증 절차를 수행하는 가운데 서명검증 실패하고 데이터 위-변조 판단을 통해 응답 데이터가 없는 응답처리를 하게 됩니다.
$ dig @149.20.64.21 good-A.test.dnssec-tools.org a +dnssec +multiline
;<<>> DIG 9.7.0-P2-RedHat-9.7.0-10.P2.el5_81 <<>> @149.20.64.21 good-A.test.dnssec-tools.org a +dnssec +norecurse +multiline
;(1 server found)
;;gloval options: +cmd
;;Got answer;
;;->>HEADER<<-opcode; QUERY, status; NOERROR, id: 26023
;;flags; qr aa; QUERY: 1. ANSWER: 0, AUTHORITY:0, ADDITIONAL: 1
;;OPT PREUDOSECTION;
;EDNS; version: 0, flags: do; upd: 4096
;;QUESTION SECTION;
;baddata-A.test.dnssec-tools.org. IN A
;;Query time: 351 msec
;;SERVER: 149.20.64.21#53(149.20.64.21)
;;WHEN: Wed Aug 8 17:12:17 2012
;;MSG SIZE rcvd: 60
이상과 같이, 캐시 DNS서버에 대한 점검결과 기대되는 결과와 일치하는 결과가 산출된다면 캐시 DNS서버의 DNSSEC 관련 설정에 문제가 없음을 확인할 수 있습니다.