[ Tor ] 架設暗網

沒事不要逛暗網,更別說是在暗網上架站了。
如果真的有什麼不可告人的秘密想要在暗網上架站分享,請務必遵守以下規則:
  • 不要在這台服務器上運行或做其它事情。
  • 在新服務器或VPS上進行全新安裝。
  • 不要保留或運行來自VPS提供商任何服務。
  • 用Paypal支付你的VPS服務,不過最好使用Bitcoin。
  • 不要向VPS提供關於你的任何身份信息。
  • 不要在這台服務器上運行Tor中繼,因為Tor中繼在真實世界的公開IP是公開的。
  • 不要從這台服務器發送電子郵件。
  • 不要運行討厭或卑鄙Web軟件。如果你的Web軟件有管理員登陸或管理員賬號,把密碼改成複雜的26個字符組成的密碼。很多Tor網站被攻破只是某人猜到了管理員登陸密碼。
  • 避免使用任何JavaScript之類腳本的Web軟件。
  • 確保你的Web應用不會洩露任何錯誤信息或身份信息,比如在錯誤信息中的真實公開IP。
  • 審查Web前端代碼,確保它不會從jquery.com、Google Fonts或任何外部服務拉取資源。
  • 及時做好VPS的安全更新。
以下只分享如何快速架站,安全的部分請自行拿捏。
首先先安裝 tor。
$ brew install tor  # mac
$
$ sudo apt-get install tor  # ubuntu
$ sudo update-rc.d -f tor disable  # 關閉自動啟動
安裝 Tor後,找個位置建立一個 tor_server資料夾和一個 config檔,如下。
. tor_server
└── torrc.in
接著編輯 torrc.in。
# torrc.in

HiddenServiceDir /path/to/tor_server/hidden_service/
HiddenServicePort 80 127.0.0.1:8000
執行 tor,並等待 tor連接至洋蔥網路。
$ tor -f torrc.in
Tor將會針對 HiddenServicePort上指定的網址( 127.0.0.1:8000)轉址為洋蔥網路的 port 80( http專屬的 port),官方說法是不需要特別用 SSL加密,tor有自己的加密機制。
Tor會在指定的路徑( HiddenServiceDir)建立 hidden_service資料夾,並在裡面新增文件 hostname和 private_key,hostname內為伺服器的網址,private_key為類 SSL的加密金鑰。
如果不喜歡 tor分配的網址,可以把 hidden_service資料夾刪掉重新執行 Tor,就會分配新網址了。
假如想要自己命名網址,可以使用 Shallot暴力產生對應的 RSA私鑰,但計算的時間就要自己斟酌了。
. tor_server
├── hidden_service
│   ├── hostname
│   └── private_key
└── torrc.in
等待 Tor連結的過程中,可以先簡單建立個 Django server。
$ pip install django  # 安裝 Django
$ django-admin src    # 建立 Django server
執行完成後資料夾結構如下。
. tor_server
├── hidden_service
│   ├── hostname
│   └── private_key
├── src
│   ├── manage.py
│   └── src
│       ├── __init__.py
│       ├── settings.py
│       ├── urls.py
│       └── wsgi.py
├── tcpServer.py
└── torrc.in
接著修改 setting.py中的 ALLOWED_HOSTS。 將 hostname中的連結和 localhost加入至 ALLOWED_HOSTS中如下。
ALLOWED_HOSTS = ['localhost','xxxxxxxxxxxxxxxx.onion']
server將只允許 ALLOWED_HOSTS中的 HOST進入。
修改後,切換路徑至 src並執行 Django。
$ cd src
$ python manage.py runserver 0.0.0.0:8000
接著就可以在 Tor browser上使用 hostname文件中提供的連結,連結到剛建立好的 Django server了。
* 注意
別以為伺服器這樣就很安全了,尤其是在暗網。
請不要使用"python manage.py runserver 0.0.0.0:8000"指令來啟動伺服器,而是使用 uWSGIASGI來提供本地端連線。
對外則使用代理程式 Nginx或 Apache做為唯一對外的窗口並做好安全設定,也請跟著 Django官網提供的 Checklist仔細的檢查 Django的安全設定。
本教程未作任何安全設定,請伺服器新手勿直接使用。

本文參考 Configuring Onion Services for TorTor Hidden (Onion) Services Best Practices和 如何架設.ONION網站

留言