본문 바로가기
서버구축 (WEB,DB)

BIND 네임서버 named.conf - option 최적화

by 날으는물고기 2009. 3. 18.

BIND 네임서버 named.conf - option 최적화

7.1  설정 최적화 검사

http://www.serverchk.com/

http://www.dnsreport.com/ 에서 검사

 

# named-checkconf  /etc/named.conf   

named.conf설정내용 사전오류검사 명령어임. 오류가 없을시 아무것도 나오지 않는다.

 

7.2       Options 튜닝하기

 

Bind8이 보안상 취약하여 Bind8에서 사용하는 옵션이 대부분입니다.

Bind9버전에서는 일부분은 보안취약점이 개선되어 기본으로 적용되어 있어 오류로 표시되는 옵션이 있으므로,

messages파일보고 불필요하면 제거하도록 한다. (진한 부분은 공통으로 설정이 필요한부분이다.)

 

# vi  /etc/ Named.conf

 

options {

  directory "/var/named";

 named 데몬이 인식하는 기본 디렉토리를 지정함. 해당디렉토리에 zone File존재

// pid-file "/var/named/named.pid";   // named pid 파일을 남길 위치

// statistics-file "/var/named/named.stats";  // 통계정보를 남길 위치

memstatistics-file "/var/named/named.memstats"; // 메모리 통계정보 파일을 위치

dump-file "/var/adm/named.dump"; // 네임서버의 메모리 상태 정보 파일 위치

 

version Unknown !!;

#dig @203.231.124.14 txt chaos version.bind 로 원격에서 Bind버전 확인시후, 보안취약점을 이용해 공격할수 있음으로 보안상 사용 Bind버전을 안보이게함.

 

edns-udp-size 512 ;

EDNS등사용시  512k가 넘어 Pix-Firewall등에서 Drop되는 부분을 해결하는 부분

dns-udp사이즈를 512가 넘지 않도록 제한 설정하는것임. 

DNS udp패킷사이즈가 512가 넘으면 tcp패킷으로 넘어감.

 

check-names master ignore ;  // 필수 권장설정

check-names slave ignore ;   // 권장설정

자신이 master인경우 존파일 이름 검사를 무시한다.  

기본값 Fail. RFC에 어긋나는 설정(언더바(_))이 있는 zone파일의 경우는 해당 도메인이 정상적으로 동작하지 않게 되므로, 반드시 ignore로 설정을 변경해야한다.

예전 4.9.4이전, 9.1.0이내의 Bind에서는 이름검사가 구현되지 않았다.

에러 형식:

May 11 08:55:46 ns1 named[28399]: owner name "chungju_s.s.co.kr" IN (primary) is invalid - rejecting
May 11 08:55:46 ns1 named[28399]: s.co.kr:200: owner name error

 

다음은 버전8의 기본값

check-names master fail; // 언더바가 들어가더라도 현재는 정상 응답한다

check-names slave warn; // 언더바가 들어가더라도 현재는 경고만 보내주고 응답한다

Check-names response ignore;   // 언더바가 들어가더라도 현재는 정상 응답한다

                                   오류에 대해 무시하고 질의에 대한 응답을 하도록 한다.

 

 

Check-names response ignore;  

디폴트가 ignore이므로 설정을 하지 않아도 된다.

이름을 질의해왔을경우 응답이 RFC규약을 따르지 않는 응답이라도 무시하고 응답한다.

Check-names response fail; 이라면, 응답이 RFC규약에 어긋나면 응답거부하기 때문에 해당 네임서버에 언더바(_)가 들어간 사이트를 질의한경우 접속이 안된다.

> drop_b.yejin.pe.krcom

Server:  ns.yejin.pe.krcom

Address:  203.231.124.14

*** ns.yejin.pe.krcom can't find drop_b.yejin.pe.krcom: Query refused

 

notify no;

Bind 8,9 DNS notify yes가 기본임.

Zone transfer request 도스공격방지를 위한 보안설정임.

존 업데이트에 대한 notify 메시지를 사용하지 않음.

notify메시지 => Master서버가 영역정보가 바뀌었을때 Slave서버에게 알리는 메시지  

단점: Slave가 업데이트하는데 TTL시간까지 기다려야함.

 

Allow-notify { 203.231.124.15; };  

192.168.0.1 notify메시지를 보낼수 있도록 허용함.

주 마스터네임서버가 아닌 다른네임서버로부터 오는 NOTIFY메시지를 수신허용.

 

multiple-cnames yes;

Cname을 여러개 사용가능하도록 설정함.

 

maintain-ixfr-base yes;

주 마스터네임서버는 시리얼 번호가 증가할때마다 슬레이브에 Notify를 알려준다.

슬레이브서버는 알림을 받을때마다, 마스터네임서버의 영역시리얼 번호를 확인해 상황에 따라 전체 영역전송한다. 동적 업데이트가 매우 빈번하게 발생하는 큰 영역을 운영하는경우는 문제가 되어 증진적 영역전송(IXFR) 이라는 개념이 나왔다.

 Bind 8.2.3 , Bind 9 이상에서 동작하며, 변경된 정보만 영역전송를 진행한다.

동적업데이트를 이용해 영역데이터를 수정할 때만 문제없이 잘 동작한다.

 

transfer-format many-answers;

전형적인 영역전송은 각 dns 메시지에 하나의 리소스 레코드를 담고 있는데 이것은 공간 낭비이다. 이러한 문제를 해결 하기 위해 설정한다.

단점은 영역전송이 실제로 새로운 형식을 이용해 시간이 더 오래 걸릴수 있다.

대역폭이나 CPU사용량의 관점에서는 효율적이나 시간이 더 오래걸려 완료된다.

슬레이브의 대부분이 BIND8이나 9 또는 MS DNS서버를 운영하고 있다면 권장설정임.

 

serial-queries 100 ;   

slave의 빠른 업데이트를 위해 soa 쿼리를 100까지 설정한다.

 

listen-on { 203.231.124/24; };

네임서버가 어떤 네트워크 인터페이스를 청취하면서 질의를 기다리 것인지를 명시

 

 };

 

