페이지 상단으로

DNSSEC 구축방법

홈으로 > 인터넷주소자원 > 도메인네임시스템(DNS) > DNSSEC 구축방법 > BIND를 이용한 구축방법
  • BIND를 이용한 구축방법
  • Windows DNS Server 기반의 구축방법

권한 DNS서버의 도메인 존 DNSSEC 서명적용 및 네임서버 반영절차

BIND DNS 네임서버에서 도메인 존에 대한 DNSSEC 서명 적용절차는 아래 그림의 5개 절차 순서에 따라 이루어집니다.

도메인 존파일 작성

기존의 도메인 존파일 또는 신규 도메인 존 파일을 작성합니다. 이 경우, 작성하는 존 파일의 내용은 기존에 작성하던 형태 그대로의 일반적 존 파일 내용으로 작성합니다.

존의 Key 생성

DNSSEC 서명적용 대상 도메인 존의 서명용 키를 생성하는 절차입니다. 존 서명키(ZSK)와 키 서명키(KSK)를 각각 생성합니다.
여기서는 test.go.kr 도메인 존을 사례로 하여 예시합니다.

test.go.kr 존의 존 서명키(ZSK)를 다음의 명령으로 생성합니다.
dnssec-keygen -a NSEC3RSASHA1 -r /dev/urandom -b 1024 -n ZONE test.go.kr.
test.go.kr 존의 키 서명키(KSK)는 다음의 명령으로 생성합니다.
dnssec-keygen -a NSEC3RSASHA1 -r /dev/urandom -b 2048 -n ZONE -f KSK test.go.kr.
서명생성 작업을 수행한 디렉토리에 아래와 같이 test.go.kr 존의 존 서명키(ZSK), 키 서명키(KSK)가 각각 파일로 생성됩니다.
존 서명키(ZSK) - Ktest.go.kr.+007+16770.key
- Ktest.go.kr.+007+16770.private
키 서명키(KSK) - Ktest.go.kr.+007+28394.key
- Ktest.go.kr.+007+28394.private

Public Key 존 반영

test.go.kr의 공개키(public key)는 키 서명키(KSK)와 존 서명키(ZSK) 각각에 해당하는 DNSKEY 리소스 레코드를 도메인 존 파일에 반영 설정하는 절차입니다.

test.go.kr의 존 파일 test.go.kr.zone을 열어서 아래와 같이 존 서명키(ZSK), 키 서명키(KSK) 각각의 공개키 파일(*.key)을 존 파일에 포함시키는 설정을 합니다.
$INCLUDE Ktest.go.kr.+007+16770.key
$INCLUDE Ktest.go.kr.+007+28394.key

존 서명

test.go.kr의 기본 존 파일 test.go.kr.zone을 대상으로 DNSSEC 서명처리를 수행하는 절차입니다.
여기서는 서명키들이 /var/named/key에 저장되어 있다고 가정합니다.

아래와 같이 서명처리 명령을 사용하여 서명 처리합니다.

dnssec-signzone -S –K /var/named/key -3 96e920 -o test.go.kr. test.go.kr.zone
서명처리에 의해 "서명된 존 파일"은 test.go.kr.zone.signed 라는 이름으로 생성됩니다.

서명처리 과정에서 dnssec-signzone 유틸리티는 DS 리소스 레코드 데이터가 저장된 파일을 "dsset-test.go.kr."의 파일명으로 생성합니다. 이 파일의 DS 리소스 레코드는 부모 도메인 존의 관리자에게 송부해서 부모 도메인 존에 설정하기 위한 용도로 사용됩니다.

네임서버에 존 반영

test.go.kr의 서명된 존 파일 test.go.kr.zone.signed 를 네임서버에 반영하고 설정하는 절차입니다.

네임서버 named.conf 파일에 아래와 같은 내용으로 설정하여 네임서버 구동 등을 통해 네임서버에 반영처리 합니다.
options {
             recursion no;
             dnssec-enable yes;
};
zone "test.go.kr" IN {
             type master;
             file "dnssec/test.go.kr.zone.signed";
             key-directory "key";
             auto-dnssec maintain;
             update-policy local;
};



캐시 DNS서버의 DNSSEC 서명검증 기능 설정 절차

캐시 DNS서버에 DNSSEC 서명검증 기능 활성화 및 신뢰앵커 데이터 설정절차입니다. 이 설정을 통해 네임서버는 DNSSEC 서명검증을 수행하는 캐시 DNS서버로 동작합니다.
캐시 DNS서버의 named.conf 파일에 아래의 2가지 사항을 설정해 줍니다.

먼저, named.conf 파일에 DNSSEC 서명검증 기능을 활성화 설정합니다.

options {
             dnssec-enable yes;
             dnssec-validation yes; # enable DNSSEC validation
};
named.conf 파일에 DNSSEC 서명검증을 위한 신뢰앵커 데이터를 아래와 같이 추가 설정합니다.
managed-keys {
       "." initial-key 257 3 8
          "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
             FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
             ………………
};
managed-keys 옵션에 설정되는 실제 신뢰앵커 데이터는 아래와 같이 dig을 사용하여 키 서명키(KSK)의 DNSKEY인 flag값이 257인 DNSKEY 리소스 레코드 값을 복사하여 설정합니다.
$ dig @f.root-servers.net . dnskey +multi +norec

; <<>> DiG 9.7.0-P2-RedHat-9.7.0-10.P2.el5_8.1 <<>> @f.root-servers.net . dnskey +multi +norec
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32267
;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;.                   IN DNSKEY

;; ANSWER SECTION:
.                   172800 IN DNSKEY 256 3 8 (
                                 AwEAAbW4qUZUxSRqUntM9u0pvmkqRB9Z+WRPghllsekd
                                 gp8ksT5bwRBE3xwVWJJpJgVYGvFGgLIutrGyZDJVLQX+
                                 tu+qe6HJbA8XRZsL2aA6e4MZeD4TOUlIH/cVlof3y4gF
                                 ibjwzuuondVku9ia2MSRYnrBl+LMSRftBkVa4OvS+dij
                                 ) ; key id = 50398
.                   172800 IN DNSKEY 257 3 8 (
                                 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQ
                                 bSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh
                                 /RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWA
                                 JQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXp
                                 oY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3
                                 LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGO
                                 Yl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGc
                                 LmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0=
                                 ) ; key id = 19036

;; Query time: 3 msec
;; SERVER: 192.5.5.241#53(192.5.5.241)
;; WHEN: Wed Aug 8 14:57:02 2012
;; MSG SIZE rcvd: 439

[dnsdev@cacti ~]$