강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

named의 보안을 위한 인증키(rndckey) 설정

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

named의 보안을 위한 인증키(rndckey) 설정

 

 

 



 

BIND를 설치한 후에 가장 먼저 해줘야 할 것이 있다.

 

 

 

 

 그것은 rndckey라고 하는 것이다.

 

 

 

 

 만약 여러분들이 rpm으로 설치하였다면 이미 작업이 되어있을 것이다.

 

 

 

 

 만약 BIND를 컴파일하여 설치하였다면 처음 named 를 실행하면 실행이 되지않거나 또는 rndc가 제대로 실행되지 않을 것이다.

 

 

 

 

  이 이유는 rndckey가 생성되어있지 않기 때문이다.

 

 

 

 

 

 

결론적으로 말하자면 rndckey를 생성하여 넣어주기만 하면 named rndc가 제대로 작동한다는 것이다.

 

 

 

 

 물론 이 절에서 rndckey를 생성하여 설정하는 예를 보도록 할 것이다.

 

 

 

 

 

이 작업을 하기 전에 이론적인 부분을 말하도록하겠다.

 

 

 

 

 

 

즉 왜 이 작업을 해야하는가?

 

 

 

그리고 이 rndckey값은 어디에 사용되는가?

 

 

 

그리고 이 rndckey값은 누가 사용하는가?등에 대한 이해를 해야한다.

 

 

 

 

 

 

이를 이해하기 위하여 먼저 다음 파일을 보기 바란다.

 

 

 

 

 


/etc/rndc.key 파일

 

 

 

 

 

BIND 즉 네임서버(name server)를 원격제어하기 위한 유틸리티가 있는데 이것이 바로 rndc라는 것이다.

 

 

 

 

 rndc“remote named server daemon control utility”의 약어로서 말 그대로 네임서버를 원격제어하기 위한 유틸리티이다.

 

 

 

 

 이것이 제대로 작동하기 위해서는 다음 두가지 조건이 성립되어야 한다.

 

 

 

 

 

 

하나는 rndc의 메인 설정파일인 /etc/rndc.conf파일이 제대로 설정되어있어야 하고, 둘째는 rndc의 키파일인 /etc/rndc.key파일이 또한 제대로 설정되어 있어야 한다.

 

 

 

 

 

 

따라서 이두가지에 대해서 살펴보도록 하자.

 

/etc/rndc.key파일은 rndckey를 보관하고있는 키파일로서 /etc/named.conf파일과 /etc/rndc.conf 파일에서 include하여 사용하는 파일이다.

 

 

 

 

 다음은 설치초기의 /etc/rndc.key파일의 내용이다.

 

 

 

 

 이 파일은 /etc/rndc.key라는 위치가 원래위치이지만 chroot가 적용되어 현재는 거의 대부분 /var/named/chroot/etc/rndc.key라는 위치이다.

 

 

 

 

 

 

[root@sulinux ~]#ls -l /etc/rndc.key

lrwxrwxrwx 1 root named 31  2  9 17:59 /etc/rndc.key -> /var/named/chroot//etc/rndc.key

[root@sulinux ~]#

[root@sulinux ~]#cat /var/named/chroot/etc/rndc.key

key rndckey {

        algorithm hmac-md5;

        secret sTr0BYVesOWKV7XHsDqRBxGYkHXabpEbNPRZtm84OznNjtzgcTxC6mG59iQl;

};

[root@sulinux ~]#

 

 

 

원래는 위와 같이 secret부분에 제대로 된 키값이 설정되어 있어야 한다.

 

 

 

 

 그래야만 bind가 제대로 수행될 수 있다.

 

 

 

 

 그런데 다음 예를 보기 바란다.

 

 

 

 

 

 

[root@sulinux ~]# cat /etc/rndc.key
key "rndckey" {
        algorithm       hmac-md5;
        secret "";
};
[root@sulinux ~]#

 

 

 

 

처음 설치하였거나 실행이 잘 되지 않는 bind에서 흔히 볼 수 있는 예로서 위의 파일내용 중 secret부분에 아무런 키값이 설정되어있지 않다.

 

 

 

 

 따라서 현재 이 상태로는 rndc의 실행이 되지 않을 뿐아니라 named가 원격제어되지 않는다.

 

 

 

 



 

 


/etc/named.conf파일에서 사용되는 rndckey


 

 

 

다음은 /etc/named.conf파일(또는 /var/named/chroot/etc/named.conf)의 내용 중 일부이다.

 

 

 

 

 

 

include "/etc/rndc.key";

 

 

 

 

보는 바와같이 named.conf파일에서는 /etc/rndc.key파일을 include하고 있으며 이 파일에서 사용하는 키값은 원격지의 named에 특정요청을 보내고 받을 때사용되는 키로서 현재서버에 있는 named데몬이 사용하는 키값이다.

 

 

 

 

 

 

 

/etc/rndc.conf파일에서 사용되는 rndckey

 

 

 

 

 

그리고 다음은 /etc/rndc.conf파일의 일부이다.

 

 

 

 

 

 

include "/etc/rndc.key";

 

 

 

 

이 파일 역시 /etc/rndc.key파일을 include하고있으며 이 파일에서 사용하는 키값은  원격지에서 네임서버를 제어하려고 할 때에 사용되는 키값으로서 현재서버의 rndc가 사용하는 키값이다.

 

 

 

 

 rndc가 원격지의 named를 제어(reload, status)하려고 할때에 원격지의 named에도 동일한 키값이 존재해야만 제어가 된다.

 

 

 

 

 

 

보는 바와같이 named.conf파일과 rndc.conf파일에서는 모두  /etc/rndc.key파일을 include하는 문이 들어가 있다.

 

 

 

 

 named.conf파일과 rndc.conf파일은 모두 /etc/rndc.key파일의 키값을 읽어들여서 사용한다는 것을 알 수 있다.

 

 

 

 

 하지만 설명한 바와같이 이 두파일은 사용하는 주체와 사용하는 용도는 각각 다르다는 점을 알아야한다.

 

 

 

 

 

 

 

/etc/rndc.key파일에 rndckey키값 생성하기


 

 

이제 rndckey를 생성하여 /etc/rndc.key파일에 넣어주기만 하면 된다.

 

 

 

 

 앞에서 설명한 바와같이 /etc/rndc.key파일은 /etc/named.conf파일과 /etc/rndc.conf파일 모두에 include되므로 모두 적용될 것이다.

 

 

 

 

 물론 이 두파일에 각각 다른 rndckey를 생성해 줄 수도 있다.

 

 

 

 

 

rndckey
를 생성하는 dnssec-keygen이라는 것이 있다.

 

 

 

 

 dnssec-keygen은 한마디로 “DNSSECkey(bind보안키) 생성툴이라고 정의할 수 있다.

 

 

 

 

 다음과 같이 dnssec-keygen을 이용하여 rndckey를 생성하였다.

 

 

 

 

 

 

[root@sulinux ~]# dnssec-keygen -a hmac-md5 -b 512 -n ZONE -r /dev/random named
Knamed.+157+63283
[root@sulinux ~]#

 

위의 실행결과로 다음 두개의 파일이 생성된다.

 

 

 

 

 

 

[root@sulinux ~]# ls -l
total 176
-rw-------    1 root     root          114 Jan 12 21:58 Knamed.+157+63283.key
-rw-------    1 root     root          145 Jan 12 21:58 Knamed.+157+63283.private
[root@sulinux ~]#

 

 

 

 

위의 두 파일 중 “Knamed.+157+63283.key”파일의 내용을 확인해 보면 다음과 같다.

 

 

 

 

 

 

[root@sulinux ~]# cat Knamed.+157+63283.key
named. IN KEY 256 3 157 iYQUXO+VXzAQE5qaVGm3TY8dVt/QcdrEfyv4yXdZUPkVd4dLdzxGIZHB APO2kl00s5fimkJn5u7S85t+RrAIyA==
[root@sulinux ~]#

 

 

 

위의 “Knamed.+157+63283.key”파일의 내용 가운데 “iYQUXO+VXzAQE5qaVGm3TY8dVt/QcdrEfyv4yXdZUPkVd4dLdzxGIZHBAPO2kl00s5fimkJn5u7S85t+RrAIyA==”부분이 rndckey값이다.

 

 

 

 

 

 

따라서 이부분을 그대로 복사하여 다음과 같이 /etc/rndc.key파일의 secret값으로 넣어주어야 한다.

 

 

 

 

 

 

[root@sulinux ~]# cat /etc/rndc.key
key "rndckey" {
        algorithm       hmac-md5;
        secret "iYQUXO+VXzAQE5qaVGm3TY8dVt/QcdrEfyv4yXdZUPkVd4dLdzxGIZHB APO2kl00s5fimkJn5u7S85t+RrAIyA==";
};
[root@sulinux ~]#

 

 

 

 

이제 named를 재시작하면 생성된 rndckey값이 적용된다.

 

 

 

 

 

이번 절의 결론은 다음과 같다.

 

 

 

 

 dnssec-keygen유틸리티를 이용하여 /etc/rndc.key파일내의 secret에 들어가야하는 rndckey값을 생성한 것이다.

 

 

 

 

 

위와 같이 BIND를 컴파일하여 설치하셨다면 반드시 rndckey값을 확인하고 생성되어있지 않다면 이 절의 설명을 참고하여 생성해주기 바란다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,798 개
  • 현재 접속자 :  128 명