변군이글루

[bind] rndc(remote name daemon control) 유틸리티 본문

임___네임서버

[bind] rndc(remote name daemon control) 유틸리티

변군 변군이글루 2013.09.07 23:55

rndc(remote name daemon control) 유틸리티

 

관리자용 rndc(remote name daemon control) 유틸리티가 사용하는 설정 파일로 named.conf와 비슷함

 

rndc.conf의 구성

options

server

key

 

server { }; key { }; 구문은 여러 개 설정할 수 있다.

설정 내용을 수동으로 하나씩 입력하거나, rndc-confgen 유틸리티를 이용할 수 있다.

 

options {

default-server localhost;

default-key "rndckey";

};

 

server localhost {

keys "rndckey";

};

 

key "rndckey" {

algorithm hmac-md5;

secret "ZMuyJzOvfbkHarwLcKGPFGPYWmYujkYCxZinrurrnLoLlfqQrjTmiGXSVSrRz";

};

 

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

 

aaa# pwd

/usr/local/bind/sbin

aaa# ls -F

dnssec-keygen*      dnssec-signzone*    named-checkconf*    rndc-confgen*

dnssec-makekeyset*  lwresd*             named-checkzone*    zz

dnssec-signkey*     named*              rndc*

aaa# ./rndc-confgen -h

Usage:

rndc-confgen [-a] [-b bits] [-c keyfile] [-k keyname] [-p port] [-r randomfile] [-s addr] [-t chrootdir] [-u user]

  -a:           generate just the key clause and write it to keyfile (/usr/local/bind/etc/rndc.key)

  -b bits:      from 1 through 512, default 128; total length of the secret

  -c keyfile:   specify an alternate key file (requires -a)

  -k keyname:   the name as it will be used  in named.conf and rndc.conf

  -p port:      the port named will listen on and rndc will connect to

  -r randomfile: a file containing random data

  -s addr:      the address to which rndc should connect

  -t chrootdir: write a keyfile in chrootdir as well (requires -a)

  -u user:      set the keyfile owner to "user" (requires -a)

aaa# ./rndc-confgen -k ns_rndckey

aaa# ls -F

dnssec-keygen*      dnssec-signzone*    named-checkconf*    rndc*

dnssec-makekeyset*  lwresd*             named-checkzone*    rndc-confgen*

dnssec-signkey*     named*              ns_rndckey.key      zz

aaa# cat ns_rndckey.key

# Start of rndc.conf

key "ns_rndckey" {

        algorithm hmac-md5;

        secret "sbDx+aLPxggYTzEV4blZ+w==";

};

 

options {

        default-key "ns_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 "ns_rndckey" {

#       algorithm hmac-md5;

#       secret "sbDx+aLPxggYTzEV4blZ+w==";

# };

# 

# controls {

#       inet 127.0.0.1 port 953

#               allow { 127.0.0.1; } keys { "ns_rndckey"; };

# };

# End of named.conf

aaa#

 

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

 

options { }; 구문

1) rndc 명령을 사용할 경우 기본적으로 접속할 네임서버(default-server)와 기본키(default-key)를 설정한다.

2) 또한 네임서버가 rndc 제어 메시지를 받아들일 포트(default-port)를 설정할 수 있다.

3) 이 포트는 BIND 부트 설정 파일의 controls 구문에서 설정하녀, 기본 포트 953에서 네임서버가 listen한다.

 

server { }; 구문

1) rndc 유틸리티를 이용해 특정 네임서버를 제어하고자 할 때 접근하고자 하는 네임서버에 대한

   keys를 설정하거나 기타행동에 대한 사항을 설정하는 구문이다.

2) 서브 옵션으로 keys 구문를 포함할 수 있다.

 

server ip_addr {

[ bogus yes_or_no; ]

[ provide-ixfr yes_or_no; ]

[ request-ixfr yes_or_no; ]

[ edns yes_or_no; ]

[ transfer number; ]

[ transfer-format ( one-answer | many-answers ); ]

[ keys { string; [ string; [...]] }; ]

};

 

여기서

ip_addr

제어 메시지를 보낼 원격의 IP 주소를 설정한다.(localhost도 포함)

, IP 주소에 설정한 네임서버로 질의, 요청, 제어 메시지를 보낼 때

    서브의 keys { } 구문을 이용해 해당 암호키로 인증하도록 설정한다.

 

keys { string; };

암호키 이름을 string에 설정한다.

이 암호키는 다음의 key { }; 구문에 설정한다.

 

key { }; 구문

rndc와 같은 관리자 유틸리티를 사용할 인증에 필요한 암호키 부분을 설정하는 구문이다.

named.conf 설정 파일의 controls 구문과 같이 rndc유틸리티를 사용하지 않는다면 역시 이 key 구문도 필요치 않다.

key 구문은 controls 구문외에도 server 구문과 연관된다.

 

