본문 바로가기

Layer7/WriteUp

DNS 정리

DNS란 ?

DNS란 도메인을 IP로 변환하거나 도메인으로 다시 변경해주는 것을 말한다.

 

DNS의 구성 요소는?

DNS는 아래와 같이 크게 3가지로 분류 할 수 있다.

  • Domain Name Space : DNS가 저장 관리하는 계층적 구조
  • Name Server : 권한 있는 DNS 서버
  • Resolver : 권한 없는 DNS 서버

DNS는 도메인 이름을 웹 브라우저에 입력하는 경우 해당 사이트의 올바른 IP 주소를 찾는 역할을 수행하기 위해 “이 도메인 이름은 이 IP 주소이다”라는 ‘텍스트’를 저장하는 DB가 필요하다.

 

Domain Name Space : 도메인 네임 스페이스라는 방법으로 도메인 이름 저장을 분산한다.

 

Name Server : 도메인 이름의 IP 주소를 찾는다.

 

Resolver : 클라이언트의 요청을 Name Server로 전달하고 Name Server가 반환한 내용을 클라이언트에 전달한다.

 

Domain Name Space

DNS는 전세계적인 거대한 분산 시스템으로 도메인 네임 스페이스는 이러한 DNS가 저장 관리하는 계층적 구조를 의미한다.

 

도메인 네임 스페이스는 최상위에 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 연속해서 이어진 계층 구조로 되어있다.

 

Name Server

 

문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP 주소로 변환시키기 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요한데 이러한 정보를 가지고 있는 서버를 네임 서버라고 한다.

 

전 세계에 13개의 Root DNS 서버가 구축되어 있으며 이 네임 서버를 복사하여 같은 기능을 담당하는 미러서버가 존재한다. 또한 네임 서버는 4가지로 분류할 수 있다.

 

1. Root DNS Server

DNS 서버의 최상위 네임서버로 DNS 해석부터 발생한 DNS 요청에 대하여 적절한 TLD 네임서버 정보를 반환한다.

 

2. Top Level Domain(TLD) DNS Server

도메인 등록 기관이 관리하는 서버로 Authoritative DNS 서버의 주소를 저장하고 안내하는 역할을 한다.

 

3. Second Level Domain(SLD) DNS Server

실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버다.

 

4. Anauthoritative DNS Server

권한이 없는 DNS 서버로 리졸버 서버가 있다.

 

DNS Resolver

 

DNS Resolver는 사용자의 컴퓨터나 네트워크에 위치한 DNS 클라이언트이다.

 

DNS Resolver는 사용자가 도메인 이름을 입력하면, 해당 도메인 이름을 IP 주소로 변환하기 위해 DNS 서버에 요청하여 질문하는 역할을 한다.

 

DNS Spoofing이란 ?

DNS 트래픽을 공격자가 가로채어 위조된 IP주소로 응답, 클라이언트가 위조된 IP로 접속하게끔 만드는 공격

 

먼저 DNS Spoofing에 앞서 ARP Spoofing이 진행되어야 한다.

 

  • 공격자는 로컬에 존재해야 하며 이로 인해 원격지의 DNS 서버보다 물리적으로 가까이 위치한다. 따라서 DNS 서버가 올바른 DNS 응답 패킷을 보내주기 전에 클라이언트에게 위조된 DNS response 패킷을 보낼 수 있다.
  • 클라이언트는 공격자가 보낸 DNS 응답 패킷을 올바른 패킷으로 인식하고,웹에 접속한다. 물리적으로 멀리 떨어져 있는 DNS 서버가 보낸 DNS 응답 패킷은 나중에 도착하기 때문에 버려진다.
DNS Spoofing 대응 방법

 

네임서버 소프트웨어의 버전을 최신 버전으로 유지한다.

 

사이트에 접속하면 DNS 쿼리( 사용자가 도메인 이름을 입력하고 IP 주소를 얻기 위해 DNS 서버에 보내는 요청 )를 보내지 않고 캐시에서 읽어들인 후 hosts 파일을 통해 도메인 이름에 대한 IP 주소를 해석한다.

'Layer7 > WriteUp' 카테고리의 다른 글

SYN Flood 정리  (0) 2024.07.30
ARP 정리  (0) 2024.07.26
나만의 vm C언어로 구현하기  (0) 2024.07.16
z3-solver 사용법 정리  (0) 2024.07.16
어셈블리어 strlen, strcpy, strcmp 세줄요약  (0) 2024.06.26