會想要寫這篇是因為前陣子警察施暴影片在 YouTube 上一直被下架。
Tor 最常用到的是「隱藏使用者」的功能:使用者從 Internet 連到 Tor network 的進入節點 (entry node) 後,透過全世界的 Tor 節點加密傳輸,最後在出口節點 (exit node) 再連回 Internet 上的服務,藉此隱匿行蹤。
另外一個比較少被提到的用途是「架站」,也就是 Hidden Service。
在傳統的 Internet 架構上,知道 IP address 就容易發現機器所在地,要抄台或是在 ISP 端直接 ban IP address 也就相對容易。而 Hidden Service 就是想把服務藏到 Tor network 裡,讓外部不知道是哪一台伺服器,達成無法審查內容的目標。
官方的文件是「Configuring Hidden Services for Tor」這份。而這邊以 Ubuntu 12.04 的環境為例。
首先是先架設 web server,可以是 apache 或是 nginx,這不是本篇文章的重點 :p
然後在 /etc/tor/torrc
裡面加上:
HiddenServiceDir /var/lib/tor/hidden_service/ HiddenServicePort 80 127.0.0.1:80
表示 hidden service 的相關資料會放在 /var/lib/tor/hidden_service/
下,並且提供 port 80 的服務 (轉到本機 127.0.0.1 的 port 80)。
接下來重跑 tor:
service tor restart
然後看 hostname 是什麼:
cat /var/lib/tor/hidden_service/hostname
會看到一個 *.onion 格式的 hostname,像我架設的機器就會看到:
btyz5lgqirxipopo.onion
*.onion 的網址必須透過 Tor 的機制連,對一般人會比較麻煩。所以這邊要教的是透過 proxy 提供服務:
這樣就變得有很多用途...
只是用 Tor 開網站的話,可以裝 Tor Browser Bundle 不算太麻煩 https://www.torproject.org/projects/torbrowser.html.en