페이지 상단으로

인터넷주소자원

DNSSEC 구축방법

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

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

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

DNSSEC 서명 적용절차

01 도메인 존파일 작성

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

02 존의 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

03 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

04 존 서명

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 리소스 레코드는 부모 도메인 존의 관리자에게 송부해서 부모 도메인 존에 설정하기 위한 용도로 사용됩니다.

05 네임서버에 존 반영

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 ~]$