與接入點不同的裝置上的強制門戶

與接入點不同的裝置上的強制門戶

我正在嘗試為家庭 WiFi 建立一個身份驗證系統,該系統與正在使用的存取點/路由器無關。這個身分驗證系統將嚴格遵循強制門戶模型,但我認為(自訂)強制門戶的細節並不重要。

為了實現這一目標,我想在便宜的裝置(如 Raspberry Pi)上託管強制入口網站和身份驗證。但是,在他們對自己進行身份驗證後,我希望用戶重新連接到不同的接入點。也就是說,樹莓派會僅有的執行身份驗證步驟,但不會充當經過驗證的使用者的正常使用存取點。同樣,最好這適用於任何具有普通密碼保護 WiFi 網路的接入點/路由器。

以下是此項目所需的登入流程:

  1. 用戶連接到支援 WiFi 的 Raspberry Pi
  2. 使用者被定向到 Pi 上託管的強制門戶網站並登錄
  3. (假設身份驗證成功)用戶與 Pi 斷開連接並連接到主接入點
  4. 使用者現在可以正常瀏覽網頁

有什麼方法可以完成這種事情嗎?我知道如何設定 Raspberry Pi 來充當兩個都接入點和強制門戶,但不僅僅是強制門戶。

答案1

雖然可以使用“Rube Goldberg”類型的佈置,但安全地做到這一點實際上並不可行。

我想這可以透過在PI 上自訂DHCP 路由器並在發布之前提供較短的租用時間並修改分發的IP 位址(並且不在路由器上啟用DHCP)來完成- 粗略地- 但這樣你就會有一個巨大的確保不能透過一些簡單的靜態尋址來繞過這一點。

您也許能夠在很大程度上實現與路由器的協作類似的目標,以禁止從強制門戶以外的任何設備將連接埠 DNS(連接埠 53 請求)連接到 WAN,並透過 DHCP 分發強制門戶 DNS,並擁有強制門戶為自己提供DNS 回應,直到用戶被釋放。不過,這可以透過簡單的 VPN 或隧道來破壞。

它比看起來要困難得多(我在業餘時間玩的東西 - 所以不多!),但根據你的路由器,會像“Wild Dog”這樣的東西 - 它內置於現代版本的 DD-WRT 中-為您工作- 看起來路由器執行底層捕獲,並將門戶工作移交給另一台設備。

答案2

鑑於OpenBSD 在Raspberry Pi 上運行,您可以使用authpf 讓每個用戶使用pubkey/password 驗證他/她的會話,並讓此類經過身份驗證的客戶端通過防火牆- 然而,它確實直接在負責過濾的路由器上效果最好。看https://www.openbsd.org/faq/pf/authpf.html和 google 取得實作範例。

更用戶友好的選項是這樣的https://coova.github.io/CoovaChilli/ 它似乎得到了積極維護,並且有 RADIUS 支援。

答案3

同樣,最好這適用於任何接入點/路由器

存取點處理 Wi-Fi(連結層),路由器處理 IP(網路層)。儘管它們通常組合成一個塑膠盒,但它們仍然執行兩種不同的功能。

因此,強制入口網站的想法是,沿著資料包常規路徑的裝置攔截它們並產生虛假的「重定向」回應,告訴使用者他們必須訪問登入頁面。重定向可以透過以下方式完成:

  • 預設閘道(路由器),透過使用 iptables 攔截整個 TCP 連線(最常見的方法);
  • DNS 伺服器,透過傳回「受控」伺服器的虛假 DNS 查找回應(不可靠且容易繞過);
  • 接入點或交換機,透過重寫封包標頭,使封包到達不同的網關(很稀少但技術上是可行的)...

然而,無論如何,你的「強制門戶」Raspberry插入到常規路徑中。即使您使用“假 DNS 伺服器”方法建立它(處理的流量非常少,但也很容易繞過),至少您需要重新設定主路由器以透過 DHCP 提供 Raspberry 的 IP 位址。

(許多廉價的無線路由器實際上不允許您配置那 – 我猜你必須關閉常規 DHCP 服務,並完全從 Raspberry 提供 DHCP 服務。


簡而言之,不,我不相信「即插即用」強制門戶設備可以透過這種方式實現。


事實上,從安全角度來看,它有重大問題。如果它Raspberry Pi 可以在沒有路由器配置的情況下簡單地連接並以某種方式攔截每個人的流量……那麼任何帶有惡意軟體的流氓客戶端也有可能簡單地連接並攔截每個人的流量。

相關內容