DNS 콘텐츠 차단

이 글은 Ad Blocker Dev Summit 2021에서 AdGuard의 CTO이자 공동 설립자인 안드레이 메시커브의 연설을 기반으로 합니다. DNS 콘텐츠 차단에 대해 알아보시려면 동영상을 보거나 해당 글을 읽어 보세요.

요즘 TV, 휴대폰, 스마트 자동차 등 모든 기기가 인터넷에 연결되어 있습니다. 광고와 광고 차단기가 인터넷 상에 어디든지 표시되기 때문에 브라우저 기본 광고 차단기가 충분하지 않습니다. 광고 차단기는 안전한 인터넷을 사용하기 위해 ‘작은 창’을 제공하지만 이 ‘창’을 더 크게 만들고 싶다면 어떻게 할 수 있을까요?

DNS 필터링이 정답입니다!

DNS 수준 차단이란 무엇인가요?

아시다시피 DNS(Domain name system)는 도메인 이름 시스템을 의미하며 DNS의 목적은 웹 사이트 이름을 IP 주소로 변환하는 것 입니다. DNS는 인터넷의 ‘주소록’이라고 생각하시면 됩니다. 사용자가 웹 사이트를 방문할 때마다 브라우저가 웹 사이트의 IP 주소를 알아보기 위해 DNS 서버(보통 인터넷 서비스 공급자로부터 제공됨)로 DNS 쿼리를 보냅니다. 그리고 일반 DNS 리졸버는 단순히 요청된 도메인의 IP 주소를 반환합니다.

기기는 항상 일부 DNS 서버를 사용하여 앱이 탐색하려는 도메인 이름의 IP 주소 획득

DNS 수준에서 차단을 제공하는 DNS 서버가 존재합니다. 보통은 DNS 수준 차단은 DNS 싱크홀링 기술을 사용하여 제공합니다. 이 기술은 차단된 도메인에 라우팅할 수 없는 주소를 나눠주는 것으로 구성되어 있습니다. 사용자의 기기가 광고나 추적기와 같은 ‘나쁜’ 요청을 보내면 DNS 서버는 차단된 도메인의 0.0.0.0 IP 주소로 응답합니다. 그러므로 앱이 해당 주소로 연결할 수 없고 연결도 또한 차단됩니다.

DNS 서버를 사용하여 도메인 접근을 차단하는 예시

다른 방법은 NXDOMAIN 또는 REFUSED로 응답하는 것입니다. NXDOMAIN은 도메인이 존재하지 않음을 의미하며, REFUSED는 서버가 쿼리 처리를 거부했음을 의미합니다. NXDOMAIN과 REFUSED의 차이를 느낄 수 없겠지만 몇 옛날 기기는 REFUSED를 잘못 해석하여 대체 DNS 서버를 사용하려고 할 수 있습니다.

DNS 조상격인 HOSTS 파일

사실 DNS 수준 차단은 제일 오래된 광고 차단 방법입니다. 이 것이 어떻게 가능했을까요?

옛날에 인터넷이 ‘ARPANET’이라고 불렸을 때 컴퓨터의 IP 주소를 ASCII 기반 식별자에 매핑하는 명명 시스템이 고안되었습니다. 소수의 컴퓨터만 ARPANET에 연결되어 있어 미국 국방부 네트워크 정보센터가 컴퓨터 주소와 호스트이름이 포함된 HOST.TXT이라는 마스터 목록을 직접 관리했었습니다. 시스템 관리자는 주기적으로 hosts.txt를 다운로드했고, ARPANET 컴퓨터의 이름을 알고 있다면 HOSTS 파일에서 IP 주소를 조회할 수 있었습니다.

ARPANET HOSTS.TXT 파일 모습

그러나 호스트가 많아졌기 때문에 NIC 컴퓨터에 너무 큰 부하가 가해지고 있었습니다. 모든 사람들이 ARPANET에 컴퓨터를 연결하고 싶었지만 NIC가 HOSTS.TXT를 업데이트할 때까지 기다려야 했습니다. 그래서1987년에 폴 모카페트리스는 도메인 이름 시스템을 만들었습니다. 하지만 HOSTS 파일은 잊혀지지 않았으며, 인터넷에서 첫 광고가 표시될 때 HOSTS.TXT가 광고 차단 목록으로 사용될 수 있다는 사실을 알게 되었습니다.

