도메인 네임 시스템

도메인 네임 시스템(Domain Name System)은 알파벳으로 된 도메인을 숫자로 된 IP 주소로 바꿔주는 시스템이다. 약칭은 DNS. 이를 운영하는 서버가 DNS 서버이며, 우리가 인터넷을 편리하게 이용할 수 있게 해주는 주요 시스템 중 하나이다.

1 용어[편집]

  • 질의
    • 정방향 질의 : 도메인을 물어보면 인터넷 프로토콜 주소(IP 주소)를 답하는 질의. 대부분의 DNS 용도는 이것이다.
    • 역방향 질의 : IP 주소를 물어보면 도메인을 답하는 질의. 일반인은 쓸 일이 없다.
    • 재귀쿼리 : 클라이언트↔DNS서버 간 진행되는 질의. 1.1.1.1, 8.8.8.8이나 ISP에서 제공하는 DNS 서버가 이런 역할을 한다.
    • 반복쿼리 : DNS서버 간 진행되는 질의. 재귀쿼리에서 값을 반환할 수 없는 경우 루트 서버부터 차근차근 단계를 내려가며 반복적으로 물어본다.
  • 레코드 종류
    • SOA : 도메인의 소유 정보를 기재하는 레코드
    • NS : 도메인 네임서버의 A레코드를 가리키는 레코드
    • A 또는 AAAA : 도메인과 IPv4/v6를 매칭해놓은 레코드
    • CNAME : 같은 도메인 안에서 다른 레코드를 가리키는 레코드
    • MX : 메일 서버의 A레코드를 가리키는 레코드
    • PTR : 역방향 질의용 레코드

2 원리[편집]


DNS의 원리는 다음과 같다:

  1. 위키러가 웹 브라우저 주소창에 librewiki.net을 입력한다.
  2. 브라우저는 컴퓨터의 DNS 캐시를 참조하여 방문이력이 남아 있는 경우 바로 그 주소로 간다.
  3. 캐시에 주소가 없다면 네트워크 설정을 참고하여 ISP의 DNS 서버에 물어본다.
  4. ISP DNS 서버가 librewiki.net의 IP 정보를 받아 브라우저에게 알려준다.

여기까지는 재귀 쿼리이고, 3번에서 ISP DNS 서버에 정보가 없는 경우 아래와 같이 진행된다.

  1. ISP DNS 서버에 librewiki.net의 IP 정보가 없다.
  2. 루트(.) 서버에 가서 .net DNS 서버의 정보를 물어본다.
  3. .net DNS 서버에 가서 librewiki.net DNS 서버의 정보를 물어본다.
  4. librewiki.net DNS 서버에 가서 웹 서버의 IP 정보를 물어본다.
  5. ISP DNS 서버가 librewiki.net의 웹 서버 IP를 획득했다.

위 과정을 반복 쿼리라고 한다.

DNS는 FQDN에 의거한 계층적 구조로 루트 서버부터 TLD 서버(.kr, .net 등), SLD 서버(.co.kr, librewiki.net 등), 개별 도메인 서버(sec.co.kr 등)를 거쳐 최종 정보를 획득하게 되어 있다. 여기서 모든 클라이언트가 매번 루트 서버부터 단계를 밟아 내려가면 반환 속도가 느릴 뿐더러 루트 서버의 부하가 과중하므로 클라이언트의 질의만 전문적으로 담당하는 재귀쿼리용 DNS 서버를 두고 있다.

DNS의 전 과정은 기본적으로 평문(비암호화) 상태에서 이뤄진다. 때문에 warning.or.kr 같은 검열에 취약한데, 이를 해결하기 위해 DNS를 암호화하는 기술이 등장했다. “DNS over HTTPS”와 “DNS over TLS”는 TLS의 기술을 사용하여 DNS 서버간 통신을 하는 것으로, 서드파티 프로그램이나 모질라 파이어폭스 같은 웹 브라우저에서 사용할 수 있다. 꼭 검열에만 취약한 건 아니고 피싱 등의 공격에도 취약하니 조심하도록 하자.

3 이야깃거리[편집]

  • 주요 공격목표
    현대 인터넷은 평문 도메인을 기반으로 작동하는 만큼 DNS 서버의 마비는 사실상 인터넷 자체의 마비로 이어진다. 대표적인 예가 2003년 1월 25일 슬래머 웜 대란으로, 대한민국 내의 모든 DNS 서버가 DDoS 공격에 무너지면서 DNS기반의 인터넷 사이트 이용이 모두 정지되었다.[1] 2014년 11월 29일에는 SK 브로드밴드 DNS 서버가 알 수 없는 이유로 마비되어 SKBB 회선이 불통되기도 했다.
    또한 주 서비스 서버를 공격하지 않아도 DNS 서버를 공격하여 트래픽을 우회시키면 주 서비스 서버를 해킹한 것과 유사한 효과가 난다. 일례로 2017년 2월 아시아나항공 DNS 서버가 변조돼 몇시간 동안 flyasiana.com 도메인이 외국 사이트로 연결되었다.[2]
  • 검열의 수단
    어지간한 통신은 TLS로 암호화되어 돌아다니는 상황에도 DNS 요청은 암호화가 늦고 있다. 웹서버와 접촉해야 암호화를 시작할 수 있기 때문에 웹서버로 가는 길을 묻는 DNS 질의는 암호화될 수 없는 것이다. 그렇기 때문에 도중에 쉽게 열어볼 수 있고 내용을 변조해두면 웹사이트 접속도 차단할 수 있다. warning.or.kr이 처음엔 DNS 검열 방식을 사용했는 데, DNS서버를 바꾸면 된다는 헛점으로 인해 URL 필터링으로 바뀌었다. 하지만 2010년대 들어 암호화 통신을 하는 불법 사이트가 성행해 URL 필터링으로 걸러낼 수 없게 되자 2018년부터 DNS 검열로 회귀했으며 해외에 위치하는 DNS 서버를 이용해도 통신 도중 값을 변조해 무력화한다.

4 각주

  1. IP를 직접 입력하는 방식으로 동작하는 배틀넷 등은 정상 작동함
  2. 아시아나항공 홈페이지 해킹 당시 DNS,정체불명 서버로 변경..보안상 취약점 존재 추정, 아주경제, 2017.2.21