본문 바로가기

OpenDNS, SafeDNS 및 프라이빗 DNS 활성화 광고차단 설정방법 (스마트폰 유해사이트 인터넷 제한)

OpenDNS와 SafeDNS는 인터넷 보안과 웹 필터링 서비스를 제공하는 DNS(Domain Name System) 서비스입니다. 각각의 서비스는 사용자와 조직이 인터넷 사용을 안전하게 하고, 특정 웹사이트에 대한 접근을 제어하는 데 도움을 줍니다.

OpenDNS

  1. 배경 및 개요
    • OpenDNS는 Cisco에 의해 운영되며, DNS 기반의 웹 필터링 및 보안 서비스를 제공합니다.
    • 주로 가정용, 기업용, 교육용으로 제공되며, 사용자와 조직이 악성 사이트로부터 보호받을 수 있도록 합니다.
  2. 주요 기능
    • 웹 필터링: 카테고리별로 웹사이트를 차단할 수 있으며, 사용자 정의 필터링이 가능합니다.
    • 악성 사이트 차단: 피싱, 멀웨어, 봇넷 등 악성 사이트를 자동으로 차단합니다.
    • 통계 및 리포트: DNS 요청에 대한 통계와 리포트를 제공하여 사용자 활동을 모니터링할 수 있습니다.
    • 프리미엄 서비스: OpenDNS Umbrella라는 고급 보안 서비스를 통해 더 강력한 보안 기능을 제공합니다.
  3. 설정 방법
    • 네트워크 설정에서 DNS 서버 주소를 OpenDNS의 주소로 변경합니다.
      • 기본 DNS 서버: 208.67.222.222
      • 보조 DNS 서버: 208.67.220.220

SafeDNS

  1. 배경 및 개요
    • SafeDNS는 기업과 가정 사용자에게 안전한 인터넷 사용 환경을 제공하기 위해 설계된 DNS 기반의 웹 필터링 서비스입니다.
    • 클라우드 기반의 서비스로서, 어디서나 간편하게 설정하고 사용할 수 있습니다.
  2. 주요 기능
    • 웹 필터링: 카테고리별 웹사이트 차단 및 사용자 정의 블랙리스트/화이트리스트 관리.
    • 악성 사이트 차단: 멀웨어, 피싱 사이트 등을 자동으로 차단.
    • 사용자 활동 모니터링: 다양한 통계와 리포트를 통해 네트워크 사용 현황을 파악.
    • 유연한 설정: 다양한 기기와 호환되며, 클라우드 대시보드를 통해 손쉽게 관리 가능.
  3. 설정 방법
    • 네트워크 설정에서 DNS 서버 주소를 SafeDNS의 주소로 변경합니다.
      • 기본 DNS 서버: 195.46.39.39
      • 보조 DNS 서버: 195.46.39.40

활용 사례

  1. 가정용
    • 자녀 보호: 자녀들이 부적절한 콘텐츠에 접근하지 못하도록 웹 필터링을 설정.
    • 악성 사이트 차단: 가정 내 모든 기기에서 악성 사이트로부터 보호.
  2. 기업용
    • 직원 인터넷 사용 관리: 업무와 관련 없는 웹사이트 차단으로 생산성 향상.
    • 보안 강화: 피싱, 멀웨어 등의 보안 위협으로부터 네트워크 보호.

기업 내부 사용자 가이드 및 보안 관점

  1. 가이드
    • DNS 설정 변경 안내: DNS 서버 주소를 OpenDNS 또는 SafeDNS로 변경하는 방법을 단계별로 설명.
    • 웹 필터링 정책 설정: 조직의 보안 정책에 따라 필터링 카테고리와 블랙리스트/화이트리스트 설정 방법 안내.
  2. 보안 점검 포인트
    • DNS 설정의 일관성 확인: 모든 기기가 올바른 DNS 서버를 사용하고 있는지 주기적으로 점검.
    • 웹 필터링 정책의 적절성 평가: 차단된 웹사이트 목록을 주기적으로 리뷰하여 필요에 따라 정책 조정.
    • 사용자 피드백 수집: 필터링 정책이 업무에 지장을 주지 않는지 사용자 피드백을 수집하고 반영.

OpenDNS와 SafeDNS는 모두 강력한 보안 기능과 유연한 설정을 제공하여 다양한 환경에서 인터넷 사용을 안전하게 유지할 수 있는 좋은 도구입니다. 조직의 필요에 따라 적절한 서비스를 선택하여 사용하면 됩니다.

대표적으로 알려진 DNS(Domain Name System) 서버는 여러 가지가 있습니다. 각 DNS 서버는 고유의 기능과 보안 옵션을 제공하여 사용자나 조직이 선택할 수 있습니다. 아래에 대표적인 DNS 서버와 그 특성입니다.