7.3 Bind버전확인하기

# dig txt chaos version.bind.

# dig @200.1.1.1 txt chaos version.bind.

 

7.4  질의제한:

7.4.1  해당 DNS서버의 named.conf 에 질의를 허용할 IP블록을 등록한다.

# more  /etc/named.conf

options {

        directory "/var/named";

        allow-query { 203.231.124.14;  200.1.1.1/24; };  //자체네임서버는 들어가야함.

};

 

7.5  개별도메인에 Notify허용법

named.conf option부분에  notify no; 라고 한경우 Master가 Slave에 정보변경시 바로 notify를 하지 않고, SOA레코더값이 지정되어 있는시간에 전송요청을 한다.

만약  option부분에는 no로 되어 있으나 특정도메인은 notify목록에 추가하려면 zone구문에서 also-notify라는 서버구문을 이용한다.

zone "congress.go.kr" {

allow-update { none; };

allow-transfer { 127.0.0.1; 10.201.27.3; 10.201.14.45; };

allow-query { any; };    

notify yes;       

also-notify { 10.201.27.3; };    //자신의 슬레이브에 변경을 알려주도록 설정.

      allow-transfer { none; };

};

 

7.6     IXFR – BIND 8.2.3이상, 다음은 BIND8에서의 IXFR설정법입니다.

동적 업데이트만 이용해 영역데이터를 수정할때만 문제없이 동작

options {

maintain-ixfr-base yes;

            max-ixfr-log-size 1M;

};

server 200.1.1.110 {

        support-ixfr yes;

 };

 

7.7  포워더 설정.

options {

forwarders { 168.126.63.1; 203.255.112.34; };

};

도메인 질의에 대한 포워딩

1) 캐시 데이터베이스에 있다면 이 정보를 대답한다.

2) 캐시에 없으면, 네임서버는 질의를 포워더에 보내고 대답을 기다린다.

