2015년 4월 3일 금요일

Raspberry Pi를 Tor relay로 사용하기


TOR(The Onion Router)는 온라인상에서 익명성을 보장하기 위한 시스템이다. Tor 클라이언트는 인터넷 트래픽을 직접 보내는 대신 전세계에 퍼져있는 Tor 네트웍을 통해 나눠 보내기 때문에 사용자의 위치나 내용을 감시하거나 분석하기 매우 힘들게 만든다.

그러므로 TOR가 제대로 기능하려면 매우 많은 서버가 필요하고, TOR 네트웍은 상업적 기관이 아니기 때문에 자발적인 지원자를 필요로 한다. 라즈베리 파이를 TOR 릴레이로 동작하게 만들어 자발적인 지원자들중에 한명이 될 수 있다.

먼저 'tor' 어카운트를 만들어 준다.

$ sudo adduser tor
$ sudo passwd tor

위의 명령을 입력해 tor 어카운트의 암호를 설정해준다.

다음은 tor 어카운트를 sudoers 파일에 넣어준다.

$ sudo vi /etc/sudoers

에디터로 파일을 오픈한 다음 맨 마지막에 다음을 추가해준다.

tor ALL = (ALL) ALL

그리고 시스템을 최신 내용으로 업데이트 해 준다.

$ sudo apt-get update
$ sudo apt-get upgrade

다음은 네트웍 설정을 dhcp 대신 static으로 변경해준다.

$ ifconfig
...
eth0 Link encap: Ethernet HWaddr 00:23:54:40:56:dc
        inet addr: 192.168.0.20 Bcast: 192.168.0.255 Mask: 255.255.255.0
...
$

위에서 inet addr과 mask를 어디에 써 놓는다.

그 다음 에디터로 /etc/network/interfaces 파일을 열어 내용을 수정한다.

$ vi /etc/network/interfaces

파일 내용에서 'iface eth0 inet dhcp' 라는 부분을 찾을 수 있을 것이다. 라즈베리 파이가 IP주소를 DHCP 서버에서 받아오도록 설정되어 있는데 이걸 static IP로 바꿔주는 것이다. 'iface eth0 inet dhcp'를 다음 내용으로 바꿔준다.

iface eth0 inet static
address 192.168.0.20
netmask 255.255.255.0
gateway 192.168.0.1

'address' 부분에는 라즈베리 파이가 사용할 IP주소를 써 준다. 원하는 주소를 고르면 되지만 가장 쉬운건 아까 위에서 적어 놓은 주소를 그대로 쓰는 것이다.
'netmask'는 아까 위에서 적은 내용을 그대로 써 준다.
'gateway'는 공유기의 IP주소이다.

 네트웍 설정이 끝났으면 이제 tor를 설치한다.

$ sudo apt-get install tor

설치가 끝나면 TOR 설정파일을 수정해 줄 필요가 있다. 설정파일 위치는 /etc/tor/torrc이다.
에디터로 열어 다음 내용을 필요에 따라 추가/수정해 준다.

SocketPort 0
Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort 9001
DirPort 9030
ExitPolicy reject *:*
Nickname xxx
RelayBandwidthRate 100KB    # Throttle traffic to 100KB/s
RelayBandwidthBurst 200KB   # But allow bursts up to 200KB/s

그리고 거의 모든 사람들이 공유기나 방화벽을 사용하고 있기 때문에, 그 경우는 공유기/방화벽 설정을 조정해 줄 필요가 있다. TOR 네트웍의 다른 노드들이 자신의 TOR 릴레이에 연결할 수 있도록 하려면 9030과 9001 포트를 열어줘야 한다. 9030은 디렉토리 서비스를 위해 필요하고, 9001은 릴레이 동작을 위해 필요하다. 이 부분의 설정은 각자 공유기/방화벽 메뉴얼을 참조해야 한다.

설정이 완료되었으면 tor 서버를 재시동 해 줘야 한다.

$ sudo /etc/init.d/tor restart

TOR가 재시동 되었다. 정상적으로 동작하는지 확인하려면 로그파일(/var/log/tor/log)을 보면 된다. 맨 끝쪽에 다음과 같은 내용이 있으면 모든것이 완료된 것이다.

Oct 18 22:59:21.104 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.

---------------------------------------------------------

브라우져가 TOR를 사용하도록 설정



TOR를 사용하려면 TOR 클라이언트가 필요하다. TOR 클라이언트는 모든 인터넷 트래픽을 Tor 네트웍으로 라우팅 해 준다. 당신의 존재를 인터넷에서 '안 보이게' 하기 위해 트래픽은 랜덤하게 선택된 여러 릴레이를 거친 후 TOR 네트웍을 빠져나가 목적지에 도착한다. 이렇게 하기 때문에 ISP 또는 네트웍을 모니터링 하는 사람이 당신이 어떤 웹사이트를 억세스 하는지 볼 수 없다. 또한 웹사이트가 당신의 실제 위치나 IP주소를 알 수 없게 해 준다. 심지어 릴레이 조차도 현재 전달하는 트래픽이 누가 요청한 것인지 알 수 없다. Tor 네트웍 내의 모든 트래픽은 암호화 된다.

위의 그림이 어떤 식으로 동작하는지 보여준다.

예를 들어 Tor를 통해 instructables.com을 억세스 한다고 해 보자. ISP는 당신이 이 사이트를 억세스 하고 있는걸 알 수 없다. ISP가 볼 수 있는건 단지 암호화 된 Tor 트래픽일 뿐이다. Tor 릴레이는 당신의 트래픽이 마침내 exit node에 도달할 때 까지 트래픽을 계속 전달한다. Exit node가 당신 대신 instructables.com과 통신을 하게 된다. - instructables.com 입장에서 보면 자신을 억세스 한건 당신이 아니고 exit node일 뿐이다. instructables.com에서 응답을 받으면 exit node는 그 응답을 릴레이에게 돌려보내준다. 하지만 릴레이도 돌려보내는 트래픽이 실제로 어디서 끝나는지는 알 수가 없다.

이런식으로 Tor는 익명성을 보장해 검열에서 자유롭게 해 준다.

하지만 이 모든 훌륭한 기능에는 댓가가 따른다. Tor를 사용하면 인터넷 억세스 속도가 느려진다. 그러므로 유튜브 접근을 막아놓은 나라에서도 유튜브 비디오를 볼 수는 있더라도, 비디오가 로드될 때 까지 상당한 시간이 걸릴 수 있다.

각 OS별 Tor 클라이언트는 다음 주소에서 받을 수 있다.

Windows: https://www.torproject.org/docs/tor-doc-windows.html.en

Linux/Unix/BSD: https://www.torproject.org/docs/tor-doc-unix.html.en

Debian/Ubuntu: https://www.torproject.org/docs/debian.html.en

Mac OSX: https://www.torproject.org/docs/tor-doc-osx.html.en

Android: https://www.torproject.org/docs/android.html.en



댓글 없음:

댓글 쓰기