DNS 조회란 무엇입니까?
도메인 이름 시스템 조회(줄여서 DNS)는 누군가가 검색 창에 URL을 입력한 후 페이지가 로드되는 사이에 일어나는 일입니다. 기술적으로 말하면 URL(예:www.google.com)을 IP 주소로 변환하는 프로세스입니다.
IP 주소는 집 주소와 유사합니다. 주소를 사용하여 메일을 보내는 것처럼 컴퓨터는 IP 주소를 사용하여 특정 위치로 데이터를 보냅니다. IP 주소는 기억하기 어렵기 때문에(긴 숫자 문자열임) 컴퓨터는 DNS를 사용하여 IP 주소와 URL(기억하기 훨씬 쉬운) 간에 변환합니다. 인터넷에 연결된 모든 장치에는 IP 주소가 있습니다.
DNS는 어떻게 작동합니까?
인터넷의 크기를 감안할 때 컴퓨터는 메모리에 모든 IP 주소를 저장할 수 없습니다. 대신 브라우저에 www.google.com을 입력하면 컴퓨터가 웹사이트의 IP 주소를 찾도록 지시합니다.
먼저 컴퓨터는 캐시라고 하는 로컬 메모리를 확인합니다. 이것은 컴퓨터가 가장 최근에 방문한 사이트의 IP 주소를 저장하는 곳이므로 검색할 필요 없이 더 빨리 로드할 수 있습니다. 그러나 최근에 방문한 사이트가 몇 개 없기 때문에 컴퓨터가 IP 주소를 찾지 못할 가능성이 있습니다.
1단계 (단계는 위의 다이어그램 번호와 일치): 다음으로 컴퓨터는 ISP의 로컬 재귀 네임서버에 요청합니다. ISP는 Time Warner Cable, Spectrum, Verizon 등과 같은 인터넷 서비스 제공업체입니다. 컴?”).
모든 네임서버는 IP 주소(알고 있는 경우)로 응답하거나 모른다고 응답하고 요청 서버에 다른 서버를 요청하도록 지시하여 이 질문에 답할 수 있습니다. 재귀적 네임서버는 질문에 대한 답을 모르기 때문에 다릅니다. 단순히 쿼리를 다시 지정하는 대신 답변을 찾는 작업을 수행합니다. 모든 네임서버가 재귀적이지는 않습니다.
2단계: 재귀적 네임서버는 먼저 캐시를 확인합니다. IP 주소가 없으면 루트 네임서버에 요청합니다(루트 네임서버는 IP 주소를 알지 못하지만 요청을 읽고 재귀적 네임서버에게 다음에 어디로 가야 하는지 알릴 수 있음). 모든 재귀 네임서버에는 13개의 루트 네임서버 IP 주소가 미리 구성되어 있습니다. 재귀적 네임서버는 하나를 선택하고 동일한 질문을 합니다("www.google.com의 IP 주소는 무엇입니까?").
3단계: 루트 네임서버는 최상위 도메인(요청의 끝), 이 경우 .com, (www.google.com)을 읽고 재귀 네임서버에게 GTLD(Global Top Level Domain Servers)에 요청하도록 지시합니다. GTLD는 기본적으로 .com, .net., .edu 등의 각 도메인 유형에 대한 참조 목록입니다. 웹사이트의 IP 주소는 모르지만 어떤 네임서버에 해당 정보가 있는지 알고 있습니다.
4단계: 재귀적 네임서버는 GTLD 네임서버에 www.google.com의 IP 주소를 요청합니다.
5단계: GTLD 네임서버는 오른쪽에서 왼쪽으로(이 경우 www.google.com의 'google') 요청의 다음 부분을 읽고 연락할 권한 있는 네임서버가 포함된 메시지를 다시 보냅니다. 신뢰할 수 있는 네임서버는 도메인을 담당하는 네임서버입니다(정보의 주요 소스임).
6단계: 재귀적 이름 서버는 권한 있는 이름 서버에 동일한 질문을 합니다("www.google.com의 IP 주소는 무엇입니까?"). 기술적으로 서버는 주소 레코드(A)를 요구하는데, 이는 서버가 IP 주소를 참조하는 방법입니다.
7단계: 이 서버에 답이 있습니다! IP 주소를 재귀적 네임서버에 다시 전달하고 재귀적 네임서버에 응답이 신뢰할 수 있음을 알리도록 플래그가 지정됩니다. 재귀적 네임서버는 누군가가 곧 동일한 웹사이트에 액세스하려고 할 경우를 대비하여 캐시에 IP 주소를 저장합니다. 캐시의 각 항목에는 정보를 삭제하기 전에 정보를 보유할 기간을 서버에 알려주는 "수명"이라는 태그가 지정됩니다.
8단계: 재귀적 네임서버는 컴퓨터에 IP 주소가 무엇인지 알려줍니다(이번은 정보의 주요 소스가 아니기 때문에 신뢰할 수 있는 것으로 태그가 지정되지 않았습니다. 단지 정보를 전달하는 것뿐입니다.
9단계: 컴퓨터는 www.google.com에 대한 요청을 방금 수신한 IP 주소로 보냅니다.
10단계: 이 주소의 웹 서버가 Google 홈페이지를 반환하고 페이지가 로드됩니다.
이 전체 프로세스는 완료하는 데 몇 밀리초 밖에 걸리지 않으며 매일 수조 번 발생합니다.
DNS는 최종 사용자에게 어떤 영향을 미칩니까?
DNS는 인터넷 기능에 필수적이므로 해커의 주요 표적입니다. DNS의 근본 문제는 오늘날의 기술에서 우리가 경험하는 대부분의 보안 문제와 동일합니다. 인터넷과 오늘날 우리가 사용하는 기술의 대부분은 소규모 연구원을 위해 설계되었으며 시간이 지남에 따라 전 세계가 사용하는 시스템으로 확장되었습니다. DNS(및 HTTP, 우리가 사용하는 대부분의 프로토콜)는 보안을 염두에 두고 설계되지 않았습니다. 이제 다양한 보안 문제에 대한 수정 사항을 추가해야 했습니다. 불행히도 결국 보안을 강화하는 것은 개발에 포함된 보안만큼 효과적이지 않습니다.
이것이 DNS에 대해 제기하는 한 가지 문제는 응답이 수신될 때 이름 서버의 신뢰성에 대한 검증이 없다는 것입니다. 따라서 해커는 컴퓨터의 DNS 쿼리에 악의적인 응답을 보내고 컴퓨터가 DNS 이름 서버의 실제 응답이라고 생각하도록 속일 수 있습니다. 즉, 컴퓨터가 "www.chase.com의 IP 주소는 무엇입니까?"라고 물으면 해커는 해커의 악성 사이트에 대한 IP 주소로 (DNS 서버가 응답하기 전에) 응답합니다 . 그런 다음 사이트가 로드될 때 체이스닷컴 웹사이트처럼 보이지만 실제로는 해커에 의해 제어됩니다.
이는 피싱과 매우 유사합니다. 사용자가 속아서 잘못된 링크를 클릭하도록 유도하는 것이 아니라 방문하려는 웹사이트가 DNS 조회를 통해 잘못된 사이트로 라우팅된다는 점(훨씬 더 위험하므로 훨씬 더 위험합니다. 이러한 유형의 공격을 방지하기 위해). 그러면 사용자는 사이트가 실제 사이트를 스푸핑하고 있음을 알아차릴 수 있도록 주의해야 합니다(링크가 제대로 표시되지 않거나 철자가 잘못되었거나 로고 사본이 잘못되었을 수 있음). 그러나 이것은 매우 어려울 수 있으며 사용자가 상대적으로 기술적으로 잘 알고 있어야 합니다.
2016년에는 DNS 공격으로 미국 동부 해안 대부분의 인터넷이 거의 하루 종일 중단되었습니다. 이 경우 중단은 DDoS 공격으로 인해 발생했습니다. DDoS 공격은 인터넷을 통해 수천 대의 컴퓨터가 동시에 시스템을 공격하는 분산 서비스 거부 공격입니다. 일반적으로 이들은 소유자 모르게 악성코드에 감염된 시스템으로, 한 명의 해커 또는 해커 그룹이 모든 시스템을 제어하고 있습니다. 이러한 기계를 함께 사용할 때 '봇넷'이라고 합니다.
봇넷은 피해자 서버에 DNS 요청을 보내고 전송된 요청의 양이 시스템을 압도하여 서버가 수신하는 합법적인 트래픽을 처리할 수 없게 만듭니다. 따라서 해커가 DNS 서버를 공격하고 컴퓨터가 IP 주소를 요청하는 동안 서버는 응답할 수 없습니다. 따라서 컴퓨터는 공격이 중지될 때까지 서버가 제어하는(또는 권한이 있는) 사이트에 액세스할 수 없습니다.
이 공격은 초과 수요를 처리하기 위해 서버를 과도하게 프로비저닝하거나 DNS 방화벽을 사용하여 완화할 수 있습니다.
DNS가 제시하는 많은 문제를 해결하는 보다 광범위한 방법은 DNSSEC입니다. DNSSEC는 공개 키 암호화를 기반으로 하는 디지털 서명으로 인증을 강화합니다. 기본적으로 요청된 데이터의 소유자는 위의 상황이 발생하지 않도록 하기 위해 디지털 서명을 합니다. 이것은 데이터 출처 인증(데이터는 실제로 리졸버가 생각하는 출처에서 옴)과 데이터 무결성 보호(데이터는 전송 중에 수정되지 않음)를 제공합니다.
불행히도 DNS를 수정하기 위해 DNSSEC는 광범위한 배포가 필요합니다. 재귀적 해석기의 네트워크 운영자와 신뢰할 수 있는 서버의 도메인 이름 소유자가 구체적으로 활성화해야 합니다. 이것은 아직 발생하지 않았지만 더 많은 사람들이 DNS가 제시하는 문제를 인식하고 변경을 옹호함에 따라 그렇게 되기를 바랍니다.