kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

OS

Bind 서버 구축 ( CentOS 5.x )

까마기 2014. 9. 28. 18:08
반응형

1. 패키지 설치
# yum install -y bind bind-libs bind-utils caching-nameserver

//bind 패키지와 bind 라이브러리, bind 유틸, caching-nameserver 를 yum을 이용하여 설치, 그리고 굳이 libs과 utils를 설치 하지않아도 
# yum install -y bind 만 설치하여도 의존성 때문에 자동으로 설치를 해준다. caching-nameserver는 따로 설치 해주어야 한다. 

################### CentOS 5에서 Bind 불가 ###################### //

* named.conf 파일이 없다면 .. 버전을 확인 할 것. CentOS의 bind-9.3.3 버전에서는 named.conf 와 같은 config 파일을 더이상 기본으로 설치해 주지 않는다. 
 bind-9.2 버전 까지는 /etc/named.conf 를 사용하고 bind-9.3 버전 부터는 named.caching-nameserver.conf 를 사용한다.
* bind-utils 은 기본적으로 설치가 되있다. 실수로 bind-utils를 지우게 되면 nslookup, dig, host 명령어를 사용할 수 없게 된다. 

[root@ns root]# rpm -qa | grep bind

bind-9.3.3
bind-libs-9.3.3
bind-utils-9.3.3

[root@ns root]# rpm -qa | grep nameserver

caching-nameserver-9.3.3

==> 패키지가 설치되어 있는지 확인한다.

caching-nameserver-9.3.3 패키지가 설치되어 있다면,
/etc/named.conf를 대신하여 /etc/named.caching-nameserver.conf가 BIND 설정파일이 된다.
별도의 설정을 사용하고자 한다면, /etc/named.caching-nameserver.conf 파일을 cp 명령어로 /etc/named.conf 로 만들어주고
BIND 서비스 재시작시 자동으로 /etc/named.conf를 설정파일로 이용한다.

* CentOS 상에 named.conf 가 없는 초기화 상태에서 bind 패키지를 yum을 이용하여 설치 하였더니..
/etc 안에 설정파일을 찾을 수 없었다.(9.3버전이니까 named.conf 가 아닌 named.caching-nameserver.conf 파일.)
그래서 다시 bind 패키지를 삭제 후 
# yum install -y caching-nameserver  이렇게 했더니
자동적으로 bind 9.3 버전의 패키지를 같이 설치를 해주었다. 
결론적으로 필요한 것은...
1. bind
2. bind-libs
3. bind-utils
4. caching-nameserver
이것만 설치해주면 DNS 서버 구축하기 위한 기본적인 준비가 되었다고 할 수 있다.
1. bind-chroot 를 설치한 경우
** bind-chroot 패키지를 설치하였다면, BIND 서비스는 /var/named/chroot 디렉토리를 통하여 실행된다.

또한 모든 설정파일도 /var/named/chroot 디렉토리로 이동될 것이다.

named.conf 설정 파일도 /etc 디렉토리에 위치하는 것이 아니라 /var/named/chroot/etc/ 디렉토리에 위치하게 된다.





2. caching-nameserver 를 설치한 경우

** Bind 서비스는 /etc 에 위치.
* 설정 파일 백업


# cp named.caching-nameserver.conf named.caching-nameserver.conf.bak

# ls | grep named.*        //확인


# vi /etc/named.caching-nameserver.conf

* directoy "/var/named";     ----> DNS의 zone 파일 위치 지정


