1. 버전 알아 내기와 감추기
1) 로컬 서버에서 확인
# named -v
2) nslookup 이용
# nslookup
> server kns.kornet.net
Default Server: kns.kornet.net
Address: 168.126.63.1
> set class=chaos
> set type=txt
> version.bind
Server: kns.kornet.net
Address: 168.126.63.1
VERSION.BIND text = "Cyber World Leader Kornet!"
>
* 보통 보안을 위해서 위와 같이 변경을 합니다.
3) dig 이용
# dig @kns.kornet.net txt chaos version.bind
; <<>> DiG 8.3 <<>> @kns.kornet.net txt chaos version.bind
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44330
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUERY SECTION:
;; version.bind, type = TXT, class = CHAOS
;; ANSWER SECTION:
VERSION.BIND. 0S CHAOS TXT "Cyber World Leader Kornet!"
;; Total query time: 1 msec
;; FROM: ns.telate.com to SERVER: 168.126.63.1
;; WHEN: Tue Jun 7 14:39:20 2005
;; MSG SIZE sent: 30 rcvd: 81
4) 버전 감추기
- named.conf 파일에 아래와 같이 넣어 줍니다.
options { version "x.x.x"; }
// 이렇게 하면 버전 정보가 x.x.x 로 출력 됨.
2. DNS 캐시
1) rndc 또는 ndc(bind8) 명령으로 캐시 내용을 추출함.
# ndc dumpdb
이후 named_dump.db 파일을 열어서 확인 함.
2) 윈도우 OS에서 확인
c:> ipconfig /displaydns --> 캐시 내용이 출력됨.
c:> ipconfig /flushdns --> 캐시를 초기화 함.
* 윈도우가 멍청해서 가끔 잘못된 dns lookup을 할 경우가 있음으로 위의 명령을
활용하면 유용합니다.
3. BIND에서 보안 옵션들
1) recursion 방지
named.conf 에 options { allow-recursion { 172.0.0.1; 192.168.0.0/24; };}; 추가 하면
해당 네트워크나 IP에서만 recursion 커리를 할 수 있음.
* recursion 을 막아 두면 해당 도메인에 대한 네임서버만 쿼리에 대하여 리스폰스 합니다.
2) 존트랜스퍼 방지
named.conf 에 options { allow-transfer { 192.168.0.1; }; }; 추가 하여
slave 네임서버만 zone transfer를 할 수 있도록 함.
* bind가 기본값이 zone transfer 가 되도록 되어 있음으로 slave서버가 없다면
options { allow-transfer ( none; }; }; 으로 셋팅 하시기 바랍니다.
3) zone transfer 되는지 확인하기
# dig @ns.test.co.kr test.co.kr axfr
# nslookup
> server ns.test.co.kr
> ls -t test.co.kr
[ns.test.co.kr]
*** Can't list domain telate.com: Unspecified error
>
* 보통 위와 같이 나오면 zone transfer 되지 않는 것임
(zone transfer 는 TCP에서 동작 함)
4. dig 유틸리티 사용
1) 기본 사용법
dig [@server] domain [<query-type>] [<query-class>] [+<query-option>]
[-<dig-option>] [%comment]
- @server : 네임서버 주소 기본값은 /etc/resolv.conf 값
- domain : 질의 하고자 하는 도메인 ( . 을 사용 하면 root 도메인, -x 역도메인)
- query-type
a : network address
any : 모든 정보 커리 함
mx : mail exchanger
soa : zone 파일 등록 정보
hinfo : 호스트 정보
axfr : zone transfer
txt : text 형태
- query-class
in : Internet class domain
any : all/any class information
- +query-option
+tree : 계층 구조를 알 수 있음.
+multiline : zone 파일 설정 그대로 보여 줌
+vc : TCP로 쿼리를 함.
* 기타 man 도움말을 활용 하기 바람.
2) 응용 예
- root 네임서버 알아 내기
# dig @a.root-server.net. . ns
- 국내 kr 네임서버 알아 내기
# dig @a.root-server.net. kr. ns
- zone transfoer 되는지 확인하기
# dig @ns.test.co.kr test.co.kr axfr
- bind 버전 알아 내기
# dig @kns.kornet.net txt chaos version.bind
- 역도메인 알아 내기
# dig -x 192.168.0.1
- soa 정보 보기
# dig test.co.kr soa +multiline
- 네임 서버로 부터 응답을 찾아 오는 과정 보기
# dig test.co.kr +tree
5. dnstop 유틸리티 사용
# dnstop -s fxp0 --> 여기서 fxp0 는 NIC장치명 (리눅스에서는 eth0)
1 new queries, 94 total queries Tue Jun 7 14:54:40 2005
SLD count %
-------------------- --------- ------
co.kr 78 83.0
floweris.com 5 5.3
daejeonflower.com 2 2.1
tongdaemun-flower.co 2 2.1
thru-the.net 2 2.1
hyoksung.com 1 1.1
hanmin.net 1 1.1
ultradns.org 1 1.1
ultradns.net 1 1.1
gunchi.org 1 1.1
6. zone 파일 오류 찾기
- bind를 디버깅 모드로 실행
# named -d 1 &
named.run 파일에 관련 디버깅 메시지가 기록됨
이 파일을 분석하면 대부분의 문법 오류 등을 찾을 수 있음.
작성 : 마그마(필명) putter@naver.com