그 후에 첫 차단 목록들이 생성되고 공유되었습니다. Peter Lowe의 차단 목록, Steven Black의 차단 목록 또는 Dan Pollock의 호스트와 같은 차단 목록들은 20년 이상 유지되며 개발되고 있습니다.

Peter Lowe의 차단 목록의 부분

Firefox용 Adblock 첫 버전이 출시될 때 많은 사람들이 이 프로그램을 왜 개발되었는지 이해 못 했습니다. 왜냐하면 사람들은 HOSTS 파일을 사용하며 이미 만족했기 때문입니다.

과거 포럼 내용, 2003년

그러나 HOSTS 파일의 단점이 있습니다.

  • 업데이트 방법. HOSTS 파일 업데이트를 사용자에게 편하게 제공할 수 있는 방법이 없습니다. 특별 소프트웨어가 필요하거나 가끔씩 인내심 가지고 수동으로 업데이트해야 합니다.

  • HOSTS 파일 크기. 원래 HOSTS 파일 신텍스는 그런 식으로 사용될 생각이 없었으며, 모든 도메인을 작성해야 하기 때문에 HOSTS 파일이 아주 커집니다.
    보시다시피 아래 Energized Unified 차단 목록에는 700,000개 이상의 도메인이 포함되어 있으며 크기는 약 21MB입니다. 매일 수백만 명의 사용자들에게 21MB 파일을 배포하는 것은 쉽지 않습니다.

Energized Unified 차단 목록

광고를 차단하기 위해 HOSTS 파일 대신 공용 DNS 서버가 개발되었습니다. HOSTS 파일을 수동으로 업데이트하지 안해도 됬으며 DNS 서버를 사용하기 위해 기기만 설정하면 되었습니다. 첫 공용 DNS 서버는 Alternate DNS 서버라는 이름으로 2015년에 처음 등장하였으며, 한명에 의해 관리되었습니다. 이후 2016년에 저희 또한 AdGuard DNS 서비스를 시작하였습니다.

DNS 차단기 새 삶

DNS는 활발하게 개발되지는 않았지만 지난 몇 년 동안 DNS-over-TLS, DNS-over-HTTPS 및 DNS-over-QUIC 프로토콜이 널리 사용되면서 콘텐츠 차단에 상당히 큰 영향을 미쳤습니다.

DNS 암호화의 인기가 높아지기 전에는 일반 사용자에게는 차단기 옵션은 너무 복잡했습니다.

  • HOST 파일을 사용하면서 어떻게든 업데이트를 받아야 했습니다.

  • 모바일에서 사용할 수 없는 것과 데스크탑의 모든 네트워크 어댑터를 설정하는 것을 받아들이고 보통 DNS 서버를 사용해야 했습니다.

  • VPN 또는 로컬 VPN 소프트웨어를 사용했습니다.

DNS 암호화가 보편화되자 일부 기술적인 문제들이 사라졌습니다. 이제는 DNS 서버를 설정하기가 쉬어졌고 모든 네트워크에서 사용할 수 있습니다. 기기설정을 깊이 이해해야 했지만, 과거만큼은 아니였습니다. 그리고 DNS 암호화는 Android 9+(DoT, DoH 출시 예정), iOS 14+ 및 macOS 15+(DoT, DoH), Windows 11(지원이 다소 제한됨)에서 기본적으로 지원됩니다. 덕분에 DNS 차단이 더 널리 사용되었습니다.

또한 DNS 암호화의 개발로 공용 DNS 서버가 사용자에게 사용자 지정 옵션을 제공할 수 있게 되었습니다. 간단하게 말하면 이제 사용자들이 차단할 것과 차단하지 않을 것을 선택할 수 있습니다. 이전에는 DNS 서버의 도메인 이름을 기반으로 한 사용자 지정 규칙을 적용하는 것은 사용자의 IP 주소를 연결해야만 가능했습니다.

