Always-Try(정보보안 및 일상)

[정보보안기사][실기] DNS (Domain Name System) 본문

정보보안 자격증 + ISMS-P

[정보보안기사][실기] DNS (Domain Name System)

Always-Try 2021. 9. 28. 20:00

Recursive DNS, Authoritative DNS

 

더보기

1. Recursive DNS

  • 관리하는 도메인 없이 사용자의 질의가 들어오면 사용자에게 응답을 주는 네임 서버
  • 정보가 없는 도메인에 대한 질의가 들어오면 Autoritative DNS에 Iterative Query(반복적 질의)를 통해 그 결과를 얻어서 사용자에게 응답해줌

2. Authoritative DNS

  • 관리하는 도메인을 가지고 있는 네임서버. 즉, 특정 도메인에 대한 정보를 관리하면서 해당 도메인에 대한 질의에만 응답을 해주는 네임서버

 



네임서버 관련 설정 파일

 

더보기

1. (Linux) /etc/resolv.conf

  • 시스템 기본 네임 서버 설정

2. (Linux) /etc/hosts

  • 도메인/호스트명과 IP 주소 매핑정보

3. (Linux) DNS 우선 순위

  • nscd(설치 된 경우에 한함) > /etc/hosts > /etc/resolvconf/resolv.conf.d > /etc/resolv.conf > 내부 DNS > 외부 DNS

4. (Windows) DNS 우선 순위

  • DNS 캐시 > hosts.ics > hosts > 내부 DNS > 외부 DNS 

 

 


DNS 패킷 유형 및 포트

 

더보기

1. UDP 53번 포트

  • 응답 데이터가 512 바이트 이하일 경우
  • 클라이언트가 UDP 53 포트로 DNS 서버에 질의 > DNS 서버는 응답 데이터가 512 바이트 이하면 UDP로 응답

2. TCP 53번 포트

  • 응답 데이터가 512 바이트 초과일 경우
  • 클라이언트가 UDP 53 포트로 DNS 서버에 질의 > DNS 서버는 응답 데이터가 512 바이트 초과면 클라이언트에게 TCP로 재요청하도록 응답 > 클라이언트는 TCP 53 포트로 재 질의 > DNS 서버는 TCP로 512 바이트 초과한 크기의 응답을 전달

 

 

 

DNS Cache, DNS Lookup, Dig 관련 명령어

 

더보기

1. ipconfig /displaydns

  • 로컬 DNS 캐시 정보 조회

2. ipconfig /flushdns

  • 로컬 DNS 캐시 정보 삭제

3. DNS Lookup 대표적 명령어

  • ANY (도메인에 대한 모든 레코드 질의. 주로 DNS 증폭 DRDoS 공격에 악용)
  • MX (MX 레코드 질의)
  • NS (NS 레코드 질의)
  • SOA (Zone 파일의 버전, 전송 주기 등 기본 속성 정보 질의)
  • TXT (도메인에 대한 텍스트 정보 질의, SPF 레코드 정보도 포함됨. 주로 DNS 증폭 DRDoS 공격에 악용)
  • AXFR (존 버전에 상관없이 무조건 존 전송 요청)
  • IXFR (존 버전을 비교하여 상위 버전일 경우 존 전송 요청)
    •  

4. Dig 명령어

  • Linux, Unix 계열에서 nslookup을 대체하기 위해 탄생
  • 예시
    • dig @ns.naver.com www.naver.com +norecurse (athoritative 네임 서버에 반복 질의(Iterative Query)를 수행하여 정상 응답 여부 점검
    • dig @ns.naver.com www.naver.com +tcp (53/tcp 허용 여부 점검)
    • dig @ns.naver.com www.naver.com +trace (계층적 위임설정 상태 점검)

 

 

 

DNS Zone 파일

 

더보기

1. 개요

  • 존 데이터는 관리하는 도메인 영역(Zone)에 관한 DB 데이터이다.
  • 마스터 DNS에 있는 원본 존 데이터를 슬레이브가 동기화 하는 작업을 존 전송이라고 한다.

2. (named.conf 파일 내) 존 기본 설정

  • zone "naver.com" IN{
    type master;
    file "naver.com.db";
    };

3. (named.conf 파일 내) 존 기본 설정

  • options {
        directory "/var/named";
    };
    • directory는 존 파일이 위치한 경로를 나타냄. 즉, /var/named에 naver.com.db 파일이 존재

4. 존 파일 리소스 레코드 형식

  • host_name TTL class record_type data
    • hostname: 등록할 호스트명(ex. www, mx1, ns1)
    • TTL: TTL 지정. 생략 시 default(첫행의 $TTL) 적용
    • class: 클래스 정의 (모두 인터넷을 의미하는 IN으로 적용)
    • record_type: 레코드 유형(ex. A 레코드는 A, Mx 레코드는 MX, 존 기본 정보는 SOA, PTR)
      • PTR은 IP에 대한 도메인 정보를 가지고 있음
    • data: 레코드에 따른 데이터 설정(ex. 10 mx1.naver.com, 10.0.0.2)

 

 

 

DNS 서버 보안 

 

더보기

1. 재귀적 질의 제한

  • /etc/named.conf 파일로 제한된 대역만 recursive 응답 가능
    • acl internal {127.0.0.1; 192.168.10.0/24;};
      options {
          recursion no;
          #allow-recursion {none;}; // recursion no와 같음
          #allow-recursion {127.0.0.1; 192.168.10.0/24;};
          #allow-recursion {internal;};

2. 존 전송에 대한 제한

  • /etc/named.conf 파일로 제한 가능\
    • options {
          allow-transfer {none;}; // Slave DNS가 없으면 존 전송이 불가능하도록 이렇게 설정
          #allow-transfer {192.168.10.1;};  // Slave DNS 있을 경우 Slave 주소만 존 전송 허용

 

 

 

Comments