6. 기본보안옵션

By Jamie Norrish

설정옵션을 이용하여 문제의 소지를 줄이기.

서버의 부하를 줄이고 보안을 높히기 위한 몇가지 간단한 단계들이 있다. 여기 나오는 부분이 시작할때 나온 부분보다 더 나가는 것은 없다. 만약 당신이 보안에 관심이 없다면 (아마 그럴것이지만) 넷상의 다른 자원들을 살펴보길 바란다(마지막 장 참조)

설정은 named.conf에서 이루어진다. file options부분이 지정되면 파일에 지정된 모든 zone 파일들이 적용이 된다. zone 파일부분이 지정이 되면 그 zone에서만 적용된다. zone 부분은 options 부분을 override한다.

6.1. 전송에서의 제한

slave 서버가 도메인에 대해 응답할 수 있게 하려면 주서버로부터 zone 정보를 전달받아야 한다. 이러한 요청을 하는 부분은 일부분이면 된다. allow-transfer 옵션으로 전송을 제한 할 수 있다.192.168.1.4 주소는 ns.friend.bogus의 주소이고 디버깅 목적으로 추가되었다.

zone "linux.bogus" {
      allow-transfer { 192.168.1.4; localhost; };
};

zone 전송을 제한함으로서 정보가 필요한 사람만이 질의를 할 수 있고 그외에는 DNS 셋업에 대한 정보를 얻을 수 없다..

6.2. spoofing으로부터의 보호

우선 자신의 컴퓨터 이외에는 어떤 질의도 불가능하게 하라(내부/local 은 제외). 이것은 악의적인 DNS사용을 막아줄 것이고 서버의 불필요한 이용을 줄여 줄 것이다.

options {
      allow-query { 192.168.196.0/24; localhost; };
};

zone "linux.bogus" {
      allow-query { any; };
};

zone "196.168.192.in-addr.arpa" {
      allow-query { any; };
};

그리고 내부/local을 제외한 나머지에서 재귀적인 질의를 불가능하게 하라. 이것은 cache 공격의 위험(잘못된 데이터를 전송하는 경우)을 줄여줄 것이다.

options {
	allow-recursion { 192.168.196.0/24; localhost; };
};

6.3. root외의 계정으로 named 구동

named를 root가 아닌 user로 구동시키는 것은 아주 좋은 생각이다. 이렇게 되면 크래커에게 권한을 뺏겨도 제한적일 수 밖에 없다. named를 구동할 user와 group을 생성하고 named가 구동되게 init script를 수정하라. named를 새 user의 group이 조정하도록 -u 와 -g flag를 줘라.

예를 들어 Debian GNU/Linux2.2 경우 /etc/init.d/bind script는 아래와 같이 수정할 수 있다. (user와 group이 생긴 상황에서)

start-stop-daemon --start --quiet --exec /usr/sbin/named -- -u named -g named

RedHat이나 다른 배포판도 마찬가지이다. Dave Lugo가 secure dual chroot setup에 대해서 http://www.etherboy.com/dns/chrootdns.html에 기술해 놓았다. 관심있으면 참고하길