Information Security

27 DNS 서버 구축 본문

Linux

27 DNS 서버 구축

leeeeye321 2017. 10. 23. 16:36

Local Name Server

-로컬 네임 서버가 전세계의 모든 컴퓨터의 도메인 이름을 관리할 수 없기 때문에

자신의 DB에 존재하는 도메인이라면 바로 알려주지만 그렇지 않으면 최상위 도메인에 위치한 root 네임서버에게 질의한다.

 

로컬 네임서버 동작 순서

웹 브라우저에서 www.nate.com 도메인을 주소 창에 입력

-> hosts 파일에 없으면

-> resolv.conf에서 로컬 네임서버 IP 확인 후 질의 -> 로컬 네임서버 DB에 정보 있으면 알려주고 없으면

-> 최상위 root 네임서버에게 질의 -> root 네임서버는 TLD 도메인 정보만 가지므로 COM 네임서버를 알려줌 

-> COM 네임서버에게 질의 -> nate.com 네임서버 알려줌 -> nate.com 네임서버에게 질의 -> www IP 알려줌 

 

/etc/host.conf 파일

공백    

/etc/hosts 우선 확인

order hosts, bind    

/etc/hosts 우선 확인 후 관련 정보 없다면 bind 확인(/etc/resolv.conf에 명시된 DNS 서버에 질의)

order bind, hosts   

/etc/resolv.conf  확인 후 hosts 파일 확인

multi on    

/etc/hosts 파일에서 하나의 IP에 여러 개의 URL을 사용할 수 있다는 의미

 


 

DNS 서버 구축

 

BIND 패키지 설치 후 생성되는 파일 (DNS 설정 파일)

패키지 설치

/etc/named.conf

DNS 서버 주 설정 파일

 

/etc/named.rfc1912.zones

해당 DNS 서버가 관리하는 영역(Zone) 정보를 가지고 있는 파일

 

/var/named

영역에 대한 정보가 저장되어 있는 데이터베이스 파일이 위치하는 디렉터리

 

named

named 데몬(DNS 서버 프로그램)이 동작할 때 사용되는 계정

named 데몬의 취약점을 이용하여 서버에 접속할 때 사용되는 계정

 

chroot(change root)

named 계정의 권한이 최상위(/) 디렉터리까지 자유롭게 이동할 수 있는 권한을 가지기 때문에 보안에 취약하다.

chroot는 DNS 서버의 보안을 높이기 위한 방식으로 /var/named/chroot 디렉터리를 최상위 루트로 인식하여 상대경로로 파일을 참조한다.

 

최상위 디렉터리로 사용하기 위한 경로 설정

 

※ DNS 주 설정 파일 /etc/named.conf은

chroot 기능에 의해 ROOTDIR에 설정된 디렉터리를 최상위로 인식하여 실제위치가

/var/named/chroot/etc/named.conf이다.

최상위 디렉터리 하위에 위치한 /etc 디렉터리로 이동

 

경로 확인

 

파일 목록 확인

 

-named 데몬 시작

-파일 목록 확인 -> named 데몬을 시작하면 /etc 디렉터리에 위치한 네임서버의 원본 설정 파일이 해당 디렉터리에 복사된다.

 

named 데몬 중지

 

1. DNS서버 시작

named 데몬 다시 시작 후 상태 확인

 

재부팅 후에도 자동으로 데몬 활성화 -> 설정 확인

 

-named 데몬은 TCP와 UDP 53번이 열려 있는 상태 -> 서비스 준비가 되어 있음

-/etc/services의 정보 확인

 

2. ROOT 네임 서버 정보 갱신

wget 명령어로 root 네임서버 정보 파일을 공식 사이트로부터 다운로드

 

현재 경로에 다운로드한 named.root 파일을 /var/named 디렉터리로 이동 후 확인

 

다운로드한 파일을 named.ca 파일로 덮어씌운다.

 

파일 내용에서 최근 업데이트 날짜와 루트서버의 정보를 확인한다.

 

3. 도메인 설정

DNS 서버 주 설정 파일 수정

 

listen-on port 53 { any; };    DNS 서버(53번 포트)에 접속을 허용할 IP 주소(any : 모든 IP 주소)

