본문 바로가기
network

DNS가 뭐에요? ^_____^

by j.sanghyuk 2023. 8. 28.

DNS와 Whois서버에 대해서 알아보도록 하겠습니다!

 

DNS

DNS(Domain Name System)는 숫자로 구성된 IP주소를 사람이 이해하기 쉬운 명칭인 도메인 이름(google.com, naver.com 등등..)으로 매칭해주는 시스템입니다.

DNS의 사용 예시를 설명해보도록 하겠습니다. 

클라이언트가 웹 주소에 google.com 을 입력합니다. 그리고 DNS 서버에게 google.com 이라는 요청을 보내고 DNS 서버는 google.com 에 매칭되어있는 IP 주소를 제공하게 됩니다. 그리고 그 IP 주소로 웹 서버에 요청을 보냅니다. 그러면 웹 서버는 그 IP 주소에 맞는 서버를 클라이언트에게 응답합니다.

 

DNS는 계층 구조를 사용합니다. 계층 구조는 도메인 이름을 특정하기 위해 사용합니다. 

예를 들어 홍길동이라는 사람이 있다고 가정합시다. '홍길동' 이라는 사람은 한명이 아닐 것입니다. 그러나 지구라는 행성에, 대한민국이라는 나라에, 광주소프트웨어마이스터고등학교에 재학중인 1학년 홍길동은 유일할 것입니다.

 

DNS도 이와 유사합니다. DNS의 가장 상위개체는 '.' (루트)입니다. 이는 도메인 이름에 직접적으로 보이지 않으며, 위의 예로는 지구라는 행성에 해당합니다. 두 번째 개체로는 국가와 조직체의 특성이 있습니다. 아래 표와 같이 com, net, org, kr, jp 등이 있습니다.

세 번째 개체는 조직의 특성입니다. 예를 들면 co(company), ac(academy) 등이 있습니다. 해당하지 않는 경우에는 고유한 조직 이름이 오며 보통 자신의 DNS 서버에서 지정해놓은 www, ftp와 같은 특정 서버의 이름이 옵니다. 'www.wishfree.co.kr' 처럼 완성된 이름을 FQDN(Full Qualified Domain Name)이라고 합니다. 

 

DNS의 동작방식

DNS의 동작 방식에 대해서 알아보도록 하겠습니다.

  1. 웹 브라우저에게 www.naver.com을 입력하면 먼저 PC에 저장된 Local DNS에게 'www.naver.com'이라는 hostname에 대한 IP 주소를 요청합니다. (Local DNS란 IP를 할당해주는 통신사의 기지국 DNS서버입니다.)

    Local DNS에는 'www.naver.com'의 IP 주소가 있을 수도 있고 없을 수도 있습니다. 여기에서는 Local DNS에 'www.naver.com'의 주소가 없다고 가정하겠습니다.
    (만일 예전에 네이버에 접속했었다면, Local DNS에 접속정보가 캐싱되어있어, 바로 PC에 IP주소를 주고 끝납니다.)

  2. 이제 Local DNS는 'www.naver.com'의 IP주소를 찾아내기 위해 다른 DNS 서버들과 통신을 시작합니다. 먼저 Root DNS 서버에게 'www.naver.com'의 IP 주소를 요청합니다.
    (Root DNS는 인터넷의 도메인 네임 시스템 루트 존으로서, 절대 존엄 서버로, TLD DNS 서버 IP들을 저장해두고 안내하는 역할을 합니다.)

  3. Root DNS 서버는 'www.naver.com' 의 IP 주소를 찾을 수 없어 Local DNS 서버에게 'www.naver.com'의 IP 주소를 찾을 수 없다고 다른 서버에게 물어보라고 응답을 합니다.

  4. 이제 Local DNS 서버는 com 도메인을 관리하는 TLD DNS 서버 (Top Level Domain, 최상위 도메인 서버)에 다시 'www.naver.com'에 대한 IP 주소를 요청합니다.
    (TLD DNS 서버는 도메인 등록 기관에서 관리하는 서버로, 도메인 네임의 가장 마지막 부분을 말합니다. 예를 들어 .com 이나 .co.kr 같은 도메인을 관리하고 부여하는 서버입니다.)

  5. .com 도메인을 관리하는 DNS 서버에도 해당 정보가 없으면, Local DNS 서버에게 다른 DNS 서버에게 물어보라고 응답을 합니다.

  6. 이제 Local DNS 서버는 naver.com DNS 서버(Authoritative DNS 서버)에게 다시 'www.naver.com'의 IP 주소를 요청합니다.
    (Authoritative DNS 서버는 실제 개인 도메인과 IP 주소의 관계가 기록, 저장, 변경되는 서버입니다. 그래서 권한의 의미인 Authoritative가 붙습니다.)

  7. naver.com DNS 서버에는 'www.naver.com'의 IP 주소가 있습니다. 그래서 Local DNS 서버에게 'www.naver.com'에 대한 IP 주소는 222.122.195.6 이라는 응답을 합니다.

  8. 이를 수신한 Local DNS는 www.naver.com 의 IP 주소를 캐싱을 하고 이후 다른 요청이 있을 시 응답할 수 있도록 IP 주소를 단말(PC)에 전달해줍니다.
    (이렇게 Local DNS 서버가 여러 DNS 서버에 차례로(Root DNS-> TLD DNS -> Authoritative DNS) 요청하여 그 답을 찾는 과정을 재귀적 쿼리 (Recursive Query)라고 부릅니다.)

