DNS 역질의 구조 설계에 대해서 정리한다.
DNS Server 구축
1. bind
#> yum install -y bind.i686
#> yum install -y bind-utils.i686
2. 캐시 서버 설정
- /etc/named.conf
3. bind 실행
* DNS 캐시서버가 제대로 작동하지는지 nslookup이나 ping을 보내서 확인해볼수 있다.
* listen-on port 53, allow-query를 any;로 설정 했는데 안된다면
dns 보안 설정 문제로 dnssec-enable, dnssec-validation 설정을 no로 해주면 될수도 있다.
* 설정한 DNS 서버에 도메인 정보가 없다면 기본적으로 캐시서버로 동작하게 된다.
( netstat -anu 명령어를 통해서 확인해보면 DNS 포트인 53번(UDP) 포트가 열려있는걸 확인 해볼수 있다 )
( 클라이언트인 윈도우에서 DNS 서버 주소를 설정해준다음에 ping을 이용해서
DNS 서비스가 제대로 동작하는지 확인해본다 )
( nslookup을 이용한 확인으로 DNS 서버가 정상적으로 작동한다면 위 그림처럼 동작한다 )
( 리눅스에서는 nslookup 명령어를 사용할때 서버를 직접 지정해줘야 된다 )
- DNS 서버 직접 구축 해보기( 구축 정보 )
도메인을 관리할 네임서버를 구축
- 해당 도메인에 대한 권한을 가진다.
도메인 이름: black.net
* 도메인 이름을 만들때 FQDN을 만족시켜줘야된다. ( .com , .net , .co.kr , ... )\
( 계층 구조에서 표현 가능한 이름 )
권한이 있는 서버: 192.168.6.112
권한이 있는 서버의 이름: ns.black.net
서브 도메인: www.black.net -> 192.168.6.110
mail.black.net -> 192.168.6.123
ftp.black.net -> 192.168.6.225
ns.black.net -> 192.168.6.112
1) 설정
- /etc/named.rfc1912.zones
* 해당 파일안에 구축할 서버 내용을 맨밑에 추가 시켜준다.
* 설정후에 named-checkconf라는 명령어를 통해서 설정 파일에 오류를 검사해보고 에러가 없다면
아무것도 뜨지 않는다.
( 예) named-checkconf /etc/named.rfc1912.zones )
( /etc/named-rfg1912.zones 설정파일에 해당 내용을 설정 해주고 file은 dns 홈디렉터리인
/var/named 안에 만들어서 설정해준다 )
- /var/named/black.net.zone 설정 내용
$TTL 30 ; 유효시간 ( 기본은 초단위 )
black.net. IN SOA ns.black.net. root.black.net. (
20170721 ; serial
30 ; refresh
30 ; retry
30 ; expire
10 ) ; minimum
black.net. IN A 192.168.6.112
black.net. IN NS ns.black.org.
ns.black.net. IN A 192.168.6.112
www.black.net. IN A 192.168.6.110
mail.black.net. IN A 192.168.6.123
ftp.black.net. IN A 192.168.6.225
* @은 black.net.의 줄임표현
( 뒤에 .을 빼면 서브도메인으로 인식해 뒤에 메인 도메인이 한번 더 붙는다 )
클래스: 인터넷 클래스(IN)
* 예전에는 다른 클래스도 있었지만 이제는 인터넷 클래스바께 없기 때문에 생략 가능하다.
레코드: 질의 하려는 도메인의 종류
A( Address ): 해당 도메인의 주소(ipv4)
AAAA: ipv6
MX( Mail eXchanger ): 메일서버
NS( Name Server ): 네임서버
CNAME( Canonical name ): 별칭
...
* root.black.net.은 관리자의 메일주소를 나타내는 필드
( 해당 설정파일에서 @은 다른 의미로 쓰이기 때문에 root@black.net. 대신에 .을 써준다 )
* named-checkzone black.net /var/named/black.net.zone
( zone 설정파일 에러 체크는 named-checkzone <확인할 도메인> <파일위치>이고 OK가 뜨면 에러 없음 )
( named-checkzone 명령어를 이용해 해당 도메인에 대한 설정파일 확인을 해주고 이상이 없으면 서비스를 재시작해준다 )
( nslookup을 통해서 설정 해둔 내용대로 DNS 서버가 동작하는지를 확인해보고 정상적으로
동작하지 않는다면 설정파일이나 네트워크 자체를 확인 해보는 방식으로 문제를 해결한다 )
- DNS 서버 역질의 구조 설계
* 실제 DNS 서버 개념을 이해하기 위해서 크기만 축소시켜서 구축 해봤기 때문에 구조나 동작 원리는 똑같다.
security.org(ROOT DNS): 192.168.6.200
main.security.org: 192.168.6.112
red.main.security.org: 192.168.6.123
- win.red.main.security.org
- linux.red.main.security.org
black.main.security.org: 192.168.6.112
- win.black.main.security.org
- linux.black.main.security.org
blue.main.security.org: 192.168.6.110
- win.blue.main.security.org
- linux.blue.main.security.org
- main.security.org
$TTL 30 ;
main.security.org. IN SOA ns.main.security.org. root.main.security.org. (
20170721 ; serial
30 ; refresh
30 ; retry
30 ; expire
10 ) ; minimum
main.security.org. IN A 192.168.6.112
main.security.org. IN NS ns.main.security.org.
ns.main.security.org. IN A 192.168.6.112
red.main.security.org. IN NS ns.red.main.security.org.
ns.red.main.security.org. IN A 192.168.6.123
black.main.security.org. IN NS ns.black.main.security.org.
ns.black.main.security.org. IN A 192.168.6.112
blue.main.security.org. IN NS ns.blue.main.security.org.
ns.blue.main.security.org. IN A 192.168.6.110
- black.main.security.org
black.main.security.org. IN SOA ns.black.main.security.org. root.black.main.security.org. (
20170721 ; serial
30 ; refresh
30 ; retry
30 ; expire
10 ) ; minimum
black.main.security.org. IN A 192.168.6.112
black.main.security.org. IN NS ns.black.main.security.org.
ns.black.main.security.org. IN A 192.168.6.112
win.black.main.security.org. IN A 192.168.6.12
linux.black.main.security.org. IN A 192.168.6.112
'프로그래밍 > NETWORK HACKING' 카테고리의 다른 글
[네트워크 보안] DNS Spoofing 개념 및 DNS Spoofer를.py 이용한 실습 (0) | 2017.07.27 |
---|---|
[네트워크 보안] DNS header 구조 / 파이썬을 이용해 DNS 요청 보내서 응답 받아오기 (0) | 2017.07.26 |
[네트워크 보안] DHCP 동작 및 역이용 스니핑 / DNS 개념 (0) | 2017.07.20 |
[네트워크 보안] DHCP / wireshark 사용법 (0) | 2017.07.20 |
[네트워크 보안] TCP 통신 직접 구현 해보기 / tcping.py (0) | 2017.07.19 |
댓글