options {

listen-on port 53 { any; };        // 허용하고자 하는 ip 또는 test 시 any로 설정


allow-query    { any; };

allow-query-cache { localhost; };

// nameserver query를 허용할 ip 혹은 ip 대역을 설정하는 지시자이며, 외부와의 query를 허용하려면 any 로 설정.





* 위의 설명에 덧붙여서 ..
recursion 은 외부에서 현재의 nameserver를 지정하여 사용할 수 있게 할지 사용할 수 없게 할 지를 설정하는 지시자이다.
보안을 위해서는 no 로 지정하는 것이 좋다.
* any는 윈도우에서 말하는 all 과 같다.

* 설정파일 설정이 제대로 되었는지 확인



맨 밑에 줄에 교육용이든, 앞으로 쓸 도메인을 추가한다. 지금 해당 server에 wireless.or.kr 이란 도메인을 사용할 것이며 file은 wireless.or.kr.zone을 참고 할 것이다. 이 파일은 /var/named/localdomain.zone 파일을 복사하여 설정한다.


설정 완료 후 named-checkconf 로 이상이 없는지 확인

# named-checkconf /etc/named.rfc1912.zones


*참고

/var/named/named.ca
- 이 파일은 com, net, org 와 같은 최상위 도메인에 대한 관리 권한을 가진 nameserver 들에 대한 정보를 가지고 있다.
루트 도메인 파일의 업데이트를 위해서는 최신 파일을 다운로드 받고 /var/named/named.ca 파일에 복사하면 된다.

# cd var/named
[/var/named]#ls chroot localdomain.zone named.broadcast named.ip6.local named.zero data localhost.zone named.ca named.local slaves

* 실제 zone 파일이 있는 절대 경로 /var/named/chroot/var/named에 zone 파일을 생성 또는 /var/named에 디폴트 파일을 복사하여 사용하면 자동으로 링크가 되기 때문에 편리하다.

# cp localhost.zone wireless.or.kr.zone  // 위의 named.rfc1912.zones 에 설정한 대로
wireless.or.kr을 참고 해야 하므로 cp 명령어로 파일을 만들어준다음 설정한다.

#vi wireless.or.kr.zone
-> localhost.zone의 설정 전


* 마지막으로 생성된 파일에 대해서는 다음과 같이 파일 퍼미션을 설정해 주면 된다.

@ 도메인 자기 자신을 말함. 

관리자 메일 주소 root.wieless.or.kr (임의로 만든것임)
밑에는 보조영역 관리에 대한 영역
wireless.or.kr 자기 자신 @임 
앞에 아무것도 없는거는 자기자신임.
우선순위 10으로 주기 INMAX에 
<레코드>
1. SOA (Start Of Authority) : 권한의 시작 레코드로 항상 하나의 존에는 첫번째로 나와야 하는 레코드이다. 해당 영역에 대한 권한을 가지고 있는 네임서버와 주소를 나타낸다.
2. NS (Name Server) : 해당 영역에 대하여 네임 서버 목록을 나타낸다.
3. A (Host) : 정방향 조회 역역에서 사용하는 호스트 이름의 IP 주소의 호스트 이름을 나타낸다.
4. PRT ( Pointer) : 역방향 조회 영역에서 사용되는 IP 주소의 호스트 이름을 나타낸다.
5. CNAME (Alias) : 하나의 IP 주소가 여러 개의 이름을 가질 수 있는데 이러할 경우 하나는 A 레코드로 기록되고 나머지는 CNAME 레코드로 기록된다.
6. MX ( Mail Exchange ) : 해당 도메인에서 메일 서버를 나타낸다.

이 파일을 설정하면서 에러가 많이 났다. ; 뒤에 serial 부분을 다 지워주었고, nslookup 명령어도 갑자기 사용할 수 없게 되어 bind-utils을 다시 설치하였고, DNS 서버지정도 KT의 것을 쓰고 있었다. 다시 자기자신으로 바꿔주었다.( 내 자신이 DNS 서버를 구축하고 있기 때문에.)


=======================================================
3. BIND-9.2.x 버전 일 경우 설정파일의 위치는 /etc/named.conf 
: 이 파일은 nameserver 데몬이 시작될 때 제일 먼저 읽어 들이는 설정 파일이므로 파일 안에 
나머지 세부 설정파일은 /etc/named.conf 의 설정에 따라 경로 및 파일이름이 결정된다. 
/etc/named.rfc1912.zones
/etc/name.root.hints
/etc/rndc.conf
/etc/rndc.key
아래의 그림은 bind-chroot 를 설치 했을 때의 설정파일 경로를 링크하여 /etc에 설정 파일이 위치한 것을 알 수 있다.(심볼릭 링크


/////////*. named.conf 파일안에 들어가는 설정은 크게 4가지이다. 


첫번째 - 세부 설정파일을 저장할 디렉토리 : option
두번째 - root domain zone
세번째 - Forward zone : 도메인 -> ip 변환
네번째 - Reverse zone : ip -> 도메인 변환


 1014  named-checkconf /etc/named.caching-nameserver.conf
 1015  named-checkconf /etc/named.rfc1912.zones
 1016  named-checkzone wireless /var/named//wireless.zone
 1017  vi wireless.zone
 1018  named-checkzone wireless /var/named//wireless.zone
 1019  service named status
 1020  service named start
 1021  vi /etc/resolv.conf
 1022  nslookup
 1023  ls
 1024  chmod -R otr wireless.zone
 1025  chmod -R o+r wireless.zone
 1026  ls -al
 1027  vi /etc/resolv.conf
 1028  vi /etc/resolv.conf
 1029  named-checkzone wireless /var/named//wireless.zone
 1030  named-checkzone wireless /var/named//wireless.zone



* DNS 보안 취약성 ( 정보보안 기사, 산업기사 한권으로 끝내기 - 저자: 전주현 -- 참고)
1. BIND DNS 서비스 방해공격 취약점 : 취약한 BIND 네임서버가 특수하게 조작된 RDATA 로드 이후 리소스 레코드를 요청할 경우 BIND DNS가 잠기는 취약점이 있다. 현재 ISC에서 보안 업데이트를 발표한 상태이다. 리눅스의 BIND DNS 자체의 취약성이다. 따라서 시스템 관리자 및 보안담당자는 이러한 소프트웨어 취약점에 대해서는 늘 관심을 가지고 있어야 하며 패치가 나오면 반드시 업데이트를 해 주어야 한다.
 2. DNS Cache poisoning  공격 : 취약한 DNS 서버에 조작된 쿼리를 전송하여 DNS 서버가 저장하고 있는 주소 Cache 정보를 임의로 변조하는 공격을 말한다. 


반응형

'OS' 카테고리의 다른 글

sendmail , POP3 서버 구축하기  (0) 2014.09.28
Bind 패키지 설치 후 named 데몬 올리기 중 에러  (0) 2014.09.28
Netstat 연결 상태 정의  (0) 2014.09.27
Windows 권한  (0) 2014.09.27
DNS 서버의 역할  (0) 2014.09.27