본문 바로가기
  • 산에사는 꽃사랑......
컴퓨터/Linux System and Server

DNSCrypt로 짜증나는 DNS Warning 사이트를 피해보자. (DNS 질의 암호화 방법)

by 산에사는꽃사랑 2018. 5. 5.

OpenDNS의 DNSCrypt로 짜증나는  Warning 사이트를 피해보자. 

(DNS 질의 암호화 방법)

DNS란, 모든 웹사이트에는 IP 주소라는 식별 코드가 주어지는데. 숫자 조합보다는 도메인명을 입력하는 것이 훨씬 쉽기 때문에, DNS(Domain Name Service) 서버는 이러한 사용자가 쉽게 사용할 수 있는 도메인명을 IP 주소로 변환해주고, 사용자의 웹 브라우저가 웹사이트에 대한 요청을 받으면, 도메인명을 해당 IP 주소로 변환하는 DNS 서버로 이동한다. 이를 DNS 네임 리솔루션이라한다.. 이게 DNS서버의 역활이다.

요 몇 일 정부의 DNS감청이라는 이슈가 각종 커뮤니티에 돌아다니는 듯해서, 그 와중에 DNScrypt에 대한 이야기가 나와서 좀 알아보기로 했다.

이전까지만 해도 음란물, 불법도박, 저작권위반 사이트의 경우 http://warning.or.kr/ 로 가게 만들었다.

소라X의 경우에는 정부가 운영자를 인터폴을 통해서 검거하기도 하는등 열일하는듯 하나, 대부분의 경우 이러한 워닝사이트로 막고 있다.

음란물 불법저작물의 공포의 대상 워닝사이트

하지만, 궁하면 통한다 했는가.. 이것을 피하기 위해서 일반 http 포로토콜이 아닌 암호화 프로토콜인 https를 사용한 사이트들이 늘어나고,

이러한 https프로토콜을 사용하는 사이트는 쉽게 저 워닝사이트를 우회할 수 있게 되었다.

그래서, https로 운영중인 사이트들은 저 경고문을 대부분 다 피할 수 있었으나,  또 방송통신심의워원회(정부)에서는 DNS 퀴어리를 감청하는 방식(?)으로 사이트를 막을 수 있는 방법을 고안해 놓은 듯 하다.

https프로토콜을 사용하더라도, 클라언트가 맨 처음 웹서버의 주소를 물어보는 과정은 평문 즉 암호화되지 않은 문장으로 질의를 하는것을 중간 53번 포트를 감시하다가 해당 도메인 질의가 나오면 DNS질의 결과를 변조하여 잘못된 정보를 클라이언트에게 보내주는 방식을 사용하게 만든는 것 같다.

저 방식의 일종의 해킹기술이기도 하다. 저 기술을 사용하게 되면  https프로토콜을 사용하더라도 워닝사이트를 피할 수 없다는 말이 됩니다.

168.126.63.1 은 KT의 DNS서버이다. 이쪽으로 워닝이 뜨는 사이트를 DNS를 퀴어리를 날리면 워닝사이트인 121.189.57.82로 답을 해준다.

그런데, 저런 사이트들이 DNS이름을 바꿔버리고 SNS나 이런곳에 알려줘버리면 막을 수 없는게 사실이다.
그래서, 원천적인 해결 방법은 아닌것 된다.
솔직히 말해서 아는 사람들은 다 아는 방식으로 다 피해간다.
도메인 구입비용이다. 요즈음 껌값보다 싸다.

하지만, DNS 위변조 해킹피해을 막기 위해서 고안되었던게 있는데, DNSCrypt이다.

OpenDNS에서 추진하는 프로젝트인데, 이 DNSCrypt를 사용하게 되면 첫 DNS질의를 암호화해서 질의를 하고 응답을 받기 떄문에, DNS위변조로 부터 안전하게 인터넷을 사용할 수 있다.

https://github.com/opendns/dnscrypt-win-client

따라서, 정부의 워닝사이트도 https 프로토콜을 사용하면서 사용할 수 있다는 이야기가 된다.

간단하다. 뭐 할게 없다.

설치를 해보면..

한국통신 기본 DNS를 사용하게 되면 차된 사이트들은 모두 워닝사이트 IP를 안내해주게 되어 있다.

그래서, DNSCrypt를 설치해보면...

https://github.com/opendns/dnscrypt-win-client

또는,

dnscrypt-win-client-master.zip

0.06버전을 다운받자.

1. 방문해서 중간쯤 보이는 Clone or download를 선택하게 되면 해당 프로그램을 다운 받을 수 있다.

DNSCrypt는 OpenDNS.com의 운영주체는 유명 네트워크 관련 회사인 CISCO에서 행하는 프로젝트이다. 안심하고 다운받으면 된다.

https://www.opendns.com/
허접한 회사는 절대 아니다. -.-;

좀더 알고 싶으면 방문해보자.

https://www.opendns.com/

2. 해당프로그램을 내려받고 압축을 풀어줘야 한다.

아무곳이나 압축을 풀어주면 된다.