1. Google Public DNS

  • 기본 DNS 서버: 8.8.8.8
  • 보조 DNS 서버: 8.8.4.4
  • 특징: 빠른 속도와 높은 신뢰성을 자랑하며, Google의 대규모 인프라를 활용한 보안 기능 제공.

2. OpenDNS

  • 기본 DNS 서버: 208.67.222.222
  • 보조 DNS 서버: 208.67.220.220
  • 특징: 웹 필터링 및 보안 기능 제공, 기업용 고급 보안 서비스인 OpenDNS Umbrella 제공.

3. Cloudflare DNS

  • 기본 DNS 서버: 1.1.1.1
  • 보조 DNS 서버: 1.0.0.1
  • 특징: 개인정보 보호에 중점을 두고 있으며, 빠른 응답 속도를 제공.

4. Quad9 DNS

  • 기본 DNS 서버: 9.9.9.9
  • 보조 DNS 서버: 149.112.112.112
  • 특징: 악성 사이트 차단에 특화되어 있으며, 비영리 조직에서 운영하여 신뢰성 높은 보안 기능 제공.

5. SafeDNS

  • 기본 DNS 서버: 195.46.39.39
  • 보조 DNS 서버: 195.46.39.40
  • 특징: 웹 필터링과 악성 사이트 차단 기능 제공, 유연한 설정 옵션.

6. Comodo Secure DNS

  • 기본 DNS 서버: 8.26.56.26
  • 보조 DNS 서버: 8.20.247.20
  • 특징: 보안 중심의 DNS 서비스로 멀웨어, 피싱 사이트 차단 기능 제공.

7. Yandex.DNS

  • 기본 DNS 서버: 77.88.8.8 (기본 모드), 77.88.8.2 (안전 모드)
  • 보조 DNS 서버: 77.88.8.1 (기본 모드), 77.88.8.3 (안전 모드)
  • 특징: 러시아 기반의 DNS 서비스로, 기본 모드와 안전 모드 선택 가능. 안전 모드는 악성 사이트 차단 기능 제공.

8. CleanBrowsing

  • 기본 DNS 서버: 185.228.168.9 (가정용 필터), 185.228.168.10 (성인용 콘텐츠 필터)
  • 보조 DNS 서버: 185.228.169.9 (가정용 필터), 185.228.169.10 (성인용 콘텐츠 필터)
  • 특징: 가정용 필터와 성인용 콘텐츠 필터를 제공하여 자녀 보호 기능을 강화.

9. Norton ConnectSafe

  • 기본 DNS 서버: 199.85.126.10 (기본 보호), 199.85.126.20 (피싱, 멀웨어 보호), 199.85.126.30 (성인용 콘텐츠 필터)
  • 보조 DNS 서버: 199.85.127.10 (기본 보호), 199.85.127.20 (피싱, 멀웨어 보호), 199.85.127.30 (성인용 콘텐츠 필터)
  • 특징: 여러 레벨의 보호 모드를 제공하여 다양한 보안 요구사항을 충족.

DNS 서버 선택 시에는 네트워크의 보안 요구사항, 개인정보 보호 필요성, 속도, 그리고 웹 필터링 기능 등을 고려하여 적절한 서비스를 선택하는 것이 중요합니다. 위에 언급된 DNS 서버들은 각기 다른 특성과 장점을 가지고 있으므로, 환경에 맞게 선택하여 사용하면 됩니다. 다음은 대표적으로 알려진 DNS 서버를 표 형태로 정리한 것입니다.

DNS 서버 기본 DNS 서버 보조 DNS 서버 특징
Google Public DNS 8.8.8.8 8.8.4.4 빠른 속도와 높은 신뢰성, Google의 인프라를 활용한 보안 제공
OpenDNS 208.67.222.222 208.67.220.220 웹 필터링 및 보안 기능 제공, 고급 보안 서비스(OpenDNS Umbrella) 제공
Cloudflare DNS 1.1.1.1 1.0.0.1 개인정보 보호 중점, 빠른 응답 속도 제공
Quad9 DNS 9.9.9.9 149.112.112.112 악성 사이트 차단 특화, 비영리 조직 운영으로 신뢰성 높은 보안 제공
SafeDNS 195.46.39.39 195.46.39.40 웹 필터링 및 악성 사이트 차단 기능, 유연한 설정 옵션 제공
Comodo Secure DNS 8.26.56.26 8.20.247.20 보안 중심 서비스, 멀웨어 및 피싱 사이트 차단 기능 제공
Yandex.DNS 77.88.8.8 (기본 모드) 77.88.8.1 (기본 모드) 러시아 기반 서비스, 기본 모드 및 안전 모드 선택 가능. 안전 모드는 악성 사이트 차단 제공
CleanBrowsing 185.228.168.9 (가정용 필터) 185.228.169.9 (가정용 필터) 자녀 보호 기능 강화, 가정용 필터 및 성인용 콘텐츠 필터 제공
Norton ConnectSafe 199.85.126.10 (기본 보호) 199.85.127.10 (기본 보호) 여러 레벨의 보호 모드 제공, 다양한 보안 요구사항 충족

이 표는 각 DNS 서버의 기본 DNS 서버와 보조 DNS 서버 주소, 그리고 주요 특징을 요약하여 나타낸 것입니다. 필요에 따라 적절한 DNS 서버를 선택하여 사용할 수 있습니다.

스마트폰에서 제공하는 기능으로 프라이빗 DNS는 사용자가 특정 DNS(Domain Name System) 서버를 직접 설정하여 사용할 수 있는 기능입니다. 이 기능은 보안과 프라이버시를 강화하는 데 도움이 됩니다.

프라이빗 DNS의 주요 기능

  1. 보안 향상: 프라이빗 DNS는 암호화된 DNS 쿼리를 사용하여, 인터넷 사용 시 도메인 이름이 IP 주소로 변환되는 과정을 안전하게 보호합니다. 이를 통해, 네트워크 상에서 발생할 수 있는 중간자 공격(man-in-the-middle attack)을 방지할 수 있습니다.
  2. 프라이버시 보호: 사용자가 접속하는 웹사이트의 도메인 이름 정보를 제3자가 쉽게 확인하지 못하게 함으로써, 개인 정보 보호를 강화할 수 있습니다.
  3. 광고 및 추적 차단: 특정 프라이빗 DNS 서버를 사용하면 광고나 추적기를 차단할 수 있습니다. 예를 들어, 일부 DNS 제공자는 광고 필터링 기능을 제공하여 웹 브라우징 경험을 개선할 수 있습니다.

스마트폰에서 프라이빗 DNS 설정 방법

  1. 설정 앱을 엽니다.
  2. 연결 메뉴로 이동합니다.
  3. 기타 연결 설정을 선택합니다.
  4. 프라이빗 DNS를 탭합니다.
  5. 프라이빗 DNS 제공자 호스트 이름을 선택하고, 사용할 DNS 서버의 호스트 이름을 입력합니다. 예를 들어, Cloudflare의 DNS를 사용하려면 one.one.one.one 또는 dns.google을 입력할 수 있습니다.
  6. 저장 버튼을 누릅니다.

이렇게 설정하면, 스마트폰에서 발생하는 모든 DNS 쿼리가 설정한 프라이빗 DNS 서버를 통해 처리됩니다. 삼성 갤럭시 기준으로 메뉴의 위치가 다를 수 있습니다.

주의 사항

  • 모든 네트워크에서 프라이빗 DNS를 사용할 수 없는 경우도 있으므로, 네트워크 환경에 따라 설정을 조정해야 할 수도 있습니다.
  • 일부 기업 네트워크나 공공 Wi-Fi에서는 프라이빗 DNS 사용이 제한될 수 있습니다.

 

프라이빗 DNS를 통해 보다 안전하고 개인 정보가 보호된 인터넷 환경을 구축할 수 있습니다. 프라이빗 DNS와 일반 DNS의 차이점과 직접 DNS를 구성하여 연결하는 방법을 설명드리겠습니다.

일반 DNS와 프라이빗 DNS의 차이점

  • 일반 DNS
    • 사용자가 인터넷에 접속할 때, 네트워크에서 자동으로 할당된 DNS 서버를 사용합니다. 이 서버는 보통 인터넷 서비스 제공자(ISP)에서 제공하는 것입니다.
    • DNS 쿼리는 보통 암호화되지 않기 때문에, 중간자 공격(man-in-the-middle attack)이나 DNS 스누핑(DNS Snooping) 등으로 인해 보안 문제가 발생할 수 있습니다.
  • 프라이빗 DNS
    • 사용자가 직접 선택한 DNS 서버를 사용하며, DNS 쿼리가 암호화되어 전송됩니다. 이로 인해 네트워크 상에서 쿼리가 노출되는 것을 방지할 수 있습니다.
    • 프라이빗 DNS는 DNS-over-TLS(DoT) 또는 DNS-over-HTTPS(DoH)를 통해 암호화된 방식으로 통신을 진행하여 보안을 강화합니다.

직접 DNS 서버 구성 및 연결 방법

직접 DNS 서버를 구성하여 사용할 수 있습니다. 예를 들어, 개인 서버나 클라우드 서버에 DNS 서버를 구축하고 이를 스마트폰의 프라이빗 DNS로 설정할 수 있습니다.

 

DNS 서버 구축 (예: Linux 서버에서 BIND 사용)

  1. BIND 설치
    sudo apt-get update
    sudo apt-get install bind9
  2. BIND 설정
    • /etc/bind/named.conf.options 파일을 수정하여 기본 설정을 구성합니다.
    • 아래와 같은 기본 설정을 추가할 수 있습니다.
      options {
          directory "/var/cache/bind";
          forwarders {
              8.8.8.8;  // Google Public DNS
              8.8.4.4;
          };
          dnssec-validation auto;
          auth-nxdomain no;    # conform to RFC1035
          listen-on-v6 { any; };
      };
  3. DNS 구역 파일 설정
    • /etc/bind/named.conf.local 파일에서 구역(zone)을 정의합니다.
      zone "example.com" { type master; file "/etc/bind/db.example.com"; };
    • /etc/bind/db.example.com 파일을 생성하여 DNS 레코드를 설정합니다.
  4. 서비스 시작 및 확인
    sudo systemctl restart bind9
    sudo systemctl enable bind9
  5. DNS 서버 상태 확인
    sudo systemctl status bind9

스마트폰에서 직접 구성한 DNS 서버로 연결

  1. 위에서 설명한 프라이빗 DNS 설정 방법을 따라 프라이빗 DNS 설정 메뉴에 진입합니다.
  2. 프라이빗 DNS 제공자 호스트 이름에 직접 구성한 DNS 서버의 도메인 이름 또는 IP 주소를 입력합니다.
    • 예: dns.example.com 또는 192.168.1.1
  3. 설정을 저장하고, DNS 서버가 정상적으로 동작하는지 확인합니다.

이렇게 하면 스마트폰에서 발생하는 모든 DNS 쿼리가 직접 구성한 DNS 서버를 통해 처리되며, 이를 통해 DNS 트래픽의 보안과 개인 정보 보호를 강화할 수 있습니다. 위에서 설명드린 BIND 설정은 기본적으로 일반 DNS 서버를 구성하는 방법입니다. DNS를 암호화하여 통신하는 DNS-over-TLS(DoT)를 사용하려면 추가적인 설정이 필요합니다. 프라이빗 DNS는 DoT를 사용하여 DNS 쿼리를 암호화된 방식으로 처리하기 때문에, 이를 지원하도록 DNS 서버를 설정해야 합니다.

BIND에서 DNS-over-TLS 설정 방법

BIND는 기본적으로 DoT를 지원하지 않기 때문에, DoT를 지원하려면 BIND 앞에 프록시 서버를 두는 방식으로 설정해야 합니다. 보통 stunnel이나 nginx 같은 프록시 서버를 사용하여 BIND 서버와 통신하는 클라이언트 간의 TLS 암호화를 처리합니다.

 

stunnel을 이용한 DNS-over-TLS 설정

stunnel은 일반적인 TCP 연결을 TLS로 암호화해주는 프록시 소프트웨어입니다. 이를 이용하여 DNS-over-TLS를 설정할 수 있습니다.

  1. stunnel 설치
    sudo apt-get install stunnel4
  2. stunnel 설정 파일 생성
    /etc/stunnel/stunnel.conf 파일을 생성하고, 다음과 같이 설정합니다.
    [dns]
    accept = 853
    connect = 127.0.0.1:53
    cert = /etc/stunnel/stunnel.pem
    key = /etc/stunnel/stunnel.key
    • accept = 853는 DoT 표준 포트인 853번 포트에서 암호화된 DNS 요청을 수신합니다.
    • connect = 127.0.0.1:53는 수신된 암호화된 DNS 요청을 BIND 서버로 전달합니다.
  3. SSL 인증서 생성
    SSL 인증서를 생성하여 stunnel에서 사용할 수 있도록 합니다.
    sudo openssl req -new -x509 -days 3650 -nodes -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.key
  4. stunnel 서비스 시작
    sudo systemctl restart stunnel4
    sudo systemctl enable stunnel4
  5. BIND 설정
    • BIND는 기본적으로 설정된 대로 유지하며, 127.0.0.1:53에서 DNS 요청을 수신하도록 합니다.

스마트폰에서 프라이빗 DNS 설정

위 설정이 완료되면, 스마트폰의 프라이빗 DNS 설정에서 도메인 이름을 stunnel로 설정한 서버의 도메인 이름으로 지정합니다. 예: dot.example.com

 

이렇게 하면 스마트폰이 DoT를 통해 암호화된 DNS 쿼리를 전송하고, stunnel이 이를 해독하여 BIND 서버로 전달합니다. 이로 인해 스마트폰과 DNS 서버 간의 모든 통신이 암호화된 상태로 이루어집니다. 이 방법을 통해 DNS-over-TLS(DoT)를 지원하는 프라이빗 DNS를 설정할 수 있습니다.

 

NGINX를 사용하여 DNS-over-TLS(DoT) 프록시를 설정하는 방법을 설명드리겠습니다. NGINX는 웹 서버로 널리 알려져 있지만, TLS를 지원하는 프록시 서버로도 사용할 수 있습니다. 이를 통해 BIND와 같은 DNS 서버 앞에 NGINX를 배치하여 DoT를 구성할 수 있습니다.

1. NGINX 설치

먼저 NGINX와 TLS를 지원하기 위한 모듈을 설치합니다.

sudo apt-get update
sudo apt-get install nginx

2. SSL 인증서 생성

NGINX에서 TLS를 설정하려면 SSL 인증서가 필요합니다. OpenSSL을 사용해 자체 서명된 SSL 인증서를 생성할 수 있습니다.

sudo openssl req -new -x509 -days 3650 -nodes -out /etc/nginx/ssl/nginx.pem -keyout /etc/nginx/ssl/nginx.key

이 명령은 /etc/nginx/ssl/ 디렉토리에 인증서 파일(nginx.pem)과 키 파일(nginx.key)을 생성합니다. 인증서에 대한 자세한 정보를 입력하라는 메시지가 표시되며, 적절한 정보를 입력하면 됩니다.

3. NGINX 설정 파일 수정

NGINX의 설정 파일을 수정하여 DNS-over-TLS를 지원하도록 구성합니다.

  1. NGINX 설정 파일 열기
    sudo nano /etc/nginx/nginx.conf
  2. 설정 추가
    stream {
        upstream dns_backend {
            server 127.0.0.1:53;  # BIND DNS 서버 주소
        }
    
        server {
            listen 853 ssl;  # DoT 표준 포트
    
            ssl_certificate /etc/nginx/ssl/nginx.pem;
            ssl_certificate_key /etc/nginx/ssl/nginx.key;
    
            ssl_protocols TLSv1.2 TLSv1.3;
            ssl_ciphers HIGH:!aNULL:!MD5;
    
            proxy_pass dns_backend;
        }
    }
    NGINX 설정 파일에 아래와 같은 구성을 추가합니다.
    • upstream dns_backend는 BIND DNS 서버로 요청을 전달하는 백엔드 서버를 정의합니다.
    • listen 853 ssl은 NGINX가 DoT 표준 포트 853에서 SSL을 통해 연결을 수신하도록 설정합니다.
    • ssl_certificatessl_certificate_key는 NGINX가 사용할 SSL 인증서와 키를 지정합니다.
    • proxy_pass dns_backend는 수신한 DNS 쿼리를 BIND 서버로 전달합니다.
  3. NGINX 설정 파일 검증
    sudo nginx -t
    설정에 문제가 없다면 NGINX를 재시작하여 변경 사항을 적용합니다.
    sudo systemctl restart nginx
  4. 설정이 올바른지 확인합니다.

4. BIND DNS 서버 설정

BIND는 기본적으로 53번 포트에서 DNS 요청을 수신하도록 설정되어 있습니다. 특별한 변경이 필요 없으며, NGINX를 통해 전달된 요청을 정상적으로 처리할 수 있도록 BIND를 구동하면 됩니다.

sudo systemctl restart bind9

5. 스마트폰에서 프라이빗 DNS 설정

마지막으로, 스마트폰에서 프라이빗 DNS 설정으로 들어가서, NGINX 서버의 도메인 이름 또는 IP 주소를 입력합니다.

예: dot.example.com

 

이제 스마트폰에서 발생하는 모든 DNS 쿼리가 NGINX 서버로 암호화된 상태로 전송되고, NGINX는 이를 해독하여 BIND 서버로 전달합니다. 이 방법을 통해 DNS-over-TLS(DoT)를 지원하는 프라이빗 DNS 환경을 구축할 수 있습니다.

 

