본문 바로가기
개발환경/Tips

IKnowWhatYouDownload.com에 대한 Torrent 개인 정보 노출 방지법: Socks5 및 익명모드

by Kibua20 2020. 12. 31.

토렌트는 Peer to Peer 방식으로 파일 공유 방식을 제공합니다.  특정 서버에 파일을 다운로드하는 것보다 토렌트로 다운로드하는 것이 더 빠른 경우도 있고, 큰 게임이나 OS 자체를 토렌트 파일로 배포하기도 합니다. 토렌트 자체를 사용하는 것은 불법이 아니지만, 토렌트를 통해서 저작권이 있는 파일을 배포하거나 불법적인 영상을 공유하는 것은 명백한 불법이니 주의해야 합니다. 

 

토렌트 다운로드 시 개인 정보가 유출됨

다른 큰 문제점은 토렌트 파일을 다운로드하는 것 자체만으로도 사용자 동의 없이 개인 정보가 특정 서버에 의해서 수집, 검색되고 있습니다.  문제의 사이트는 IKnowWhatYouDownload.com이며 수집하는 정보는 ① 개인별 IP 주소와 다운로드한 토렌트 파일과  ② 특정 파일별 다운로드 통계 및 배포 지역과 IP주소 등입니다. 또한 ③ 타인의 SNS 아이디를 입력하면 해당 계정의 IP를 추적하고, 다운로드하는 토렌트 파일을 모니터링할 수 있다고 합니다.  타인의 토렌트 다운로드를 모니터링하는 것은 Spyware와 큰 차이가 없는 것 같습니다. 

 

이 사이트는 러시아 사이트로 보이고, 러시아에서는 개인정보인 IP 수집에 대한 법적인 규제가 없는 것으로 추정됩니다. 수집된 정보를 어떻게 활용하는지는 알 수가 없으며 특별한 규제 없이 회사 이익을 위해서 제한 없이 사용할 수도 있다는 불길한 예감(?)이 듭니다. 

 

iknowwhatyoudownload.com 에서 수집하는 IP 주소별 토렌트 다운로드 통계
iknowwhatyoudownload.com 에서 수집하는 토렌트 다운로드 통계
iknowwhatyoudownload.com 에서 SNS 를 통해서 토렌트 다운로드 정보를 모니터링

 

IKnowWhatYouDownload 에서 개인정보 수집 방법

 IKnowWhatYouDownload 사이트에서는 아래와 같이 데이터 수집 방법을 설명하고 있습니다. 

 

내용을 요약하면 토렌트 사이트를 파싱하고 ② DHT(Distributed Hash Table) 네트워크의 모니터링을 통해서 개인정보를 수집한다고 합니다. 해당 사이트는 6백만 개 이상의 토렌트 파일을 분류하고 있고, 매일 2억 개 이상의 보내는 사람과 받는 사람의 IP 주소를 수집하고 있다고 합니다. 

 

토렌트 파일을 다운로드나 배포하는 순간  IKnowWhatYouDownload 사이트에서 모니터링하는 토렌트 파일이라면 서버에서 IP 주소가 수집되고 저장되는 것으로 추정됩니다.  즉, 토렌트를 사용하면 100% 확률로 IP 주소가 수집되는 것은 아니만 해당 사이트가 수집 중인 6백만 중 하나라도 다운로드했다면 IP가 등록되고  토렌트 사용 내역을 타인이 검색할 수 도 있습니다. 

iknowwhatyoudownload.com 에서 개인정보 수집 방법

 



토렌트 사용 시 '익명' 모드로 다운로드하는 방법

 IKnowWhatYouDownload 사이트에서는 IP 주소를 저장하지 않기 위해서는 토렌트 파일을 익명 모드로 다운로드해야 하고 익명성을 보장을 받기 위해서는 Proxy 서버 또는 VPN 서버를 사용해야 합니다.  Proxy 서버는 기술적으로 IP 주소를 100% 숨길 수 있는 방법은 아니며 해당 사이트에 노출되는 확률을 줄이는 수준입니다. 

 

토렌트 클라이언트는 이전 포스팅에서 설명한 LibreTorrrent 기준이며, 다른 대부분의 토렌트 클라이언트도 Proxy 설정과 익명 모드를 지원하고 있습니다.  (물론 Proxy 설정과 익명 모드 미지원하는 경우도 있습니다. 이 경우 클라이언트 변경을 추천드립니다.)

 

  1. 토렌트 클라이언트 실행 후 설정 - 네트워크 메뉴 진입
  2. 네트워크 메뉴에서 Proxy 서버 설정: Socks5 설정, Socks5 서버의 IP 주소, Sock5 포트 번호 입력
  3. 익명성 동작 체크 
  4. 암호화 모드를 지원하는 경우 암호화 '선호'  암호화 '요구'로 변경 (일부 망에서 암호화하지 않는 경우 토렌트 패킷을 막는다고 합니다.)

 

토렌트 사용 시 익명 모드로 다운로드하는 방법

 

Sock5 서버 설정은 이전 포스팅인 kibua20.tistory.com/153을 참고해주세요.  상용 Socks5 서버를 사용해도 무방하나 제 경우에는 무료로 제공하는 오라클 클라우드 가상 머신에 dante 서버를 올려서 사용 중에 있습니다. 서버 설정 시 주의해야 할 점은 Socks port (제 경우에는 1080번)의 방화벽을 개방해야 하고 TCP 뿐 아니라 UDP 포트를 같이 개방해야 합니다. 토렌트 내부에서 트래커 추가 시 UDP를 사용하는 경우가 많습니다. 

 

˙ 서버 방화벽에서 TCP와 UDP 프로토콜에 대해서 Socks 포트를 개방해야 함

$ sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 1080 -m state --state NEW,ESTABLISHED -j ACCEPT

$ sudo iptables -I INPUT 5 -i ens3 -p udp --dport 1080 -m state --state NEW,ESTABLISHED -j ACCEPT

 

Proxy 서버와 익명 모드를 사용하는 경우 이를 지원하는 Peer수가 줄어들기 때문에 다운로드가 느려집니다. 이 경우에는  Tracker를 추가해서 속도를 보안할 수 있습니다.  Tracker 추가 방법은 링크를 확인해주세요. (아래 파일은 2020년 12월 기준으로 tracker 리스트입니다. )

 

˙토렌트 클라이언트에서 속도 느려짐을 보완하기 하기 위해서 Tracker 서버 리스틀 추가해야 함

2020_12_torrent_tracker_list.txt
0.01MB

 

참고로, Sock5 서버의 정상 동작 여부를 확인하기 위해서는 '익명 모드를 off' 하고 토렌트를 다운로드하면 아래와 같이 Proxy server의 IP를 검색하면 다운로드한 토렌트 파일을 확인할 수 있습니다.  

Sock5 서버의 정상 동작여부

 

관련 글

[개발환경/Tips] - 광고 없는 Android 토렌트 앱: LibreTorrent

[개발환경/Google Cloud Platform] - 회사에서 방화벽으로 막혀 있는 사이트 우회 방법: SSH tunneling 과 Socks5 활용

[모바일 SW 개발/REST API] - 외부 망에서 Localhost를 접속하기: ngrok (일부 무료)

[모바일 SW 개발/REST API] - 외부 망에서 Localhost를 접속하기: localtunnel (무료, domain제공)

[모바일 SW 개발/REST API] - 자주 사용하는 curl 명령어 옵션과 예제

[모바일 SW 개발/REST API] - 무료 REST API 테스트 프로그램: Postman (설치, 활용법)

[모바일 SW 개발/REST API] - 공공 데이터 Open API 사용법: 코로나 확진자 현황 API (sample code)

[개발환경/우분투] - 우분투 20.04에서 nVidia HDMI 소리 송출 안되는 문제 해결 방법

[개발환경/Web Server] - Website 전체 백업 방법: HTTrack (티스토리 백업에 활용)

[개발환경/Google Cloud Platform] - IP Address CIDR 표현법과 사용 예

[개발환경/Oracle Cloud] - 오라클 클라우드 '평생' 무료 VM 만들기 (Google Cloud 무료 조건 비교)

[모바일 SW 개발/Python] - Python: JSON 개념과 json 모듈 사용법

[개발환경/Google Cloud Platform] - GCP(Google Cloud) 로컬 PC에서 VM에 로그인 없이 바로 SSH로 바로 접속: 다른 SSH 클라이언트 사용 및 SSH Key 등록

[개발환경/Google Cloud Platform] - GCP(Google Cloud) 원격 데스크 톱(RDP) 연결: Linux 용 Chrome RDP

[개발환경/Google Cloud Platform] - GCP(Google Cloud) 방화벽 설정: 프로토콜과 포트를 사용 허용 또는 거부하기

[모바일 SW 개발/REST API] - Service Account(JWT)을 활용한 Google Calendar API 사용

[개발환경/우분투] - Ubuntu에서 토렌트 다운로드하기 (Transmission)




댓글