티스토리 뷰

 

DNS는 인터넷 하부망에서 중요한 시스템으로, 사용자들에게 중요한 서비스를 제공하며 이에 대한 공격으로 인한 피해를 받을 수도 있습니다.

DNS에 대해서 자세히 알아보고, 구축하고, DNS 공격에 대한 과정을 알아보겠습니다.

 

1. DNS 이해 - http://titanic1997.tistory.com/12?category=793107

2. CentOS에 DNS server 구축해보기 - http://titanic1997.tistory.com/13

3. 다중 DNS Server 구축해보기

4. Master-slave DNS server 구축 - DNS server 구축시 일어나는 오류들 정리

5. DNS 서버의 위협 요인

 

DNS 이해

 

DNS (Domain Name System)

숫자로 구성된 네트워크 주소인 IP 주소를 사람이 이해가기 쉬운 명칭인 도메인으로 매칭시켜주는 시스템입니다.

 

더 풀어서 설명해보자면, 인터넷에서 TCP/IP 프로토콜은 개체(호스트)를 구분하기 위한 식별자가 필요합니다.

이 때 사용되는 식별자는 IP주소입니다.

하지만 IP주소는 숫자로 구성되어 있는 주소입니다. 사람이 인식하고 사용하기에 어려움이 있기 때문에 주소 대신 이름(도메인)이 필요합니다.

 

이 때, 이름을 주소를 바꿔주고 주소를 이름으로 바꿔주는 시스템이 필요하고, 그 역할을 하는 것이 DNS입니다.

 

더 쉽게 이해하기 위해 사람들이 DNS를 이용해 인터넷을 사용하는 과정을 예를 들어보겠습니다.

 

사장과 직원이 있다고 가정하겠습니다.

사장이 직원에게 창고에 A 상자를 가져오라고 했습니다.

그런데 직원이 창고에 가자, 상자는 세 개가 있었고 각각 1 2 3이라고 쓰여있었습니다.

 

그리고 창고에 보관된 물건 리스트가 정리된 장부에

1-A

2-B

3-C 라고 적혀있었습니다.

직원은 그 장부를 확인하고, 1이라고 적힌 상자를 가져가 사장에게 가져다줄 수 있습니다.

 

이 때, 사장은 인터넷을 이용하는 사용자이고

직원은 웹 브라우저, 장부는 DNS 서버이고, 상자는 웹 사이트입니다.

DNS는 인터넷을 사용하는 동안 항상 사용하는 서비스이기 때문에 왜 필요한지, 어떤 역할을 하는지 정확한 이해가 필요합니다.

 

다시 한 번 풀어서 설명해보면, 인터넷을 사용할 때 네이버를 이용하고 싶다면 주소에 www.naver.com 혹은, naver.com이라고 주소창에 치면 됩니다. 이 때 우리가 사용하는 www.naver.com을 IP주소로 바꿔주는 게 DNS가 하는 역할입니다.

 

DNS의 구조

DNS는 계층 구조입니다. 여기서 서울특별시 강남구 대치동을 예로 들어보겠습니다.

대치동은 강남구 소속입니다. 강남구는 서울특별시에 소속되어 있습니다.

DNS도 마찬가지로 DNS의 가장 상위 계층에 속하는 루트 도메인을 기준으로, 아래에 최상위 레벨 도메인, 2레벨 도메인을 두고 있는 식의 구조를 가집니다.

 

위에서 예를 들었던 www.naver.com을 이용해 DNS의 계층 구조를 표현해보겠습니다.

 

 

이를 도식화해보면 이와 같습니다.

 

DNS의 구조에 대해서 본격적으로 설명해보겠습니다.

DNS에서 가장 상위 개체는 .(Root)입니다.

2번째 계층은 국가나 조직체의 특성을 나타냅니다.

 

항목 

내용 

항목 

내용 

com 

영리기관 

mil 

군사기관 

net 

네트워크 기관 

edu 

교육기관 

org 

비영리 기관 

int 

국제기관 

gov 

정부 기관 

kr(korea) 

국가  

 

두 번째 계층이 국가를 나타내는 경우에는 세 번째 계층이 조직의 특성을 나타냅니다. 예를 들어서 co는 company를 나타내는 것입니다.

co.kr로 끝나는 도메인을 예로 들어보면 한국의 회사 도메인이라는 뜻입니다.

 

그리고 도메인 주소에 가장 먼저 오는 것은 www나 ftp와 같은 서버의 이름입니다. 호스트 계층을 나타냅니다.

이렇게 www.naver.com처럼 완성된 이름을 FQDN이라고 부릅니다.

Fully Qualified Domain Name이라는 뜻입니다.

 

그렇다면 DNS는 왜 계층구조일까요?

DNS가 만약 중앙집중식이라면 어떨지 생각해봅시다. DNS가 중앙집중식이라면 요청이 한꺼번이 많이 들어왔을 때 트래픽이 집중되며, 중앙서버까지의 거리가 오래 걸릴 수도 있습니다.

또한 관리가 어렵습니다. 그래서 계층구조인 것입니다.

 

 

 

 

리눅스에서 DNS를 사용하기에 앞서 설정해야하는 게 있습니다.

클라이언트에서 사용할 DNS 서버를 직접 입력하거나 DHCP을 이용해서 자동으로 할당받는 것입니다.

 

리눅스에서는 /etc/resolv.conf라는 파일로 DNS 서버를 설정할 수 있습니다. 제 리눅스의 /etc/resolv.conf 파일을 열어 확인해보겠습니다.

 

DNS 서버가 설정되어 있는 것을 확인할 수 있습니다.

