.onion 是一種域名後綴,專門用於 Tor 瀏覽器。通過此域名能在 Tor 瀏覽器上訪問你的 洋蔥網站 ,實質上是 tor 反代了本地的一個 Web 監聽的端口。
適用系統:Debian 系發行版,包括 Ubuntu 和 Armbian,其他發行版按流程稍改命令一般也可。
走通預計時間:25 分鐘
I might have made some mistakes, please let me know if I’ve gotten anything wrong!
註冊 .onion 不需要向域名管理機構和域名註冊商購買,而是通過計算生成,只不過是一個隨機字符串,目前使用的 v3 域名由 56 個小寫字母或 2 到 7 之間的數字組成。如果想得到指定的字符串,需要通過大量計算試出。比如 Facebook 非常漂亮的 .onion v2 域名 – facebookcorewwwi.onion,要暴力解出這樣的結果,密碼學上的評估是以 1.5Ghz 處理器要 260 萬年。
AhFei 在一台 5950X 單線程的 VDS 上,連續 43 小時算出第一個符合 vfly2com*.onion 規律的域名,具體方法在下面。
洋蔥網站的本來目的是保持伺服器的匿名性,也就是避免洩露源伺服器的信息,比如 IP。這樣的特點,既可以被用來保護揭露陰暗的正義之士,但同時,也能被利用去隱藏陰暗的真面目。
悄悄滴進村,打槍滴不要
深夜很有氛圍。
如果想盡量保持伺服器的匿名性,下面有一些注意事項:
- 不要在這台伺服器上運行任何其他服務。
- 不要在這台伺服器上運行 Tor 中繼,因為 Tor 中繼的 IP 是公開的。
- 不要向 VPS 廠商提供關於你的任何身份信息。盡量用加密貨幣支付。
- 在伺服器上進行全新安裝,且不要保留來自 VPS 提供商那兒的任何服務。
- 確保 Web 軟件安全無後門,使用強密碼。審查代碼,避免軟件從任何外部服務拉取資源。
- 確保洋蔥網站不會洩露任何報錯信息或身份信息。
- 及時做好 VPS 的安全更新。
官方提供的安全建議:
- Operational Security.
- Onion services best practices by Riseup Collective.
- OnionScan is a tool to check if your onionsite is leaking information that could compromise your anonymity like your server IP address.
搭建洋蔥網站的流程很簡單:安裝 tor ,運行一個 Web 軟件,配置 tor 讓它反代 Web 軟件。
官方教程: Tor Project | Set up Your Onion Service
安裝 Tor#
官方教程: Tor Project | How to install Tor
注意: 使用 root 執行命令
apt update && apt upgrade && apt install apt-transport-https
目前官方的庫只支持
amd64
、arm64
和i386
三種架構的伺服器,可以用dpkg --print-architecture
查看。
創建一個新文件在 /etc/apt/sources.list.d/
,文件名是 tor.list
cd /etc/apt/sources.list.d/ && vim tor.list
添加以下內容:
替換 <DISTRIBUTION>
為系統發行版的名字,可以運行 lsb_release -c
或 cat /etc/debian_version
查看當前系統發行版。
deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org <DISTRIBUTION> main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org <DISTRIBUTION> main
比如對於 Debian 11 ,它的代號是 bullseye,就填入下面的。
deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org bullseye main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org bullseye main
如果想嘗試實驗版,用這種格式
tor-experimental-<DISTRIBUTION>
,又或者是 nightly buildstor-nightly-main-<DISTRIBUTION>
執行下面命令,添加 gpg key ,它為包簽名。
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
安裝 tor 和 tor debian keyring(作用,to help keep our signing key current):
apt update && apt install tor deb.torproject.org-keyring
運行一個 web 伺服器#
可以是 Nginx,Apache,或者任何其他的。這裡用 python3 運行簡單的做演示:
mkdir ~/tor_service && cd ~/tor_service && \
echo '<html><body>Vfly2.com!</body></html>' > index.html
運行 web 伺服器
python3 -m http.server --bind 127.0.0.1 8080
可以用 curl 檢驗是否成功運行
curl 127.0.0.1:8080
用 systemd 在目錄 /root/tor_service 持久化運行
添加配置文件
sudo vim /etc/systemd/system/tor_service.service
無須任何改動,複製即可
[Unit]
Description=Python HTTP Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/root/tor_service
ExecStart=/usr/bin/python3 -m http.server --bind 127.0.0.1 8080
[Install]
WantedBy=multi-user.target
重新加載
sudo systemctl daemon-reload
設置開機自啟,並立即運行
sudo systemctl enable --now tor_service
方便讀者使用 👇
sudo systemctl status tor_service
sudo systemctl stop tor_service
sudo systemctl start tor_service
配置 Tor Onion Service#
Tor 的配置文件名是 torrc
, 根據系統的不同,其位置也可能不同,找到它,然後編輯:
whereis tor
# tor: /usr/bin/tor /usr/sbin/tor /etc/tor /usr/share/tor /usr/share/man/man1/tor.1.gz
cd /etc/tor && vim torrc
添加下面兩行(先自定義)
HiddenServiceDir /var/lib/tor/my_website/
HiddenServicePort 80 127.0.0.1:80
- HiddenServiceDir 。指定存放 “Onion Service 的信息和 cryptographic keys” 的目錄。這個目錄會在 Tor 運行後自動創建。
- HiddenServicePort 。指定兩個端口,前一個 80 是在 Tor 網絡中網站的端口,後一個 80 是伺服器上網站監聽的端口。Tor 將 Tor 網絡中 80 端口收到的信息都轉發到伺服器的 80 端口。根據實際運行的 web 伺服器修改後一個端口。
比如這樣:
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8080
保存退出
如果使用 Unix sockets 而不是 TCP socket,能避免洩露本機網絡給洋蔥服務,會有更好的安全性,如下:
HiddenServiceDir /var/lib/tor/my-website/
HiddenServicePort 80 unix:/var/run/tor-my-website.sock
不過僅作補充,一般用戶也無需考慮。
重啟 Tor 並驗證它是否工作#
sudo systemctl restart tor
如果成功重啟了,那配置文件就沒有錯誤,一般就完成了。
如果失敗,可以查看日誌查找原因:
journalctl -f -e -u tor@default
訪問你的洋蔥網站#
到 HiddenServiceDir
目錄,找到名為 hostname
的文件,它包含了你的 onion v3 網址。
cat /var/lib/tor/hidden_service/hostname
# 看著就是一堆隨機字符串,另一個是 AhFei 暴力計算的
# bq7yvamkogvqidw6qgeyzo4bnqvxd6ed246evk3rfu6xplzdkwak2aid.onion
# vfly2com5ogzrtpfpnsdfqwt6p2eclebjuxi24ps2jeujnikuypvfeqd.onion
其他文件是 Onion Service keys,保證這些文件的隱秘性是重要又急迫的,務必重視,如果洩露了 keys ,其他人就可以假冒你的 Onion Service。
接下來就可以用 Tor Browser 訪問你的洋蔥網站了,使用上面的 onion v3 網址來訪問: http://vfly2com5ogzrtpfpnsdfqwt6p2eclebjuxi24ps2jeujnikuypvfeqd.onion/ 。
不過這樣配置下的網站任何人都可以訪問,也就是能直接看到網站內容。如果想增加一個驗證,有憑證的人才能連接服務,看這個:Tor Project | Client Authorization ,這才是網絡最隱秘的地方。(郵件和微信也是)
暴力計算獲取 Onion V3 域名#
.onion 的域名生成是私鑰 >(rsa)> 公鑰 >(sha1)> 雜湊值 >(base32 編碼)> 得到最終的 .onion。
一個使用 CPU 計算的工具:Releases · cathugger/mkp224o (github.com)
前置條件
sudo apt install gcc libc6-dev libsodium-dev make autoconf
編譯暴力計算工具#
下載項目
git clone https://github.com/cathugger/mkp224o.git
進入項目目錄
cd mkp224o
生成配置腳本(如果是 git clone 就沒有,下載發行的壓縮包裡就有)
./autogen.sh
生成 makefile
./configure # 默認能保證最大的兼容性
# ./configure --enable-amd64-51-30k # 添加合適的參數可以優化,
開始構建
make
構建完成後,在目錄就能看到編譯出的 mkp224o
。
後面的參數
--enable-amd64-51-30k
傳遞給配置腳本可以加快密鑰生成速度;不同 CPU 有不同的參數可以優化,運行./configure --help
查看所有可用選項。具體說明: https://github.com/cathugger/mkp224o/blob/master/OPTIMISATION.txt
--enable-amd64-51-30k
表示啟用 amd64-51-30k SUPERCOP ed25519 實現。該實現使用 AMD64 架構,採用了一種特定的優化方法,適用於性能要求較低的環境。--enable-amd64-64-24k
表示啟用 amd64-64-24k SUPERCOP ed25519 實現,採用了不同的優化策略,適用於性能要求更高的環境。
使用 mkp224o#
開始計算
./mkp224o -d vkeys vfly2com
- vkeys,是保存密鑰的目錄,
- vfly2com,生成的地址,要是 vfly2com 打頭,具體規則請看項目首頁。
可以用 tmux 或 screen 運行 mkp224o ,這樣斷線也可以繼續跑了。勿用 VPS 長時間跑,100% 占用
如何讓 tor 使用生成的密鑰?#
將密鑰文件夾(儘管技術上僅需要 hs_ed25519_secret_key
)複製到某位置:
sudo cp -r vfly2com...onion /var/lib/tor/vfly2_service
# 在前面,我們的密鑰文件夾是 /var/lib/tor/hidden_service/ ,因此選擇這裡
調整所有權和權限:
sudo chown -R debian-tor: /var/lib/tor/vfly2_service
sudo chmod -R 700 /var/lib/tor/vfly2_service
然後編輯 torrc
將密鑰文件夾改成新的:
sudo vim /etc/tor/torrc
HiddenServiceDir /var/lib/tor/vfly2_service
HiddenServicePort 80 127.0.0.1:8080
重新加載後,tor 應該會拾取它。
sudo systemctl reload tor
sudo systemctl status tor
此時在 Tor Browser 訪問你的新漂亮 .onion 地址看看吧!
原文鏈接: https://blog.vfly2.com/2023/10/building-an-onion-website/
版權聲明:本博客所有文章除特別聲明外,均為 AhFei 原創,採用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 承飞之咎 (blog.vfly2.com) 。
保持更新 ٩(・̤̀ᵕ・̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的實用技能,歡迎使用 RSS 訂閱,或在支持 ActivityPub 的平台關注 @[email protected]
接收新文章的推送,如果能留言互動就更好了。
可在 Telegram 群組 https://t.me/vfly2 交流依文章步驟遇到的問題。