listen-on-v6 port 53 { none; };    IPv6 버전 사용 안함
directory       "/var/named";    DB 파일을 확인한 경로

allow-query     { any; };     질의를 허용할 IP 주소
recursion yes;    해당 DNS 서버가 관리하는 도메인이 아닌 경우 ROOT 네임서버에 질의해 결과를 전달해주기 위한 옵션

 

4. 도메인 추가

도메인 추가를 위하여 사용되는 기본 파일 수정

 

zone "[도메인]" IN {    자신의 도메인 생성

type [타입];    

master    해당 존에 대한 정보를 제공하는 마스터 서버

slave    해당 존에 대한 정보를 마스터 서버로부터 받아 제공하는 슬레이브 네임서버

file "[도메인DB파일명]";    

allow-update { none; };    원격에서의 해당 도메인에 대한 정보 변경 기능 해제

};

 

정방향 조회(www.yyy.com) 과정

A컴퓨터(로컬 네임서버 주소는 100.100.100.110)가 www.yyy.com 도메인 사용하여 접속 시도

-> /etc/resolv.conf 확인, Server-A named 데몬 동작

-> A 컴퓨터가 요청한 도메인이 자신이 관리하는 도메인인지 확인 (/etc/named.rfc1912.zones 파일의 zone 설정 확인)

-> www.yyy.com이 관리하는 도메인인 것을 확인했다면 DB 파일 내용을 확인한다.

    (file "yyy.zone"; 파일을 이용하여 사용자에게 요청한 정보 제공)

-> A 컴퓨터가 요청한 yyy.com 도메인이 관리하는 www에 해당하는 IP 주소를 A컴퓨터에 전달한다.

 

역방향 조회(100.100.100.in-addr.arpa) 과정

in-addr.arpa    역주소를 의미하는 키워드

A컴퓨터가 100.100.100.110 IP 주소를 가진 컴퓨터가 사용하는 도메인 주소 요청

-> 요청한 도메인이 자신이 관리하는 도메인인지 확인 (/etc/named.rfc1912.zones 파일의 zone 설정 확인)

-> 자신이 관리하는 도메인인 것을 확인했다면 DB 파일 내용 확인 (file "yyy.rev.zone"; -> 110 : www.yyy.com)

-DNS 사용자가 요청한 IP 주소를 도메인으로 해석한다.

100.100.100.110 -> 사람은 IP 주소를 오른쪽에서 왼쪽으로 해석

110.100.100.100 -> named 데몬은 도메인 주소를 왼쪽에서 오른쪽으로 해석

 

5. 데이터베이스 파일 생성

DB 파일을 생성하기 위해 디렉터리 변경

 

기본 양식 파일(named.empty)을 생성할 DB 파일로 복사

 

정방향 조회용 DB 파일    yyy.zone

 

역방향 조회용 DB 파일    yyy.rev.zone

 

리소스 레코드 종류

 

6. 데이터베이스 파일 확인

named 데몬이 접근 가능하도록 존 파일의 소유권을 변경한다.

 

설정을 모두 마친 후 네임서버를 재시작하여 변경 사항 적용

 

설정 파일 문법 검사

-> 이상 없을 경우 출력되는 메시지 없음

 

존 파일 검사 후 이상 없는 경우 OK 출력

 

드디어 끝

이제 동작 확인

기본 네임서버를 Server-A로 설정(100.100.100.110)

 

 

생성한 자신의 도메인으로 정방향 조회

www.yyy.com

ftp.yyy.com

web.yyy.com

ns.yyy.com

 -> 100.100.100.110

 

IP 주소로 역방향 조회

100.100.100.110 -> 도메인 주소

성공!!

'Linux' 카테고리의 다른 글

29-1 TELNET (+ NC)  (0) 2017.10.26
28 DNS Master & Slave 서버 구축  (0) 2017.10.25
26-2 DNS(Domain Name Server / System)  (0) 2017.10.20
26-1 NTP(Network Time Protocol)  (0) 2017.10.20
25 DHCP(Dynamic Host Configuration Protocol)  (0) 2017.10.20