나중에 DNS 서버를 구축할 때 해당 파일을 이용해서 DNS 설정을 변경해야 합니다. 지금 설명하는 것은 DNS의 구조이므로 넘어가겠습니다.

 

DNS의 동작 원리

 

앞서 DNS는 숫자로 구성된 IP주소를 사람이 알기 쉬운 도메인으로 매칭시켜주는 시스템이라 설명했으며, 인터넷을 이용할 때 항상 사용되는 서비스라고 했습니다. 또한 DNS는 계층구조임을 설명했습니다.

 

이번에는 DNS가 어떤식으로 동작하는지에 대해서 설명하겠습니다.

 

클라이언트가 DNS서버에 도메인을 보내고 DNS서버로부터 IP주소를 응답받는 상황을 생각해봅시다.

이 때 클라이언트의 시스템에 설정된 DNS 서버를 로컬 DNS 서버라고 합니다.

 

DNS의 동작원리를 깊게 설명하기 위해 로컬 DNS 서버에는 아무런 정보도 저장되어 있지 않다고 가정하겠습니다. 또한 DNS가 사용되기 전에 이용했던 hosts 파일에도 아무것도 저장되어 있지 않다고 가정하겠습니다.

 

로컬 DNS서버로부터 www.naver.com의 주소를 요청하는 과정을 설명하겠습니다.

 

1. hosts 파일에 요청하는 정보가 없으므로 로컬 DNS 서버에 질의합니다.

2. 로컬 DNS 서버에 아무런 정보도 저장되어 있지 않다고 가정했습니다. 따라서 로컬 DNS 서버에는 해당하는 정보가 없습니다. 그래서 루트 DNS 서버에 질의합니다.

3. 루트 DNS 서버에 www.naver.com에 대한 정보가 없으면 루트 DNS 서버는 로컬 DNS 서버에 com을 관리하는 2계층 DNS 서버에 관한 정보를 보내줍니다.

4. 로컬 DNS 서버는 2계층 com DNS 서버에 www.naver.com에 관한 정보를 묻습니다.

5. 하지만 2계층 com DNS 서버에는 www.naver.com에 관한 정보가 없습니다. com DNS 서버는 자신의 하부에 있는 3계층 naver.com에 관한 정보를 로컬 DNS 서버에 보내줍니다.

6. 로컬 DNS 서버는 마지막으로 3계층 naver.com에 다시 질의합니다.

7. naver.com의 DNS 서버는 www.naver.com에 대한 IP 주소를 얻습니다.

8. 그리고 해당 IP 주소를 클라이언트에 전달합니다.

 

 

질의 과정을 이 그림과 함께 화살표로 그려보며 정리해보면 DNS 서버의 동작 과정이 더 쉽게 이해됩니다.

 

DNS 서버 종류

DNS 서버에는 종류가 있습니다.

루트 DNS 서버, 책임 DNS 서버, 캐시 DNS 서버로 나뉩니다.

 

루트 DNS 서버에는 최상위 레벨 도메인과 모든 국가의 상위 레벨 도메인에 관한 정보가 저장되어 있습니다.

 

책임 DNS 서버는 호스트 명을 IP로 매핑하기 위한 DNS 레코드를 갖는 서버를 의미합니다. 위에 있는 그림의 com과 naver.com이 이 DNS 서버에 속합니다.

일부 서비스 제공자는 책임 DNS 서버에 레코드를 저장하여야 하고, 이 때 비용을 지불할 수도 있습니다.

 

마지막으로 Cache DNS 서버는 DNS 계층 구조에 포함되어 있지 않습니다. IP 매핑을 위한 도메인 정보를 가지고 있지 않고, 호스트의 질의에 대한 응답만을 제공합니다. 로컬 DNS 서버를 의미하는 것이며, 실질적으로 책임 DNS 서버보다 많이 쓰입니다.

 

또한 질의하는 과정에서 DNS 서버가 DNS 요청에 대한 응답을 받을 때 그 응답을 로컬 메모리에 저장합니다. DNS 서버는 일정 시간이 지나면 저장된 정보를 삭제하며, 로컬 DNS 서버는 루트 서버의 IP 주소를 저장할 수 있습니다. 이러한 저장은, 로컬 DNS 서버가 루트 서버를 우회하여 DNS 동작 과정을 효율적으로 운영할 수 있게 합니다.

 

DNS 위협 요인

DNS는 인터넷을 이용할 때 항상 사용되므로 인터넷 하부망에서 가장 중요한 시스템입니다.

웹 접속이나 이메일과 같은 응용은 DNS의 동작에 크게 의존합니다.

 

이 때 만약 DNS 서버의 내용이 공격자에게 나쁜 의도로 노출된다면 어떨까요?

 

공격자는 사용자가 접속하는 사이트의 정보를 살피기 위해 DNS 서버의 응답을 가로챌 수 있습니다. 이런 공격을 방지하기 위해서는 DNS 서버의 질의와 응답의 비밀이 보장되어야 합니다.

 

만약 공격자가 DNS 서버의 응답을 중간에 가로채서 이를 변경하거나 완전히 다른 정보를 전달하면, 공격자는 사용자를 자신이 원하는 도메인이나 사이트로 접속시킬 수 있습니다.

 

이 때 공격자가 질의한 도메인에 대한 잘못된 응답을 보내 사용자가 의도하지 않은 사이트로 접속하도록 하는 것을 DNS 스푸핑이라고 합니다.

 

DNS 서버와 Master - slave 서버를 구축해본 뒤에 이에 대해 자세히 살펴봅시다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함