글쓴이 : 김석 (2004년 10월 21일 오전 03:01) 읽은수: 917 [ 네트워크 ]
-----------------------------------------------
BIND 9.3 를 이용한 DNS 서버 완벽 구성 가이드
-----------------------------------------------
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
작성일:2004년 10월 21일
버전:0.2
히스토리: 0.1 2004년 10월 20일 작성
0.2 2004년 10월 21일 작성
변경된점:보다 세부적인 설정에 대한 부연 설명과 키공유에 대한 부분을 강화

작성자: 김석 [solaris2u@hotmail.com]
저작권: 저작권은 본인에게 있음
이 문서를 아래에 언급된 사이트 이외에 임의배포 및 복사, 전제를 금합니다.
오직 아래 언급된 사이트들의 회원들에게만 공개되는 것이며 타 사이트와 커뮤니티에
배포시에는 저작권에 위반으로 법적 제재를 받을 수 있습니다.
타 사이트 및 커뮤니티에 배포하시고자 하는 분들은 메일로 연락주시길 바랍니다.
본 문서의 상업적 이용을 금하며 학습용으로는 언제나 환영합니다.
@@@본 문서는 편의상 존칭을 생략한 문서입니다. 양해 바랍니다.@@@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

본 문서의 최신버전은 다음의 사이트에서 구하실 수 있습니다.

cafe.naver.com/solatech [솔라리스 테크넷]
www.solarisschool.com [솔라리스 스쿨]
www.howtosolaris.com [하우투솔라리스]
www.freechal.com/sunsolve [프리챌 썬솔브 커뮤니티]

***************************************************************************************
작성자의 변:

솔라리스8 이하의 환경에서 BIND 8.x를 이용하여 구성하는 것과 달리
BIND 9.x 는 보안이 강화되었고 미묘한 부분에서 차이를 가지는데 인터넷에
떠도는 문서나 시중의 교재가 BIND 9를 이용하여 설치하는 것을 너무 장황하게
설명하거나, 실습을 따라서 구성해도 정상적으로 서비스되지 않는 문서가 너무
많아서 정리하였다.

본 문서는 BIND 9를 이용한 구성을 지원하지만 allow-query , allow-update 등 여타
보안에 필요한 요소는 구현하지 않았다.
필자는 간단하게 간편하게 구성하기 위해서 이번 문서에는 추가하지 않았으나
위에 언급한 내용이에외도 많은 보안적 요소가 있으니 보안을 위해 꼭 구성해 주기를 권장한다.
보안을 고려한 DNS에 대한 내용이 필요한 사람들은 www.krcert.or.kr 에서 확인하기를 바란다.


--------------------------------------------------------------------------------------
목표: BIND 9를 이용하여 DNS 를 구성하는 방법을 학습한다.

사용 OS : 솔라리스 9 또는 10
리눅스 8 또는 9 ( 리눅스도 솔라리스와 같은 방법으로 구성이 가능하다.)

하위 버전 OS 인 경우는 www.bind.org 에서 소스를 구하여 컴파일 후 사용하거나
www.sunfreeware.com 를 이용하여 소스설치를 진행한다.

이 문서에서는 컴파일을 통한 설치부터 구성까지 실습해 보도록 한다.

--------------------------------------------------------------------------------------

#######시나리오#######
solaris.co.kr 이라는 도메인의 네임 서버를 구성한다.
실습환경이므로 192.168.102.100 이라는 호스트가 www , mail , ns 를 모두 서비스한다고 전제한다.
소스 설치부터 진행하여 정방향 조회와 역방향 조회가 정확하게 구성되는지 테스트 한다.

--------------------------------------------------------------------------------------

#######솔라리스9에서의 BIND 9.3 설치 하기########

1. 파일 다운로드 받고 컴파일 하기

# gzip -dc bind-9.3.0.tar.gz | tar xvf -
# cd bind-9.3.0
# ./configure --prefix=/bind --with-libtool --with-openssl

--with-libtool : 공유라이브러리 빌드를 가능케 하는 옵션

--with-openssl : DNSSEC을 지원가능토록 함 , openssl이 설치되어 있어야 함

openssl이 설치된 경로가 패스가 없을시에는

--with-openssl=패스

형식으로 기재하여 사용.

# make
# make install
# cd /bind/bin

컴파일이 종료되면 /bind/bin 에 check dig dnssec named nsupdate rndc tests win32 과 같은

디렉토리가 생성되어져 있다.

네임서버 데몬은 named 에 존재한다.


******중요*************************************************************************
/etc/named.conf에서의 키 구성과 rndc.key의 이해가 요구되어진다.
일단, rndc는 네임서비스를 관리하는 데몬으로 /etc/rndc.conf로 구성이 가능하며
/etc/rndc.key에 의해 키 교환을 하게 되어 있다.
/etc/named.conf에 아래와 같이 key 설정 구성을 하거나 include "/etc/rndc.key"; 내용을 이용하여
구성이 가능하다.


key 키명{
algoritm "hmac-md5";
secret "xxxxxxxxxxx";
};

자, 여기서 key 설정 부분을 자세히 보자.
다른 내용은 별도의 문서나 책을 참고하고 일단 secret 영역에 xxxxxxx 이런식으로 표현된 부분은
/bind/bin/dnssec 에 가면 dnssec-keygen 이라는 툴이 있다.
이 툴을 이용하여 공유키를 생성할 수 있는데 사용법은 아래와 같다.

---------------------------------------------------
문법: dnssec-keygen -a hmac-md5 -b 128 -n HOST 키
---------------------------------------------------
따라서 내가 사용할 키가 rndckey 라는 키라면

===================================================
#dnssec-keygen -a hmac-md5 -b 128 -n HOST rndckey
===================================================
이런식으로 사용이 가능하다는 것이다.

BIND 9.x 계열에서는 RSA ,DSA , HMAC-MD5 중에 HMAC-MD5만 지원한다. 따라서 -a 옵션으로 hmac-md5 알고리즘
으로 지정하고 -b 옵션을 이용하여 128비트 암호길이를 지정했다.
키를 더 복잡하게 구성하고자 한다면 최대 512비트까지 지정이 가능하다.
-n HOST 뒤에는 네임서버간에서 사용할 공유키를 입력하면 된다.

dnssec-keygen 도구가 정상적으로 실행되면 Krndckey.+157+14077.key 와 Krndckey.+157+14077.private
두개의 파일이 생성되어진다.

Krndckey.+157+14077.key 을 에디터등으로 오픈하면 다음과 같다.
=====================================================
#vi Krndckey.+157+14077.key

rndckey. IN KEY 512 3 157 Y9iC3cahZ7I3+3NrtlG6nQ==

=====================================================
여기서 Y9iC3cahZ7I3+3NrtlG6nQ== 을 복사하여

key 키명{
algoritm "hmac-md5";
secret "xxxxxxxxxxx";
};


이 부분을 아래와 같이 변경한다.

key 키명{
algoritm "hmac-md5";
secret "Y9iC3cahZ7I3+3NrtlG6nQ==;
};

만일 /etc/rndc.conf 를 include 한다면 위에 key 영역 설정은 불필요하다.

2. /etc/named.conf 구성하기
======================================================
#vi /etc/named.conf

// generated by named-bootconf.pl

options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
dump-file "/var/named/named.db"; //덤프파일 위치 지정 , 네임정보갱신시 덤프 생성
statistics-file "/var/named/named.stat";//통계처리 목적으로 생성, 메모리 통계 파일 위치지정
/*
* forward (only|first) forwarders 옵션과 함께 사용.
* forwarders {네임서버 IP ; 네임서버2 IP; ...}; --도메인에 대한 질의를 다른서버로 넘길때
* only : 다른 서버에게 질의를 지정했을시 무응답일때 자신도 응답하지 않는것.
* first : 다른 서버에서 응답이 없을 때 자신이 응답하도록 할 때 설정.
* notify (yes|no) --마스터 서버의 존 정보가 변경되었을 때 존의 2차 서버에 메시지 통보
* 기본값은 yes
*/
};

//
// a caching only nameserver config
//
controls {
inet 127.0.0.1 port 953 allow { localhost; } keys { rndckey; };
};

//key rndckey {
// algorithm "hmac-md5";
// secret "Y9iC3cahZ7I3+3NrtlG6nQ==";
//};

zone "." IN {
type hint;
file "named.ca";
};

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};

zone "solaris.co.kr" IN {
type master; //type이 slave 인 경우는 masters { 주 네임서버 IP;}; 를 반드시 추가
file "solaris.zone";
allow-update { none; };
};

zone "102.168.192.in-addr.arpa" IN {
type master;
file "solaris.zone.rev";
allow-update { none; };
};

include "/etc/rndc.key";

======================================================

3.rndc 설정 파일 만들기
solaris10[/bind/bin/rndc] # ./rndc-confgen -k rndckey > /etc/rndc.conf
solaris10[/bind/bin/rndc] # ./rndc-confgen -a -k rndckey
solaris10[/bind/bin/rndc] # cat /etc/rndc.conf
# Start of rndc.conf
key "rndckey" {
algorithm hmac-md5;
secret "Y9iC3cahZ7I3+3NrtlG6nQ==";
};

options {
default-key "rndckey";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndckey" {
# algorithm hmac-md5;
# secret "kMojgiTutuePjyWROKKXKg==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndckey"; };
# };
# End of named.conf


solaris10[/bind/bin/rndc] # cat /etc/rndc.key

key "rndckey" {
algorithm hmac-md5;
secret "Y9iC3cahZ7I3+3NrtlG6nQ==";
};




---BIND에서 8과 9의 차이는 보안이 강화되었다는 점이 주목할 점이다.
기존의 BIND 8과는 달리 key를 통한 보안 인증체계를 지니고 있다.

rndc 에 의해 네임서비스를 관리하려면 /etc/rndc.conf에 의해 관리되어진다.


두 파일의 키가 일치하는지 확인한다. 두 키가 일치되어야 추후에 rndc가 정상적으로 구동된다.


4.정방향 조회 영역 만들기
주의! 영역 구성시 BIND8과 BIND9의 큰 차이중에 하나가 바로 $TTL 이다. BIND 8.x에서는
상관없으나 BIND9.x 에서는 반드시 맨위에 기술되어야 한다.
그렇지 않으면 네임서비스는 동작하지 않는다.

#vi /var/named/solaris.zone

$TTL 10M
@ 1D IN SOA ns.solaris.co.kr. root.solaris.co.kr. (
42 ; serial (d. adams)
3M ; refresh
1M ; retry
1W ; expiry
1D ) ; minimum

1D IN NS ns.solaris.co.kr.
1D IN MX 10 mail.solaris.co.kr.
1D IN A 192.168.102.100
ns IN A 192.168.102.100
www IN A 192.168.102.100
mail IN A 192.168.102.100
solaris.co.kr. IN A 192.168.102.100


5.역방향 조회 영역 만들기

#vi /var/named/solaris.zone.rev

$TTL 10M
@ IN SOA ns.solaris.co.kr. root.solaris.co.kr. (
2004101801 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.solaris.co.kr.
50 IN PTR ns.solaris.co.kr.
50 IN PTR www.solaris.co.kr.
50 IN PTR mail.solaris.co.kr.


6./etc/hosts 와 /etc/resolv.conf 구성 내용 확인 및 변경

#cat /etc/hosts

127.0.0.1 localhost localhost.localdomain
192.168.102.100 ns ns.solaris.co.kr


#vi /etc/resolv.conf

domain solaris.co.kr
search solaris.co.kr
nameserver 192.168.102.100


7.네임서비스 구동하기
패키지를 설치하지 않고 소스를 이용하여 설치한 경우는 named가 /bind/bin/named에 존재하므로
/bin/named 로 링크를 걸어주는 것이 사용상 용이하다.
링크거는 과정등은 생략한다.


#named
#ps -ef |grep named

데몬이 떠 있는지 확인한다.


이름서비스를 구동후 nslookup 이나 dig 같은 툴을 이용하여 테스트 한다.

[root@ns root]# nslookup
Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
> solaris.co.kr
Server: 192.168.102.100
Address: 192.168.102.100#53

Name: solaris.co.kr
Address: 192.168.102.100
> www.solaris.co.kr
Server: 192.168.102.100
Address: 192.168.102.100#53

Name: www.solaris.co.kr
Address: 192.168.102.100
> 192.168.102.100
Server: 192.168.102.100
Address: 192.168.102.100#53

100.102.168.192.in-addr.arpa name = mail.solaris.co.kr.
100.102.168.192.in-addr.arpa name = ns.solaris.co.kr.
100.102.168.192.in-addr.arpa name = www.solaris.co.kr.


정상적으로 구동되어짐을 알 수 있다.

8.rndc 구동하기

/bind/bin/rndc/#rndc reload

를 수행하여 rndc를 구동할 수 있다. 이 때 named는 반드시 구동되어 있어야 한다.


9. 장애 처리 하기

#tail -f /var/adm/messages

로그의 내용을 모니터링하면서 장애처리를 수행한다.
rndc.conf 나 key 에러는 키 생성 부분의 문제이므로 확인 후 다시 시도해 본다.

Posted by 큰바우
: