為何靜態 Tor 出口節點 IP 清單很快就會過時
Tor 出口節點 IP 清單,是 Tor 流量離開網路、抵達一般網站時所使用的公開位址清單,而只存一次的副本立刻就會開始過時。出口中繼節點由志願者營運,它們不斷加入、離開並更換位址,因此任何凍結在檔案中或寫死在防火牆規則裡的清單,都會在數小時內偏離現實。
清單為何變動得這麼快
Tor 網路大約每小時發布一次共識(consensus),列出目前正在運行的中繼節點及其持有的旗標,包括 Exit 旗標。中繼節點由個人、大學、非營利組織與主機代管客戶營運,其中許多運行在租用的虛擬伺服器上,這些伺服器會被取消、重新佈建,或在供應商之間遷移。當中繼節點停止運作時,其位址會回到主機代管的位址池,並可能被配給完全無關的客戶。當新的出口出現時,在你再次抓取之前,你的副本並不知道它的存在。
出口政策又增添了另一層複雜性。中繼節點可以只對某些連接埠作為出口,而對其他則否,營運者也可以在不更改位址的情況下變更政策。僅記錄位址的清單無法呈現這種細微差別,因此它會高估每個 IP 的作用,同時又漏掉新加入者。
過時的清單會出什麼問題
有兩種失效模式,兩者都會讓你付出代價。第一種是漏報:剛啟動的出口不在你的清單上,所以你原本打算差別對待的流量沒有被標記就通過了。第二種是誤報,通常危害更大。一個曾經是出口的位址,現在已是一般的主機代管客戶、小型企業或住宅線路,但你被凍結的清單仍將它標示為 Tor。真實使用者因為他們並未做的事而被挑戰或封鎖,卻沒有人注意到,因為規則在設定中看起來是正確的。
過時的清單也會誘使人們封鎖整個範圍來彌補缺口。這會使誤報成倍增加,因為位於主機代管範圍中的中繼節點的鄰居,通常是不相關的服務。如果你想進一步了解為何僅憑 Tor 旗標是拒絕存取的薄弱理由,請見 Tor 出口節點解析。
更新鮮的做法是什麼樣子
解決之道不是巧妙的比對,而是縮短更新間隔,並提供讓條目老化淘汰的方式。依排程抓取清單,以原子方式取代而非無止境地附加,並將資料的年齡視為答案的一部分。如果你上次成功更新的時間超出你的容忍範圍,請傾向於較柔和的回應,例如挑戰驗證,而不是直接封鎖。
ipto 將此作為一項服務來提供:VPN、Tor 與濫用威脅情資來源每 6 小時更新一次,IP 與 ASN 資料集則每日更新。IP 查詢會在回傳 is_vpn、is_abuser 和 is_datacenter 的同時回傳 is_tor,因此你可以針對每次請求讀取當前狀態,而不必自行維護檔案。你可以在 VPN、Tor 與 Proxy 檢查工具中試用某個位址,或在威脅情資來源頁面瀏覽已發布的清單,了解目前的資料是什麼樣子。
即使是六小時也不是即時,對此保持坦誠是值得的。一小時前才啟動的中繼節點,可能還不在資料中,而已停止運作的節點,在下次更新之前可能仍被標記。負面結果代表「未知為 Tor」,而不是「肯定乾淨」。
使用 Tor 資料而不過度依賴
由於清單總是有些許誤差,請建立能容忍錯誤的決策。將 Tor 旗標與其他證據結合,而不是單獨依其行動。IP 濫用檢查工具會跨多個來源進行交叉佐證,有助於區分重視隱私的訪客與真正行為不當的位址,而詐欺分數檢查工具則將數個訊號整合成你可以設定門檻的單一 0 到 100 值。
- 快取查詢的時間要短於來源的更新間隔,而不是數天。
- 優先採用挑戰驗證、速率限制或額外驗證步驟,而非永久封鎖。
- 記錄是哪個訊號觸發了動作,以便日後檢視誤報。
- 重新檢查你先前封鎖過的位址;對某個 IP 的舊決定可能已不再適用。
核心重點很簡單:Tor 網路是個移動的目標,Tor 清單有用的特性在於其新鮮度,而不是其大小。請將任何靜態快照視為歷史紀錄,並優先採用具有明確更新頻率、可供你推敲的資料。