압축을 푸게 되면 DNSCryptUpgrade라는 폴더가 있다 그곳으로 이동하자.

확장자가 EXE가 아니고 msi확장자이다. 그래서, 마우스 오른쪽 클릭을 하더라도 관리자 설치가 뜨지 않는다.

그래도, 설치하면 설치화면은 뜨는데 관리자 권한이 아니어서 설치가 되지 않는다.

관리자 권한을 필요로 한다.

3. 관리자 권한으로 설치해보자. 콘솔인 CMD를 관리자 권한으로 실행하자.

그리고, 다운받는 곳으로 명령어로 이동후에, 프로그램을 입력하면 관리자 권한으로 설치가 된다.

관리자 권한으로 실행중

설치완료

4. 실행해보자.

프로그램 이름은 OpenDNSCrypt이다.

실행화면은 간단하다.

상단의 Enable OpenDNS와 Enable DNSCrypt를 체크만 하면 된다.

간단하다. 뭐 할게 없다.

5. DNS에 질의를 해보자.

명령프롬프트 cmd를 사용해서 nslookup 명령어를 이요해본다.

nslookup명령은 dns질의를 테스트할때 사용하는 대표적인 프로그램이다. 리눅스 유닉스 윈도 어디든 다 있다.

다만 cmd상에서 사용해야 하는데, 요즈음 GUI로 나오는 아이들도 있는데, 그건 선택이다.

1. 처음에 나오는 127.0.0.1주소는 내 컴의 localhost를 가르키는 IP주소이다. DNS질의를 일단 내 IP로 하게 된다.
2. 질의를 하게 되면 내 컴에서는 이 질의를 받아 암호화해서 해당 OpenDNS의 IP인 208.67.220.220으러 질의를 하게된다.
3. 그러면 보통 암호화되지 않는 질의를 spooping하던 DNS변조를 할려는 자는 암호회된 질의문을 감청하지 못하게 된다.
4. 따라서, 우리는 암호화된 응답문을 받기 떄문에 정확하게 해당 인터넷 주소 및 사이트를 찾아 들어갈 수 있는 것이다.

nslookup 내 lsever 로 DNS질의할 곳을 한국통신 주메인 DNS(168.126.63.1)로 바꿔보면 어김없이 워닝사이트로 안내해준다.

6. 마치면서, 

음란물, 불법소프트웨어등 해가 되는 사이트를 근절하는게 맞지만, 이런식으로 국가가 개인의 DNS질의 패킷을 중간에서 가로채서 그걸 확인하고 막는 방법은 뭔가 좀 '아니다라'는 생각이 들었다.

저런식이면, 국민들 대다수가 어딜 향하고 있으면 어떤 방식을 선호하는지, 성향이나 이런 것도 다 확인할수 있다고 생각이 든다.

소위 말하는 빅브라더... 중국의 만리장성처럼 하나하나 다 들여다 볼수 있지 않나 싶다.

불안한 마음이 드는 것은 너무 기우일까???


ps. 사족으로 

휴대폰에서도 사용 가능한 DNSCrypt가 가능한 프로그램이 있다.

'DNS Manager (with DNSCrypt)'  - https://play.google.com/store/apps/details?id=com.okirat.dnsmanager

무료이고, 기능 또한 강력한 것 같다.

아직, 완벽하게 사용법을 몰라서 간단한 구성만 캡춰해서 포스팅해본다.

일단 첫화면부터는 간단하다, 저정도만 되어도 사용할 수 있다.
좀더 복잡한 옵션은 옆 메뉴로 들어가면 아주 상세한 세팅이 가능하다
이런 프로그램이 무료라니 놀랍다.
하지만, 유의점은 있다. 이걸 켜놓은 상태에서 Samsung Pay를 사용하게 되면 VPN 연결을 해제하고 시도하라고 한다. 결제가 안된다는 말이다.
결제를 할때에는 이앱을 끄고 하자.

자동시작도 가능하고 Pin protection도 가능하다.
아랫쪽에 보면 VPN exclude옵션을 사용하게 되면 삼성페이도 가능하지 싶은데, 좀더 테스트를 해봐야 할듯 하다.

OpenDNS DNSCrypt관련 개념을 알고 싶으면

https://www.krcert.or.kr/data/trendView.do?bulletin_writing_sequence=951&queryString=cGFnZT02NyZzb3J0X2NvZGU9JnNlYXJjaF9zb3J0PXRpdGxlX25hbWUmc2VhcmNoX3dvcmQ9

KISA에서 작성한 기사를 보거나 하면 알수 있다.

또한, VPN에서 IP노출을 하고 싶지 않을 경우에 이 문서를 보면 좋을 것 같다.

https://ko.vpnmentor.com/blog/ip-leaks-how-to-check-vpn/

VPN상태에서 IP노출이 되는지, 내 IP가 무엇인지 알고 싶으면 방문해서 테스트 해보면 좋을 듯 하다.

https://ko.vpnmentor.com/tools/vpns-tor%EC%97%90-%EB%8C%80%ED%95%9C-ip-%EB%88%84%EC%B6%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8/