참고: https://www.networkworld.com/article/3268449/what-is-dns-and-how-does-it-work.html
Domain Name System (DNS)는 사람들이 기억하기 힘든 IP 주소를 웹 사이트 이름으로 매치시켜주는 인터넷의 기본 구성요소 중 하나입니다. 웹 사이트에 접속하기 위해 브라우저에 IP 주소를 입력하는 것 역시 가능하지만 대부분의 사람들은 도메인 이름이라고 부르는 기억하기 쉬운 단어로 구성된 인터넷 주소를 원합니다.
1970년대와 80년대 초반에는 인터넷에 연결된 모든 컴퓨터의 목록을 유지해 도메인 네임과 IP 주소 매칭 작업을 Stanford Research Institute의 Elizabeth Feinler 한 사람이 맡아서 했습니다. 하지만 인터넷의 급속한 성장을 생각하면 이는 분명 지속 불가능한 것이었고, 1983년에 Paul Mockapetris가 도메인 네임에서 IP 주소로의 변환을 처리하는 자동화 시스템인 DNS를 개발했습니다.
현재 3.4억여 개의 도메인이 등록되어 있고 이 모든 도메인 네임을 하나의 디렉토리에 보관하는 것은 힘든 일입니다. 인터넷 자체와 마찬가지로 도메인 네임 서버가 전세계에 배포되어 있으며 서로 정기적인 통신을 하여 디렉토리의 업데이트와 중복제거를 하고있습니다.
DNS를 분산 시스템으로 만든 또 다른 이유는 성능을 향상시키기 위함입니다. 예를 들어 구글의 IP를 얻기위해 전 세계에서 동시에 들어오는 모든 요청이 단일 서버에서 처리되고 있다면 어떨까요? 이 문제를 해결하기 위해 DNS 정보는 여러 서버가 공유하고 있습니다.
또한 단일 도메인은 두 개 이상의 IP 주소를 가질 수 있습니다. 예를 들면 내가 www.google.com에 접속할 때 노트북이나 스마트폰이 연결하는 물리적 서버는 다른 나라의 다른 사람이 동일한 주소를 입력했더라도 그 사람이 접속하는 서버와 다릅니다. 하지만 DNS는 내가 세계 어디에 있든 원하는 사이트로 접속하게 해줍니다.
DNS의 작동 방법
컴퓨터는 도메인 네임과 연결된 IP 주소를 찾을 때 먼저 DNS 클라이언트(웹 브라우저)를 통해 DNS 쿼리를 수행합니다. DNS 쿼리는 recursive resolver라고도 하는 recursive DNS 서버로 갑니다. recursive resolver는 일반적으로 AT&T나 Verizon(또는 sk, kt)과 같은 Internet Service Provider (ISP) 업체가 관리하며, 이는 어떤 DNS 서버가 사이트 이름을 IP 주소로 바꿔줄 수 있는지 알고있습니다. 실질적으로 도메인 네임을 IP 주소로 바꿔주는 서버를 authoritative name server라고 합니다.
DNS는 계층 구조로 구성됩니다. IP 주소에 대한 초기 DNS 쿼리는 recursive resolver에서 수행합니다. 이는 먼저 최상위 도메인(.com, .net, .org) 또는 국가 도메인에 대한 정보가 있는 루트 서버로 이동합니다. 루트 서버는 전 세계에 위치하므로 DNS 시스템은 이를 가장 가까운 서버로 라우팅 합니다.
요청이 올바른 루트 서버에 도달하면 이는 top-level domain 서버(TLD 네임 서버)로 이동합니다 TLD 네임 서버는 브라우저 검색창에 입력한 단어(google.com의 google)인 두 번째 수준 도메인에 대한 정보를 가지고 있습니다. 요청을 받은 도메인 네임 서버는 IP 주소를 조회하고 DNS 클라이언트가 적절한 웹 사이트를 방문할 수 있도록 응답을 전송해 줍니다. 이러한 일련의 과정은 단 몇 밀리초 밖에 걸리지 않습니다.
DNS cache 란?
일반적인 사용자는 하루에 여러번 구글을 방문할 때도 있습니다. 도메인 이름을 입력할 때 마다 컴퓨터가 DNS 네임 서버에 IP 주소를 쿼리하게 하는 대신 이 정보를 컴퓨터에 저장하면 매번 IP 주소를 얻기 위해 DNS 요청을 하지 않아도 됩니다.
클라이언트를 인터넷에 연결해주는 라우터 뿐만 아니라 ISP 서버에서도 추가적인 캐싱을 할 수도 있습니다. 이러한 여러 수준의 캐싱을 통해 실질적으로 DNS 네임 서버에 도달하는 쿼리 수가 크게 줄어들어 시스템의 속도와 효율성을 증가시킬 수 있습니다.
DNS의 IP 다루는 방법
인터넷에 연결하는 모든 장치는 트래픽이 올바르게 라우팅되도록 고유한 IP 주소를 가져야 합니다. DNS는 IPv4 또는 IPv6으로 알려진 시스템을 사용하여 인간이 이해하기 좋은 문자열 쿼리를 숫자로 변환합니다. IPv4에서 숫자는 10진수로 표시하는 32비트의 정수입니다.
ip 주소의 숫자는 전화번호의 국가 코드, 지역 코드 등과는 다르게 네트워크 구성 요소, 호스트 및 서브넷을 포함하는 섹션으로 나뉩니다. IP의 네트워크 부분은 해당 번호에 할당된 네트워크의 클래스 및 범주를 지정합니다. 호스트는 네트워크의 특정 시스템을 식별합니다. 서브넷 부분은 선택 사항이지만 로컬 네트워크의 다량의 서브넷 및 기타 파티션을 탐색하는 데 사용합니다.
인터넷의 IPv4 고갈에 대한 우려를 해결하기 위해 만든 IPv6는 128비트 크기의 숫자를 사용합니다. 이는 340조 개의 주소를 표현할 수 있습니다.
IP 주소는 누가 할당하는지?
1998년, 미국 정부는 IP 주소를 할당하는 일을 Internet Corporation for Assigned Numbers and Names(ICANN)에 넘겼습니다. 이 비영리 단체는 지금 까지 큰 문제 없이 IP 주소 할당을 해왔으며, ICANN은 새로운 최상위 도메인(예: .io)의 생성과 같은 정책을 개발하고 있습니다.
일반적으로 ICANN은 중립적이고 자문을 하는 역할을 맡고있습니다. 예를 들어, 오늘날 인터넷에서 도메인을 등록하고자 하는 사람은 누구나 분산되어 있는 ICANN 인증 등록기관에서 도메인을 등록할 수 있습니다. 일단 등록이 되면 새 도메인이 만들어지고 몇 분 만에 DNS 서버를 통해 전 세계에 알려질 것 입니다.
DNS는 안전한가?
사이버 범죄자는 거의 모든 시스템에서 악용할 수 있는 취약점을 알아내고 있고 DNS는 꽤 많은 공격 점유율을 차지하고 있습니다. 2021년 IDC가 북미, 유럽 및 아시아 태평양 지역의 1,100개 이상의 조직을 대상으로한 설문조사에 따르면 87%가 DNS 공격을 받은 것으로 나타났습니다.
각 공격에 대한 평균 피해액은 대부분의 지역에서 약 95만 달러, 북미 조직의 경우 약 100만 달러였습니다. 또한 이 보고서에는 모든 산업 분야의 조직이 작년 한 해 동안 평균 7.6건의 공격을 받았다고 언급되었습니다.
코로나관련 클라우드 전환 작업과 리소스에 대한 접근성을 높이기 위한 클라우드로의 이동이 공격자에게 새로운 표적을 제공했다고 밝혔습니다.
연구원들은 또한 민감한 고객 정보 도난이 2020년 16%였던 것에 비해 2021년 26%로, DNS를 통한 데이터 도난이 급격히 증가한 것으로 보고했습니다.
일반적인 DNS 공격 타입은 DNS amplification, DNS spoofing(cache poisoning), DNS tunneling, DNS hijacking(DNS re-direction) 입니다.
DNSSec 이란?
DNSSec은 ICANN이 DNS lookup과 관련된 다양한 레벨의 서버 간 통신을 보다 안전하게 만들기 위해 고안한 보안 프로토콜입니다. 이는 해커가 lookup을 하이재킹 가능토록 하는 DNS top-level, second-level, third-level 디렉토리 서버간의 통신 취약점을 보완해 줍니다.
이 하이재킹을 통해 공격자는 사용자를 악의적인 사이트로 안내하여 합법적인 사이트 조회 요청에 응답할 수 있습니다. 이러한 사이트는 사용자에게 맬웨어를 업로드하거나 피싱 공격을 수행할 수 있습니다.
DNSSec은 DNS 서버의 각 레벨에서 해당 요청에 디지털 서명을 하여 최종 사용자가 보낸 요청이 공격자에 의해 변경되지 않도록 합니다. 이렇게 하면 트러스트 체인이 생성되어 lookup의 각 레벨에서 요청의 무결성이 검증됩니다.
또한 DNSSec은 도메인 이름이 실제로 존재하는지 여부를 확인할 수 있으며, 존재하지 않을 경우 도메인 이름을 확인하려는 일반적인 사용자에게 사기성 도메인이 전달되는 것을 방지합니다.
DNS over HTTPS (DoH) 란?
DNSSec은 DNS 서버의 분산 네트워크 내에서 잠재적인 취약성을 해결하지만 DNS 시스템에 악성 코드를 주입하기 위해 여러 형태의 속임수를 사용하는 DNS 기반 사이버 공격을 막지는 못했습니다.
오랜 DNS의 역사에서 가장 큰 변화 중 하나로 Google, Mozilla 등은 HTTPS 프로토콜이 이미 대부분의 웹 트래픽을 보호하는 것과 같은 방식으로 DNS 요청을 암호화하는 IETF 표준인 DNS over HTTPS 또는 DoH로의 전환을 장려하고 있습니다.
그러나 DoH로의 전환에 논란이 없는 것은 아닙니다.
DoH는 DNS 요청을 암호화함으로써 기업 IT 부서가 직원의 웹 활동을 모니터링하는 것을 막을 수 있으며, 부모들은 자녀의 인터넷 사용에 대한 보호자 통제를 구현하지 못하게 될 수 있다고 불만을 제기했습니다.
DNS over HTTPS 기술의 적용이 아직은 느립니다. 클라이언트 측에서 보면 DoH는 최신 버전의 Google Chrome 및 Mozilla Firefox에서 제공되지만 최종 사용자가 기능을 끌 수도 있습니다. 직원이 사용하는 브라우저 및 브라우저 버전을 제어하려는 조직에서는 간단히 비활성화할 수 있습니다. ISP 측에서 보면 대부분의 주요 ISP 들이 아직 DoH를 활성화하지 않았습니다.
나의 DNS 서버 찾는 방법
일반적으로 사용하는 DNS 서버는 인터넷에 연결할 때 ISP에 의해 자동으로 설정됩니다.
어떤 서버가 기본 네임 서버인지 확인하려면 browserleaks.com과 같이 현재 네트워크 연결에 대한 정보를 제공해주는 웹 유틸리티가 있습니다.
ISP가 기본 DNS 서버를 설정해 주지만 사용자가 이 서버만을 사용해야할 필요는 없습니다. 예를 들어 ISP가 DNS 서버를 사용하여 존재하지 않는 주소에 대한 요청을 광고가 있는 페이지로 리디렉션하는 경우 사용자는 ISP의 DNS를 사용하지 않고 다른 DNS를 사용할 수도 있습니다.
또는 recursive resolver 역할을 할 공용 DNS 서버를 컴퓨터에서 지정할 수 있습니다. 가장 눈에 띄는 공용 DNS 서버 중 하나는 Google의 DNS 서버입니다. IP 주소는 8.8.8.8입니다.
관련 글
'cs' 카테고리의 다른 글
[알고리즘] 해시(hash) 알고리즘 이란? (3) | 2023.03.12 |
---|---|
[정보보안] JSON Web Token(JWT) 설명 (3) | 2023.03.02 |
[네트워크] HTTPS 설명 및 작동방법 (4) | 2023.02.01 |
[네트워크] SSL 인증서란? 정의 및 설명 (2) | 2022.12.14 |
[네트워크] HTTP - HyperText Transfer Protocol (0) | 2022.12.01 |
댓글