3) 응답이 오지 않으면, 정상적인 동작을 다시 개시해 원격서버에 접속하게 된다.

 

options {

     forwarders { 168.126.63.1; };

forward only;

};

도메인 질의에 대한 포워딩

1) 캐시 데이터베이스에 있다면 이 정보를 대답한다.

2) 캐시에 없으면, 네임서버는 질의를 포워더에 보내고 대답을 기다린다.

3) 응답이 오지 않으면, 응답을 하지 못한다.

  

7.8  영역포워드 – (BIND 8.2부터, BIND 9.1.0부터)

7.8.1  귀하의 Cache DNs에서 yejin.pe.kr사이트만 정상적으로 레졸루션 되지 않을시 우선조치

       해당 사이트 질의시 다른 네임서버에게 포워드하여 해당 네임서버가 응답하도록함.

zone " yejin.pe.kr " IN {
type forward ;
forwarders { 168.126.63.1; };
};

 

7.8.2  Yahoo.com등 특정사이트가 접속이 안될때 -  Name:    www.yahoo.akadns.net

네임서버에서 yahoo의 네임서버인 akaff 찾을땐 특정 IP로 포워드 한다.

Forward하는법.

Zone "akadns.net" IN {
        type forward ;
        forwarders { 65.203.234.27; 193.45.1.103; 63.209.170.136; 80.67.67.182; 63.241.73.214; 206.132.100.108; };
};

 

7.8.3  설정 파일 전체에 영향을 미치는 options구문속의 forwarder설정을 무력화시키기.

 

   로컬에 있는 도메인을 forwarder인 외부에 질의하게 되는 부분을 해결.

options {

type forward ;
forwarders { 203.255.112.34; 203.255.117.34; };

};

 

zone " yejin.pe.kr " IN {
type forward ;
forwarders { };
};

 

 

7.9  비재귀적 네임서버 (네임서버 전용인 경우 설정함)

options {

recursion no;     

No  : 자신이 호스팅하고 있는 도메인에 대한 DNS응답만 처리한다.
no
로 하면 일반 질의에 대한 응답을 하지 않음. 설정에 주의해야한다.

         네입서버 전용으로사용하는경우 설정됨. Cache DNS로는 사용못함.

        OPEN DNS취약점 해결됨. 주의점:  resolve.conf에 외부 DNS를 지정해야함. 예;168.126.63.1

   

Yes : 일반적인 도메인서버로 사용하는것이다..

 

options {

fetch-glue no ;

질의에 대한 응답값으로 NS레코드는 있지만, 해당 네임서버의 A레코드가 없을경우 이IP를 다시 찾기위해 질의를 한다. 이경우 Cache poisoning될수 있는 여지가 있어 no로 설정하여 질의를 하지 않게 한다Bind8만 설정 필요, 9는 기본적으로 no로 동작함.

  

7.10  엉터리 네임서버 이용금지. - blackhole설정

이 목록에 있는 네임 서버에는 질의를 보내지도 않고 이들이 보내는 질의에도 응답하지 않는다.

목록에 있는 네임서버에는 질의를 보내지도 않고, 보내는 질의에도 응답하지 않는다

blackhole {

     210.116.96.112/32;

};

또는

blackhole {

            bogon;

    };

acl "bogon" {

    0.0.0.0/8;

10.0.0.0/8;

192.168.0.0/16;

};

bogon 네트워크 : IANA에 의해 테스트, 멀티케스트, 또는 실험목적을 위해 예약된 아이피

네트워크에 실제로 존재하지 않는 bogon ACL 대역에서 오는 query drop 시킴

 

7.11  네임서버별 영역전송 개수 제한

transfers-per-ns 4;

 네임서버가 하나의 원격네임서버로부터 얼마나 많은 영역을 요청 받는지 제한한다.

주로 bind8에서 사용, 사용하지 않아도됨.

 

7.12  영역 전송 시간 제한

max-transfer-time-in 180;

최대 영역전송(zone transfer)시간을 디폴트(120)에서 180분으로 설정 아주 큰 Zone File을 가지고 올때 발생될수 있는 문제를 예방한다.

시간을 줄이면, named-xfer 프로세스가 불필요한 자원을 점유하는 것을 막을수도 있다.

주로 bind8에서 사용, 사용하지 않아도됨.

 

7.13  청소주기

cleaning-interval 120;  

캐시속의 오래된 항목을 주기마다 능동적으로 뒤지면서 오래된 레코드를 삭제한다.

디폴트 60, CPU많이 사용하면 120분으로 늘려준다.  이 주기를 0으로 설정하면 캐쉬청소를 하지 않는다.

실행된 로그내용:

12-May-2005 13:44:29.123 maintenance: info: Cleaned cache of 123874 RRsets
//
named 데몬에서 잡고 있는 메모리가 이 설정에 의해 줄거나 하지는 않으며
이미 잡혀 있는 메모리 자체에 있는 데이타를 날리고 제 사용하는 방식을 택하고 있는 것으로 보입니다.

 

7.14  인터페이스주기

interface-interval 0;

네트워크 인터페이스가 up/down 상태인지 체크하는시간.

불필요한 오버해드를 없애기위해 인터페이스체크 주기를 0으로 설정해 새로운인터페이스를 훓어보지 않게 할수 있다.

 

 

 

 

7.15 통계주기

statistics-interval  120;

 통계주기 네임서버 통계정보를 남길 시간을 120분으로 정함 (기본값 60)

값을 0으로 설정하면 주기적인 통계덤프를 하지 않는다. 성능향상과는 무관한 옵션.

 

7.16  부정적 TTL시간

max-ncache-ttl 3600;

부정적 캐싱 ttl 시간을 3600(1시간)으로 정함. 기본값은 10800(3시간)

 

7.17  질의제한:

1) 해당 DNS서버의 named.conf 에 질의를 허용할 IP블록을 등록한다.

외부에서 사용못하도록함.

# more  /etc/named.conf

options {

        directory "/var/named";

       allow-query ;  //자체네임서버는 들어가야함.

 

or

options {

allow-query {

trusted;

};

 

acl "trusted" {

    210.103.175.0/24;   

127.0.0.1;

//any;

};  일반적으로 any를 사용. 설정된 IP블록이외에서는 해당서버를 이용해 쿼리를 할수없음.

 

7.18  리졸빙 네임서버를 더욱 안전하게 운영

options {

           use-id-pool yes ;

안전한 서버운영을 위해 네임서버가 질의와 응답에 붙이는 메시지 id를 랜덤한 순서로

}; 

 

7.19  Zone Transfer 제어 -  인가 받지 않은 영역 전송금지

options {

allow-transfer {


        xfer;    // Zone tranfers limited to members of the"xfer" ACL.


             

}; }; acl "xfer" {    200.1.1.34;    200.1.2.0/24;    // 사용하는 네임서버 IP는 모두 등록해야한다.     //

none;    // Allow no transfers일 경우.

};

용도: 서버로부터 영역을 zone transfer할수 있는 사용자들은 영역의 모든 호스트를 보게됨으로서 보안상 설정을 함.  (BIND8을 기준으로 작성됨.)

특정 IP블록에서만 Zone Transfer를 할수 있도록함.

Zone transfer는 일반적으로 slave에서 Master zone을 가져가므로 slave ip-address나 블록을 넣어준다.

 

설정법

#  파일위치:/etc/named.conf  ,// 환경 설정파일은 options 안에 정의

options {

        directory "/var/named";      /* zone 화일들의 위치 */

       allow-transfer { 127.0.0.1;  200.1.1.0/24;  200.1.2.0/24;  };    /* 허용ip */

};

 Slave서버의 zone구문은  zone-transfer가 일어나지 않으므로 다음과 같이 설정한다.

 

options {

      directory  "/var/named";      /* zone 화일들의 위치 */

      allow-transfer  { none;  };    /* zone transfer를 허용하지 않는다 */

};

- 이상 끝 -

 

출처 : http://cafe.naver.com/dnspro/269

728x90

댓글