콘텐츠 차단으로 DNS 사용의 장단점

콘텐츠 차단으로 DNS 사용의 장단점을 살펴봅시다.

장점

  • 추가 소프트웨어 설치 필요 없음

  • 브라우저나 OS 공급업체에 의존하지 않음

  • 성능에 영향을 미치지 않음

  • 공용 DNS 서버를 사용하면 전체 인터넷을 관리할 수 있어 차단 목록을 관리할 경우, 아주 유용합니다. 사용되지 않는 규칙을 삭제하거나 새로운 위협에 대해 빠르게 알 수 있으며 DNS는 브라우저 뿐만 아니라 모든 기기를 볼 수 있으므로 블라인드 스폿이 없습니다.

  • 중앙 집중식 솔루션은 일부 문제를 더 잘 해결함

예시로 CNAME 클로킹을 살펴봅시다. CNAME 클로킹은 추적기가 광고 차단기로부터 숨겨지는 방법입니다. 추적기들은 CNAME DNS 기록을 사용하여 자사 도메인으로 가장한 실제 타사 도메인 이름을 숨기고 있었습니다. AdGuard DNS로 해당 가장한 도메인을 찾고 공유할 수 있었고 이제 DNS를 이용하지 않는 콘텐츠 차단기도 이 도메인을 차단할 수 있습니다.

다른 예시는 추적기를 위장하기 위해 프록시를 사용하는 것입니다.CloudFlare 또는 CloudFront를 사용하여 원래 타사 도메인을 숨기는 서버리스 프록시를 설정할 수 있습니다. DNS로는 해당 프록시를 막을 수 없지만 감시는 할 수 있습니다.

단점

  • 자사 광고를 차단 불가능. 예를 들면, YouTube 동영상 광고는 합법적인 동영상과 동일한 도메인에서 호스팅되기 때문에 차단할 수 없습니다.

  • 보정 필터링 없음. DNS 차단으로 대부분 광고가 차단되지만 깨진 프레임과 광고 자리 표시자가 있는 웹 페이지가 있습니다.

  • 손상의 높은 가능성. 예를 들어 Google Analytics 차단으로 인해 일부 앱이나 웹 사이트가 손상될 수 있습니다.

  • 우회 가능. 앱은 다른 DNS 서버를 사용하도록 선택할 수 있습니다.

개선할 점

DNS 필터링에는 수정되거나 최소화 할 수 있는 단점들이 있습니다.

도메인이 DNS 수준에서 차단되면 예쁘지 않은 오류 페이지만 표시됩니다. 그리고 일시적으로 도메인 잠금을 해제할 수 있는 방법이 없습니다.

다행히도 사용자에게 HTTPS 인증서를 설치하도록 요구하는 것과 DNS 액세스 거부 오류 페이지를 만들 것을 제안하는 RFC 초안이 있습니다.

암호화된 DNS 감지 메커니즘

지금은 DNS 모든 기기에서 설정해야 하지만 라우터에 설정할 수 있다면 더 좋지 않을까요? 일부 새 라우터는 DNS 암호화를 지원하지만 많은 구형 라우터는 일반 DNS 서버만 허용합니다. 이 상황을 개선하기 위해 최선을 다하는 ‘Adaptive DNS Discovery’라는 작업 그룹이 있습니다.

중요한 RFC의 초안

  1. Discovery of Designated Resolvers(지정 리졸버 발견). 특수 DNS 기록을 통해 암호화된 DNS 서버를 감지할 수 있습니다. 일반 DNS 서버를 설정하고 OS에서 사용할 수 있는 암호화된 DNS 서버가 있는지 확인하는 특수 DNS 쿼리를 보냅니다.

  2. 두 번째 RFC 초안은 암호화된 DNS 서버를 위한 새로운 DHCP 옵션에 관한 것입니다. 이 옵션을 통해 라우터가 암호화된 DNS 설정을 해당 라우터에 연결된 컴퓨터에 작동할 수 있습니다.