스마트폰이나 다른 기기에서 프라이빗 DNS 설정 시 도메인을 입력하면, 해당 도메인을 해결하기 위해 일반 DNS 쿼리가 먼저 발생합니다. 이 과정에서 몇 가지 중요한 사항이 있습니다.

  1. 도메인 확인을 위한 일반 DNS 쿼리
    • 프라이빗 DNS 설정에 입력한 도메인을 확인하기 위해 스마트폰은 먼저 일반 DNS 쿼리를 사용하여 이 도메인의 IP 주소를 확인합니다.
    • 이 초기 단계에서는 암호화가 적용되지 않은 일반 DNS 쿼리가 사용되므로, 이 과정은 보안되지 않습니다.
  2. DNS-over-TLS(DoT) 연결
    • 도메인이 확인된 후, 해당 IP 주소로 암호화된 연결(DNS-over-TLS)을 설정하게 됩니다. 이후의 모든 DNS 쿼리는 이 암호화된 연결을 통해 안전하게 전달됩니다.
  3. 보안 고려사항
    • 프라이빗 DNS 설정에 입력한 도메인을 조회하는 과정에서 일반 DNS 쿼리가 발생하기 때문에, 이 도메인의 이름은 노출될 수 있습니다. 따라서 매우 민감한 도메인을 사용하기보다는 신뢰할 수 있는 도메인을 사용하는 것이 좋습니다.
    • 프라이빗 DNS의 실제 통신은 암호화된 상태로 이루어지지만, 초기 도메인 확인 단계에서 발생하는 일반 DNS 쿼리에 대한 보안 우려가 있을 수 있습니다.

도메인 노출을 줄이는 방법

만약 이 초기 단계에서의 도메인 노출이 걱정된다면, 다음과 같은 방법을 고려할 수 있습니다.

  • IP 주소를 직접 입력: 도메인 대신 프라이빗 DNS 서버의 IP 주소를 직접 입력하면, 일반 DNS 쿼리 과정을 피할 수 있습니다. 이 경우 스마트폰은 바로 해당 IP로 연결을 시도하고, 이후 DoT를 통해 암호화된 통신이 이루어집니다.
  • 도메인 확인 단계에 대한 이해: 도메인을 입력하여 설정하는 경우에도 이후 모든 통신은 안전하게 암호화되므로, 도메인 자체의 노출 가능성을 충분히 이해한 후 사용하는 것이 중요합니다.

이러한 점을 고려하여, 프라이빗 DNS를 설정할 때 도메인 또는 IP 주소를 신중하게 선택하는 것이 좋습니다.

 

프라이빗 DNS가 설정되어 있을 때, 스마트폰의 DNS 요청이 어떻게 처리되는지에 대한 설명입니다.

1. 프라이빗 DNS의 동작 원리

  • 프라이빗 DNS 설정 시
    • 설정된 프라이빗 DNS 서버로 모든 DNS 쿼리가 암호화된 상태(DNS-over-TLS 또는 DNS-over-HTTPS)로 전송됩니다. 이 설정이 활성화된 상태에서는, DNS 요청이 프라이빗 DNS 서버를 통해서만 처리되며, 일반 DNS 서버로의 요청은 기본적으로 발생하지 않습니다.

2. 프라이빗 DNS가 원활하지 않을 때

  • 프라이빗 DNS 서버가 응답하지 않거나 문제가 발생한 경우
    • 스마트폰은 DNS 쿼리를 계속 시도하지만, 프라이빗 DNS 서버가 응답하지 않으면 요청이 실패합니다.
    • 이 경우 스마트폰은 기본적으로 일반 DNS 서버로 전환하지 않습니다. 프라이빗 DNS를 사용하는 경우, DNS 요청은 오직 설정된 프라이빗 DNS 서버로만 전송되며, 일반 DNS 서버로의 요청은 발생하지 않습니다.
  • 프라이빗 DNS 설정이 실패한 경우
    • 만약 프라이빗 DNS 서버와의 연결 설정 자체가 실패한다면, 스마트폰은 연결되지 않은 상태로 남아 있게 됩니다.
    • 이런 경우 네트워크 연결에 문제가 발생할 수 있으며, 사용자는 이를 인지하고 프라이빗 DNS 설정을 변경하거나 일반 DNS로 돌아가야 할 수 있습니다.

3. 안전성 보장

  • 일반 DNS로의 전환이 없다
    • 프라이빗 DNS 설정이 활성화되어 있는 동안에는, 모든 DNS 요청이 프라이빗 DNS를 통해서만 처리됩니다. 프라이빗 DNS 서버가 응답하지 않으면, DNS 요청 자체가 실패할 뿐, 일반 DNS 서버로의 전환은 일어나지 않습니다.
    • 이는 사용자의 프라이버시와 보안을 보장하기 위해 설계된 동작 방식입니다.

4. 문제 해결

  • 프라이빗 DNS가 원활하지 않은 경우
    • 네트워크 연결이 원활하지 않다면, 프라이빗 DNS 설정을 임시로 해제하고 일반 DNS로 돌아가는 것이 필요할 수 있습니다.
    • 설정 메뉴에서 프라이빗 DNS를 "자동" 또는 "사용 안 함"으로 설정하면 일반 DNS를 사용할 수 있습니다.

 