Whois 서버

Whois는 도메인 이름이나 IP 주소의 레지스트리가 관리하는 등록과 할당 정보를 인터넷에 공개하여 이용자가 참고할 수 있도록 해주는 서비스입니다. ICANN에서는 Whois를 "도메인이나 IP 주소의 관리 책임자는 누구인가를 질문하는 시스템" 으로 정의하였습니다.

Whois는 도메인을 확인하고 도메인과 관련된 사람과 인터넷의 자원을 찾아보기 위한 프로토콜로서 만들어졌습니다.

Whois는 전세계적으로 모든 국가에 특정한 2문자로 된 국가코드가 부여됩니다. (예를 들어 한국 = kr)

Whois에서는 상당히 많은 정보를 얻을 수 있는데, 다음과 같습니다.

  • 도메인 등록 및 관리 기관 정보
  • 도메인 이름과 관련된 인터넷 자원 정보
  • 목표 사이트의 네트워크 주소와 IP 주소
  • 등록자, 관리자, 기술 관리자의 이름, 연락처, 이메일 계정
  • 레코드의 생성 시기와 갱신 시기
  • 주 DNS 서버와 보조 DNS 서버
  • IP 주소의 할당 지역 위치

Whois 서버를 이용해 정보 획득하기 (실습)

Whois 서버를 이용하면 특정 URL의 소유자와 관리자 등의 정보를 얻을 수 있습니다.

 

우선 Whois 서버의 데이터베이스를 검색하기 위해 www.arin.net  을 확인해 보겠습니다. http://Whois.arin.net/ui/advanced.jsp 에서 Whois 서버를 검색할 수 있습니다. 입력 화면에서 Query에 입력하고 싶은 사이트 이름을 입력하고, Customer 항목 체크 후, Name을 체크하고 Submit 버튼을 누릅니다.

 

Whois 서버에서 구글 사이트에 대한 여러 네트워크와 서버를 확인할 수 있습니다. 맨 윗줄의 링크인 C00976518 을 클릭하면 선택한 서버에 대한 여러 정보를 확인할 수 있습니다.

사이트 이름 뿐만 아니라 검색 구문으로도 검색할 수 있습니다. 예를 들어, 이름이 john 인 사람이 등록한 사이트를 알아보려면 첫번째 화면에서 POC(Point Of Contact)항목과 Name 항목을 체크하고, Query에 john이라고 입력해 검색합니다. 그러면 john이라는 이름으로 등록된 Whois 서버의 정보를 볼 수 있습니다.

HO

Hosts 파일을 이용한 정보 수집 (실습)

Hosts 파일 이란?

Hosts 파일은 호스트 이름에 대응하는 IP 주소가 저장되어 있어서 DNS에서 주소 정보를 제공받지 않고도 서버의 위치를 찾게 해주는 파일입니다.

윈도우 계열의 시스템은 (윈도우 설치 디렉토리)\windows\system32\drivers\etc\hosts, 리눅스 는 /etc/hosts에 위치합니다. 아래 사진은 호스트 파일의 내용입니다. # 이 붙은 문장은 주석 처리된 문장입니다.

다음은 호스트 파일의 기본 구조입니다. IP 주소와 도메인 이름 or 임의의 명칭은 탭 또는 스페이스로 구분할 수 있습니다. 도메인 이름 or 임의의 명칭은 아래 사진처럼 반드시 하나일 필요는 없습니다.

실습

hosts 파일을 이용해 특정 서버에 접근하거나 접근을 막는 방법을 알아보도록 하겠습니다.

 

우선 실습을 위해 특정 도메인의 IP 주소를 알아야 합니다. ping 명령어로 등록할 도메인의 IP 주소를 확인합니다.

이제 호스트 파일에 확인한 도메인을 등록해보도록 하겠습니다. 보통은 '142.250.207.110 www.google.com'  과 같이 등록하지만, 이 경우 DNS와 값이 똑같아 hosts 파일 동작을 확인할 수 없기 때문에 아래 사진처럼 abcd를 추가로 입력하겠습니다.

이제 abcd로 ping을 실행할 수 있습니다. www.google.com  에 ping을 보냈을 때처럼 같은 IP 주소로 ping이 보내지는 것을 확인할 수 있습니다. 웹 브라우저에 http://www.google.com  대신 http://abcd 를 입력해도 정상적으로 접속됩니다.

hosts 파일은 악의적으로 사용할 수도 있습니다. hosts 파일에 잘못된 주소를 입력해두어 사용자를 엉뚱한 사이트로 유도하는 피싱과 같은 공격을 수행할 수도 있고, 해당 사이트의 접속을 차단할 수도 있습니다. www.google.com  의 잘못된 주소를 hosts 파일에 등록한 후 접속을 시도하면 www.google.com  에 접속이 되지 않습니다.

끝!!!!!!!!!!!
이 블로그는 "네트워크 해킹과 보안(4판)" 을 참고하였습니다.