앱 감지

어떤 앱이 DNS 쿼리를 보내는지 감지 기능을 개선해야 합니다. 그러나 도와 줄 수 있는 RFC의 초안이 없으므로 직접 해 볼 수 있습니다. 예를 들면, 널리 사용되는 앱을 위한 일종의 ‘DNS 지문’을 만들어 볼 수 있습니다.

어떤 앱이 DNS 쿼리를 보내는지 안다면 차단을 더 잘 구성할 수 있습니다.

  1. 예를 들면, 저희는 Facebook 추적을 차단하고 싶습니다. 하지만 전 세계적으로 Facebook 추적을 차단하면 모든 Facebook 앱이 중단되므로 Facebook이 아닌 앱에서만 그렇게 하려고 합니다.

  2. 다른 예시는 AppsFlyer(모바일 분석 시스템)를 차단하면 일부 인기 있는 앱이 중단되는 것입니다. 영향을 받는 앱에 대해서만 허용하고 그렇지 않다면 차단된 상태를 유지하는 것이 좋다고 생각합니다.

이러한 DNS 지문을 만들려면 널리 사용되는 앱의 네트워크 동작을 분석해야 하며 이를 수행할 솔루션을 개발 중입니다.

AdGuard DNS란?

더 나은 인터넷을 사용하려면 광고 차단기, VPN뿐만 아니라 DNS를 사용하는 것이 좋습니다. AdGuard DNS 기능을 자세히 살펴 볼까요?

AdGuard DNS는 개인정보를 보호하는 DNS 서비스입니다. DNS-over-HTTPS, DNS-over-TLS 및 DNS-over-QUIC와 같은 안정적인 암호화 프로토콜을 지원하며, 광고, 추적 및/또는 성인 도메인(선택 사항)에 대한 요청을 식별하고 빈 응답으로 응답할 수 있습니다. AdGuard에는 광고, 추적기 및 악성 사이트를 제공하는 또한 정기적으로 업데이트되는 도메인 이름 기반이 있습니다. 그리고 차단 목록에 사용자 지정 규칙을 추가할 수 있습니다.

AdGuard DNS에 대한 중요한 정보:

  • 14개 위치에 있는 여러 서버로 구성됩니다.
  • BGP(Border Gateway Protocol)을 통해 이러한 서버들이 동일한 IP 주소를 표시합니다.
  • 현재 로드는 초당 약 30만 개의 DNS 쿼리입니다.
  • AdGuard DNS는 Golang으로 작성되었습니다.
  • DNS 트래픽의 약 75%가 암호화됩니다. 이것이 다른 서버와 콘텐츠를 차단하는 DNS 서버의 차별화입니다. CloudFlare 또는 Quad9 통계를 보면 모든 쿼리 중 암호화된 DNS가 작은 부분에 불과하다는 것을 알 수 있습니다. AdGuard DNS를 사용하면 대부분 트래픽이 암호됩니다.

DNS 필터링 규칙 신텍스

AdGuard DNS 차단 목록이 특수 DNS 필터링 신텍스를 사용하여 구성됩니다. 저희는 HOSTS 파일 유형 차단 목록의 제한 사항에 만족하지 않으므로 AdGuard DNS에서 광고 차단기의 신텍스를 사용하였습니다. 그다음에는 DNS 관련 수정자로 점차 확장하였습니다.

DNS 필터링 규칙 (자세한 내용 Github에서 확인 가능)

차이점을 확인하기 위해 아래 사진을 봅시다. 왼쪽에는 기본적으로 사용하는 AdGuard DNS 필터에 대한 통계가 있습니다. 보시다시피 해당 필터가 짧아도 약 90만 개의 도메인을 차단합니다. 그리고 오른쪽에는 50만 개의 도메인이 있는 HOSTS 파일인 Energized Ultimate라는 차단 목록이 있습니다. 해당 차단 목록은 50만 개의 도메인만 차단합니다.

AdGuard DNS 데이터에 따른 통계

AdGuard DNS 서버 노드