프라이빗 DNS 설정이 활성화된 상태에서는, 모든 DNS 쿼리는 설정된 프라이빗 DNS 서버로만 전송됩니다. 프라이빗 DNS 서버가 원활하지 않다면 DNS 요청이 실패할 뿐, 일반 DNS로의 전환은 자동으로 이루어지지 않습니다. 이로 인해 사용자 프라이버시와 보안이 유지되며, 만약 문제가 발생한다면 프라이빗 DNS 설정을 해제하여 일반 DNS로 돌아갈 필요가 있습니다.

 

SNI(Server Name Indication) 검열을 우회하기 위해 프라이빗 DNS를 사용하는 경우도 있습니다. SNI 검열은 네트워크 운영자가 TLS 연결의 초기 단계에서 전송되는 SNI 정보를 분석해 특정 도메인에 대한 접근을 차단하는 방법입니다. 이를 우회하는 방법으로는 프라이빗 DNS를 사용하여 DNS 쿼리를 암호화하고, 추가적인 기법을 적용하는 것이 있습니다.

1. SNI 검열 개요

  • SNI(Server Name Indication): SNI는 TLS(SSL) 연결 시 클라이언트가 서버에 어떤 도메인으로 접속하려는지 알려주는 확장 기능입니다. 이 정보는 암호화되지 않은 상태로 전송되므로, 네트워크 운영자가 이를 검사하여 특정 도메인에 대한 접근을 차단할 수 있습니다.
  • SNI 검열: SNI 필드에 특정 도메인이 포함된 연결을 차단하는 방식으로, 주로 국가나 조직에서 특정 웹사이트에 대한 접근을 통제하는 데 사용됩니다.

2. 프라이빗 DNS를 통한 우회

프라이빗 DNS를 사용하면 DNS 쿼리가 암호화된 상태로 전송되므로, 네트워크 운영자가 DNS 요청을 분석해 특정 사이트를 차단하는 것을 방지할 수 있습니다. 하지만, SNI 검열 자체를 우회하려면 추가적인 기술이 필요합니다.

 

스마트폰에서 프라이빗 DNS를 설정하여 암호화된 DNS 요청을 사용하도록 하면, 프라이빗 DNS를 통해 DNS 요청은 암호화된 상태로 전송되므로, 네트워크 운영자가 쉽게 DNS 요청을 검사하거나 차단할 수 없습니다.

 

프라이빗 DNS만으로는 SNI 검열을 완전히 우회할 수 없을 수 있습니다. 이를 보완하기 위한 추가적인 SNI 우회 기법 몇 가지 추가적인 방법이 있습니다.

  1. ESNI(Encrypted SNI)
    • ESNI는 SNI 필드를 암호화하여 전송하는 방법으로, 서버와 클라이언트 간의 SNI 정보를 보호할 수 있습니다. 다만, ESNI를 지원하는 서버와 브라우저가 필요합니다.
    • 이 기능은 최신 TLS 1.3 프로토콜에서 사용 가능하며, 일부 브라우저(예: Firefox)와 서버가 이를 지원합니다.
  2. VPN 사용
    • VPN(가상 사설망)을 사용하면 SNI 정보를 포함한 모든 트래픽이 VPN 서버로 암호화된 터널을 통해 전송되므로, 네트워크 운영자가 트래픽을 분석하거나 검열하는 것을 방지할 수 있습니다.
  3. TLS 터널링 도구 사용
    • HTTPS 또는 TLS 터널링 도구를 사용하여 SNI 정보를 숨길 수 있습니다. 예를 들어, Stunnel이나 Obfsproxy 같은 도구를 사용하여 트래픽을 암호화된 터널로 전송하면, SNI 필드가 노출되지 않습니다.
  4. DNS over HTTPS (DoH)
    • DNS-over-HTTPS(DoH) 역시 DNS 요청을 HTTPS 프로토콜로 암호화하여 전송하는 방식으로, DNS 쿼리를 차단하거나 감시하는 것을 방지합니다. 이를 지원하는 DNS 서버와 클라이언트가 필요합니다.

3. 설정 및 적용

위에서 설명한 방법을 조합하여 SNI 검열을 우회할 수 있습니다.

  1. 프라이빗 DNS 설정을 통해 DNS 쿼리를 암호화하고,
  2. VPN 또는 TLS 터널링 도구를 사용하여 SNI 정보를 보호하는 방식으로 접근할 수 있습니다.

이렇게 하면 네트워크 운영자가 SNI 정보를 통해 특정 도메인에 대한 접근을 차단하는 것을 방지할 수 있습니다. 프라이빗 DNS는 암호화된 DNS 쿼리를 사용하여 DNS 기반의 검열을 우회하는 데 효과적입니다. 그러나 SNI 검열을 우회하기 위해서는 ESNI, VPN, TLS 터널링 도구와 같은 추가적인 기술이 필요합니다. 이러한 방법들을 조합하면 SNI 검열을 효과적으로 우회하고, 인터넷 사용의 프라이버시를 강화할 수 있습니다.