key key_id {

algorithm string;

secret string;

};

 

/etc/rndc.key 파일을 보자

 

key "rndckey" {

algorithm hmac-md5;

secret "ZMuyJzOvfbkHarwLcKGPFGPYWmYujkYCxZinrurrnLoLlfqQrjTmiGXSVSrRz";

};

암호키 알고리즘은 트랜젝션 서명(TSIG:Transaction signature) 인증에 사용되는 hmac-md5 알고리즘을 사용한다.

secret 구문은 hmac-md5 암호를 설정하는 구문이다.

 

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

 

hmac-md5 알고리즘 암호키를 만들어 보자.

암호키를 생성할 명령어는 dnssec-keygen 유틸리티를 이용한다.

 

aaa# ls -l dnssec-keygen

-rwxr-xr-x   1 root     other     424724  6 10  09:58 dnssec-keygen

aaa# ./dnssec-keygen

Usage:

    dnssec-keygen -a alg -b bits -n type [options] name

 

Required options:

    -a algorithm: RSA | RSAMD5 | DH | DSA | HMAC-MD5

    -b key size, in bits:

        RSA:            [512..4096]

        DH:             [128..4096]

        DSA:            [512..1024] and divisible by 64

        HMAC-MD5:       [1..512]

    -n nametype: ZONE | HOST | ENTITY | USER

    name: owner of the key

Other options:

    -c class (default: IN)

    -e use large exponent (RSA only)

    -g use specified generator (DH only)

    -t type: AUTHCONF | NOAUTHCONF | NOAUTH | NOCONF (default: AUTHCONF)

    -p protocol value (default: 2 [email] for USER, 3 [dnssec] otherwise)

    -s strength value this key signs DNS records with (default: 0)

    -r randomdev (a file containing random data)

    -v verbose level

Output:

     K++.key, K++.private

aaa# ./dnssec-keygen -a hmac-md5 -b 512 -n HOST ns_rndckey

Kns_rndckey.+157+07177

aaa# ls K*

Kns_rndckey.+157+07177.key       Kns_rndckey.+157+07177.private

aaa# cat Kns_rndckey.+157+07177.key

ns_rndckey. IN KEY 512 3 157 91QsIokS9pBy0n56ZbkkOa1vxmuT1IcMbaUksnG0HN+OIfdKBHCj3RUk gVs6xx+eOANbqz/0wdtrjivs2WsjZg==

aaa# cat Kns_rndckey.+157+07177.private

Private-key-format: v1.2

Algorithm: 157 (HMAC_MD5)

Key: 91QsIokS9pBy0n56ZbkkOa1vxmuT1IcMbaUksnG0HN+OIfdKBHCj3RUkgVs6xx+eOANbqz/0wdtrjivs2WsjZg==

aaa#

 

여기서 157   DNSSEC 알고리즘 번호로 HMAC-MD5를 의미함

       07111은 암호키의 해시값임

생성된 두개의 파일 중 ***.private key: 부분이 있으므로 이 키를 복사하여 key 구문의 secret 구문에 위치시키면 된다.

 

/etc/rndc.key 파일을 다음과 같이 할 수 있다.

key "rndckey" {

algorithm hmac-md5;

secret "91QsIokS9pBy0n56ZbkkOa1vxmuT1IcMbaUksnG0HN+OIfdKBHCj3RUkgVs6xx+eOANbqz/0wdtrjivs2WsjZg=="

};

 

이 암호키는 rndc nsupdate와 같은 관리자 유틸리티를 이용해 원격의 네임서버를 컨트롤할 때 사용된다.

예를 들어, 원격의 네임서버(192.168.10.4)에서 로컬의 네임서버(192.168.10.3)

           이 암호키를 이용해 제어하려면 둘 다 똑같이 이 암호키를 설정해 주어야 한다.

 

【예제】로컬 네임 서버(192.168.10.3) /etc/named.conf

....

controls {

inet 127.0.0.1 allow { localhost; 192.168.10.4; } keys { ns_rndckey; }

};

.....

key "ns_rndckey" {

algorithm hmac-md5;

secret "91QsIokS9pBy0n56ZbkkOa1vxmuT1IcMbaUksnG0HN+OIfdKBHCj3RUkgVs6xx+eOANbqz/0wdtrjivs2WsjZg=="

};

 

【예제】원격 네임 서버(192.168.10.4) /etc/rndc.conf

....

server 192.168.10.3 {

key "ns_rndckey";

};

.....

key "ns_rndckey" {

algorithm hmac-md5;

secret "91QsIokS9pBy0n56ZbkkOa1vxmuT1IcMbaUksnG0HN+OIfdKBHCj3RUkgVs6xx+eOANbqz/0wdtrjivs2WsjZg=="

};

 

 

 

0 Comments
댓글쓰기 폼