각 AdGuard DNS 서버 노드는 여러 부분으로 구성됩니다. 프런트 엔드에는 DNS 필터링, 캐싱 등의 모든 논리를 구현하는 DNS 전달자(Golang으로 작성)가 있습니다.

백엔드에는 DNS 재귀를 제공하는 바인딩되지 않은 서버 인스턴스가 있습니다. 단일 서버 노드 로드는 노드 위치에 따라 5,000~40,000개의 응답입니다.

DNS 필터링 엔진 구현

DNS 필터링 엔진 구현은 오픈 소스이고 Github에서 확인할 수 있습니다. DNS 필터링 엔진 구현에는 2가지가 있으며, 첫 번째 urlfilter라는 구현이고 AdGuard DNS와 AdGuard Home에서 사용하는 Golang 라이브러리입니다. urlfilter는 고성능과 낮은 메모리 공간을 제공합니다.
두 번째 구현은 클라이언트 앱에서 사용하는 C++ 라이브러리인 AdGuard DnsLibs입니다. DNS 필터링뿐만 아니라 DNS 암호화 구현도 제공합니다.

AdGuard DNS로 광고 및 추적기로부터 자신을 보호하려면 이 설정 가이드를 따르십시오.

미래기술 개발 예측

브라우저 기반 콘텐츠 차단기는 일반 사용자에게 가장 인기가 있지만 필터 목록 관리자에게는 그렇지 않습니다. 브라우저 기반 차단기를 위한 차단 목록보다는 지원자들이 관리하는 호스트 파일 및 도메인 목록이 더 많습니다. 이것은 DNS 콘텐츠 차단 기술이 개발할 신호입니다.

filterlists.com에 따른 통계

새 라우터뿐만 아니라 Windows 11에서는 DNS 암호화가 지원되므로 사용자들이 더 쉽게 DNS를 설정할 수 있습니다.

DNS 콘텐츠 차단 우회는 증가하겠지만 여전히 미미할 것입니다. DNS 콘텐츠 차단 우회하는 것이 쉽지 않고, DNS 콘텐츠 차단이 브라우저 차단기처럼 널리 사용되기 전에 우회 비율은 높지 않을 것입니다.

DNS는 브라우저 기반 차단기를 대체하지 않지만 DNS 차단은 인터넷 사용자의 개인정보 및 보안을 보장하는 데 사용될 것입니다.

Nata Kiseleva AdGuard DNS
2021년 11월 24일
댓글은 Disqus에서 제공됩니다. 댓글을 다운로드하면 Disqus의 약관 및 정책에 동의하게됩니다
Nata Kiseleva 업계 뉴스
2021년 11월 17일
AdGuard: Zoom의 광고를 차단하여 서비스 사용 서포트
Zoom 회사는 코로나의 유행 때 큰 도움이 되었습니다. Zoom으로 인해 사람들이 원격 업무와 공부를 할 수 있지만 이제 이 회사는 광고를 표시하려고 결정하였습니다.
Nata Kiseleva 프로모션
2021년 11월 24일
블랙 프라이데이 2021: 일년 중 가장 큰 세일
추운 11월에 따뜻한 기분이 드는 것은 쉽지 않죠. 그래서 블랙 프라이데이 세일로 기분을 좋게 만들고 싶었습니다! 11월에는 AdGuard 세일을 포함해 좋은 일들이 많이 일어나길 바랍니다!
AdGuard 다운로드가 시작되었습니다 화살표가 가리키는 버튼을 클릭하여 설치를 시작하세요. "열기"를 선택한 다음 "확인"을 누른 후, 다운로드가 완료될 때까지 기다리세요. 창이 열려있다면, AdGuard를 "애플리케이션" 폴더에 드래그해주세요. AdGuard를 선택해주셔서 감사합니다! "열기"를 선택 후 "확인"을 클릭한 다음, 다운로드가 완료될 때까지 기다리세요. 열렸으면, "설치"를 눌러주세요. AdGuard를 선택해 주셔서 감사합니다! 모바일 기기용 AdGuard도 설치: