IT 그리고 정보보안/Knowledge base

DNS (Domain Name Service)

plummmm 2021. 4. 19. 07:06
반응형

DNS 란?

Domain Name System 혹은 Domain Name Service의 약자로

TCP/IP 네트워크 상의 도메인을 컴퓨터가 처리할 수 있는 숫자로 된 인터넷주소(IP)로 바꾸는 시스템인 

Domain Name System 을 일컫기도 하고, 이런 역할을 하는 Domain Name Service 를 일컫기도 한다

 

DNS 요청을 하면 DNS Server domain 주소를 보내어 응답을 받는 형식인데, 

DNS Server는 국가나 통신 관련 대기업에서 관리하고 있다.

 

먼저, Zone과 Domain의 차이를 알아보자.

 

 

위에 그림에서 보다시피,

도메인 네임 공간의 하위 트리를 domain 이라고 한다.

그리고 domain 하위에서 생성된 도메인 네임 공간을 zone이라고 한다.

또한 query를 전달해주고, 응답을 해석해주는 역할을 하는 resolver라는 게 있다.

 

DNS 변환 과정은 2가지로 나뉠 수 있다.

Iterated Query 와 Recursive Query (반복과 재귀)

 

먼저 Iterated Query 에 대해 알아보자. 반복적으로 질의한다는 뜻이다.

 

최초에 root 네임서버에 접근하여 물어보고 루트가 찾아주는 것이 아니라,

질의에 응답이 가능한 네임서버 목록으로 응답한다 (후에 설명)

"나는 잘 모르니 이 서버로 한번 물어봐라" 이런것.

 

다음은 Recursive Query 이다. 재귀적 질의.

이거는 최초에 루트 네임서버에 질의를 하면 이 친구가 재귀적인 방식으로 책임감 있게 찾아주고

결과를 리졸버에게 전달한다. 최초에 접근한 네임서버에게 변환의 책임을 미루는 것이다.

 

 

이렇게 할 때마다 변환 작업이 일어난다면 매우 비효율적일 것이다. 그래서 네임서버를 캐싱하도록 되어있다.

DNS는 네임서버에 대한 캐싱작업이 가능하다.

 

그리고 DNS는 영역을 생성하고 나면 리소스 레코드를 추가해야 한다. 리소스 레코드를 RR 이라고 한다.

RR의 포맷은 아래와 같다. 설명도.

 

 

그다음은 DNS 프로토콜의 구조를 한번 살펴보자.

 

DNS 메세지는 요청, 응답 메세지 형태가 모두 똑같다. 

먼저 위에 노란색 부분이 msg 헤더이다. 식별자와 플래그 등이 있는데, 

그냥 우리가 알던 다른 프로토콜들의 형식과 마찬가지다.

 

밑에 파란색에 있는 필드들은 옵션에 관한 내용이다. 다른건 그냥 넘어가도 좋은데,

맨 아래에 있는 additional information 은 알고 가야 한다.

 

여기에는 DNS 메세지의 부가적인 내용이 들어간다. 

이 부가적인 내용 때문에 DNS Cache Poisoning이 일어날 수 있다. (그건 따로 설명함.)

 

다음으로 DNS Zone transfer에 대해 알아보자.

이걸 하기전에 먼저 zone split을 알아야 하는데,

 

Zone Split 이란,

상위 DNS에서 관리하는 네트워크의 규모가 너무 커져서 관리가 힘들어짐에 따라

하위 Zone을 새로 파서 하위 DNS에게 관리토록 하는 것을 말한다.

이렇게 zone이 스플리팅 되어있는 상태에서 일어나는 작업이 zone transfer이다.

 

Zone Transfer란,

상위 DNS가 고장 났을 때, 보조 DNS가 상위서버에게서 정보를 받아 동작하는 것.

즉, 상위 DNS가 가진 모든 정보들 (호스트의 정보, OS 등의 부가정도) 복사 하는 것이다.

 

이놈은 엄청난 보안위협을 가져다 줄수가 있는데,

원래 이론상으로는 Master와 slave 사이에서만 zone 파일이 공유 되어야 하지만

실제로는 그렇지가 않다. 과도하게 정보 유출이 허용되어

보안상의 심각한 취약점이 될 수 있다.

 

또한 zone 파일 전송시 용량제한을 두지 않아 DOS 공격을 받을 가능성도 농후하다.

 

반응형