• bind 네임서버 보안설정 및 최신버전 업그레이드

    회사 사이트에도 올린 내용인데 블로그에 참고해서 올려두도록 한다.

     
     

    DDoS는 아직까지도 IT 쪽에서는 아직 완전히 해결되지 않은 위협요소 중 하나인데,

    대부분의 사람들이 DNS 로도 DDoS가 너무나 쉽게 가능함을 모르는 듯 싶다.

     
     

    리눅스로 자체 네임서버를 구성하는 경우가 많은데, 보안에 대한 부분은 신경 쓰지 않고 운영되는 경우가 무지기수.. (윈도우도 포함이지만 리눅스에 비해선 구축비율이 적다.)

     
     

     
     

    1.  최신 소스 다운로드 받기 (2013.05.13 기준 9.9.2 P2)

    다운로드 주소 : ftp://ftp.isc.org/isc/bind9/

     
     

    cd /usr/local/src/

    wget  ftp://ftp.isc.org/isc/bind9/9.9.2-P2/bind-9.9.2-P2.tar.gz

     
     

    최신버전을 설치 할 것을 권장하며, 가급적 예전 버전의 경우 취약점이 있다고 알려진 것들은 받지 않는다.

      
     

     
     

    1. 기존 설정 백업 

     
     

    [root@localhost src]# cp /etc/named.conf named.conf-20130513

    [root@localhost src]# /usr/sbin/named -v

    BIND 9.2.4

    [root@localhost src]# cp /usr/sbin/named /usr/sbin/named-924

    혹시 모르니.. 기존 zone 파일 위치 백업도 함께 하자.

    [root@localhost src]# mkdir /home/bind_20130513

    [root@localhost src]# cp -rp /var/named/chroot/var/named /home/bind_b201305013

     
     

     
     

    1. 컴파일하기 

     
     

    [root@localhost src]# tar zxvf bind-9.9.2-P2.tar.gz

    [root@localhost src]# cd bind-9.9.2-P2

    [root@localhost bind-9.5.0rc1]# vi  bin/named/include/named/globals.h

     
     

    EXTERN const char *             ns_g_defaultpidfile     INIT(NS_LOCALSTATEDIR

                                                                 “/run/named.pid“);

    EXTERN const char *             lwresd_g_defaultpidfile INIT(NS_LOCALSTATEDIR

                                                                “/run/lwresd.pid“);

    이부분을 

      
     

    EXTERN const char *             ns_g_defaultpidfile     INIT(NS_LOCALSTATEDIR

                                                                 “/named.pid“);

    EXTERN const char *             lwresd_g_defaultpidfile INIT(NS_LOCALSTATEDIR

                                                                “/lwresd.pid“);

     
     

    로 수정

     
     

    [root@localhost bind-9.9.2-P2]# ./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var/run/named –enable-threads

    [root@localhost bind-9.9.2-P2]# make && make install

     
     

     
     

    컴파일후 바로 데몬을 확인하시길 바랍니다.

    가끔 데몬이 죽는경우가 생기기 때문입니다.

     
     

    [root@localhost bind-9.5.0rc1]# ps -ef | grep named

    named    13608     1  0 May19 ?        00:00:00 /usr/sbin/named -u named

    root     24320 23450  0 18:15 pts/1    00:00:00 grep named

     
     

    재시작 하기전에 위에서 언급 한 보안설정을 적용한다.

    [root@localhost bind-9.9.2-P2]# vi /etc/named.conf

     
     

    1. recursion 취약점
      설정

    아래 두가지 옵션 중 하나를 사용할 것을 권장.

    (메일 서비스 사용하는 서버의 경우 2번 방법 적용 할 것을 권장함)

    1. recursion 기능 비활성화
    • 주의사항
      • recursion 옵션 no로 변경 시 일반 도메인에 대한 질의는 응답하지 않습니다.
      • 자기 자신이 가지고 있는 Zone 파일 내용들만 응답 하게 됩니다.
      • 일반질의가 되지 않을 때 문제가 되는 부분은 서버의 /etc/resolve.conf 자신의 아이피가 등록 되어 있다면 서버내에서 이름풀이가 되지 않는 문제 발생. 이 경우 외부 DNS 지정을 통해 해결. 예) 168.126.63.1 / 168.126.63.2

         
         

    /etc/name.conf 혹은 /etc/named.caching-nameserver.conf

    options {



            version “UNKNOWN”;  // bind
    버전을 UNKNOWN으로
    표시

            recursion no;  // Recursion 질의
    기능 OFF

            allow-transfer { 127.0.0.1; }; // Slove 서버가
    존재한다면
    추가
    기입



    };

     
     

    1. recursion 서비스를 신뢰된 호스트로 제한
    • loopback IP와 211.239.151.211/32 서버 IP에 대해 recursion 이용 가능 하도록 하는 예

    acl trust { 127.0.0.1/32; 211.239.151.211/32; };

    options {



    version “UNKNOWN”;  // bind
    버전을 UNKNOWN으로
    표시

    allow-recursion { trust; };

    allow-transfer { 127.0.0.1; }; // Slove 서버가
    존재한다면
    추가
    기입


     

    };

     
     

    [root@localhost bind-9.9.2-P2]# service named restart  혹은

    [root@localhost bind-9.9.2-P2]# /usr/sbin/named restart

     
     

    [root@localhost bind-9.9.2-P2]# /usr/sbin/named -v 

     BIND-9.9.2-P2

     
     

     
     

     
     

     
     

     
     

     
     

    Comments

    comments

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.