DNS-over-TLS 테스트 방법

DNS-over-TLS를 테스트하려면, nslookup 대신 DNS-over-TLS를 지원하는 클라이언트를 사용해야 합니다. 예를 들어, dig 명령어와 stunnel, kdig, 또는 stubby 같은 도구를 사용할 수 있습니다.

 

1. kdig을 사용한 테스트

kdig는 DNS-over-TLS를 지원하는 도구로, DNS 쿼리를 TLS로 직접 수행할 수 있습니다.

kdig @localhost +tls-ca +tls-host=your-domain.com example.com
  • @localhost: DNS 서버를 localhost로 지정합니다.
  • +tls-ca: TLS를 사용하도록 설정합니다.
  • +tls-host=your-domain.com: SNI를 설정합니다.
  • example.com: 조회하려는 도메인입니다.

 

2. stunnel과 함께 nslookup 사용하기

stunnel을 사용하면 nslookup과 함께 DNS-over-TLS를 간접적으로 사용할 수 있습니다. stunnel을 통해 로컬 포트(예: 1053)를 TCP 포트 853으로 터널링한 후, nslookup을 사용할 수 있습니다.

  1. stunnel 설정
    /etc/stunnel/stunnel.conf 파일에 다음 내용을 추가합니다.
    [dns-tls]
    client = yes
    accept = 127.0.0.1:1053
    connect = 127.0.0.1:853
  2. stunnel 실행
    sudo stunnel
  3. nslookup 테스트
    nslookup example.com 127.0.0.1:1053
  4. 이제 nslookup에서 터널링된 포트를 사용할 수 있습니다.

이 방법을 통해 DNS-over-TLS 환경을 테스트할 수 있습니다.

 

kdig 명령어는 dnsutils 패키지에 포함되어 있지 않고, knot DNS 패키지의 일부로 제공됩니다. kdig 명령어를 사용하려면 knot DNS 패키지를 설치해야 합니다. knot DNS와 함께 kdig를 설치하려면 다음과 같이 진행할 수 있습니다.

  1. 패키지 저장소를 업데이트합니다.
    sudo apt-get update
  2. knot DNS 패키지를 설치합니다.
    sudo apt-get install knot-dnsutils
  3. 설치 후, kdig 명령어를 사용할 수 있습니다.
    kdig example.com @localhost +tls

kdig 명령어를 사용하여 DNS 쿼리의 세부 로그와 실제 질의된 서버를 확인하려면 +trace+tls 옵션을 함께 사용합니다. +trace 옵션은 질의가 어떻게 이루어지고 있는지를 추적하며, +tls 옵션은 DNS-over-TLS를 통해 쿼리를 실행하게 합니다. 이를 통해 쿼리가 어떤 경로로 진행되고, 어느 서버에서 처리되고 있는지를 확인할 수 있습니다.

kdig +tls +trace example.com
  • +tls: DNS-over-TLS를 통해 쿼리를 실행합니다.
  • +trace: 쿼리가 루트 서버부터 시작해서 도메인까지의 경로를 추적합니다. 이 옵션을 사용하면 각 단계에서 질의가 어느 서버에서 처리되었는지를 확인할 수 있습니다.

 

위 명령어를 실행하면 다음과 같은 정보가 출력됩니다.

  1. 루트 서버: 처음 질의가 전송되는 루트 DNS 서버 정보.
  2. TLD 서버: .com 같은 최상위 도메인 서버 정보.
  3. 권한 서버: 실제 도메인에 대한 최종 권한을 가진 DNS 서버 정보.

이 과정에서 각 서버의 IP 주소와 질의된 도메인이 어떤 서버에서 처리되었는지를 확인할 수 있습니다. 이외에도 추가적인 옵션이 있습니다.

  • +notcp: TCP 사용을 금지합니다(이 경우 DNS-over-TLS와 같이 사용하면 안 됩니다).
  • +all: 모든 옵션을 활성화하여 최대한의 정보를 출력합니다.
  • +stats: 쿼리 통계 정보를 추가로 출력합니다.

예를 들어, 모든 정보를 최대한 상세히 확인하고 싶다면 다음과 같은 명령어를 사용할 수 있습니다.

kdig +tls +trace +all +stats example.com

이 명령어는 example.com 도메인에 대한 쿼리를 DNS-over-TLS로 실행하면서, 각 단계의 모든 로그와 통계 정보를 상세히 출력합니다.

728x90

댓글