[펌] BIND 9.3 를 이용한 DNS 서버 완벽 구성 가이드
os/Linux 2005. 3. 2. 11:28 |글쓴이 : 김석 (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 에러는 키 생성 부분의 문제이므로 확인 후 다시 시도해 본다. |