痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 7552|回復: 3

pfsense 建置 Captive portal

[複製鏈接]
發表於 2011-3-30 11:07:46 | 顯示全部樓層 |閱讀模式
http://bbs.pigoo.com/redirect.ph ... 52&fromuid=2959
有不少人問我~ 這種的驗證方法要怎麼做?
呵呵... 其實也不難~ 靠的就是 pfsense 的 Captive Portal

PS: 以下文章建議需要有基本的網路基礎、Linux系統(Unix Like)的經驗、HTML語法基本撰寫等~ 來閱讀會比較省力!


OK 首先了解這部份的架構以後~ 這樣才能構建構出需要的部份~
簡單來說~ 這種驗證的方法就好比 閘道管控 一樣~ 好比台灣警察在各個重要的交通路口設置臨檢一樣的意思~所以 Captive Portal 的建置也就強烈建置在需要管制網段網路的咽喉點~ 這樣才能夠達到管制的效果~

實做的架構(其實這個架構算是簡化我自己家裡的網路所繪製出來的)
http://farm6.static.flickr.com/5183/5570792148_500f470935_z.jpg

所建議的Captive Portal建置架構 與 驗證使用者 的方式
http://farm6.static.flickr.com/5295/5570210435_a9b8b572ea_z.jpg

簡單來說~ 由於我家的架構比較小~ 所以會把很多功能集中在 pfsense 上頭來運作~
假設架構需求要更大的話~ 建議將這些功能給予分別獨立開來~ 才不會造成機器過度的負擔~
而這次的pfsense身負著DHCP Server、Captive Portal的功能~ (省的每次除了要key驗證之外,還得自己先輸入IP等網路組態)這篇文章應該也會順帶一提關於NAT架構內的DNS解析~ (如何讓NAT內部用戶端來解析NAT內部的伺服端)

此篇文章會講到的部份
http://farm6.static.flickr.com/5062/5571250414_e0ebe32c7a.jpg
都在 Service 這個大項當中~~~



Service → DNS Forwarder 的部份

(若不想用 FQDN 解析 Captive Portal Server 的話,此步驟可跳過)







何為 Forwarding DNS?

http://linux.vbird.org/linux_server/0350dns.php#forwards





簡單來說 DNS Forwarder 是一個DNS的中間人~ 而簡單的DNS解析功能亦可藉此替內部網路用戶端來解析內部網路伺服端的主機。



http://farm6.static.flickr.com/5226/5570421739_7ca63d547f_z.jpg

這個部份就是內部沒有建置伺服器環境(或者存取內部伺服器僅使用區網IP而不做解析)的資料流





假設內部有建置伺服器,而外部的DNS已經設定好解析的部份 (而NAT Port Forward也設OK) 並能外部能存取內部的伺服器

http://farm6.static.flickr.com/5174/5571010912_94b9bcb9c2_z.jpg

在於沒有建置 DNS Forwarder 的狀況~ 就會像這張圖一樣~





外部能夠存取內部的伺服器;但內部卻無法透過FQDN來存取內部的伺服器(僅能用IP來存取)

http://farm6.static.flickr.com/5149/5571010940_0fb56f5d37_z.jpg
在NAT內部的用戶端輸入FQDN後一樣會向 Internet 上的 DNS 要求名稱解析,而Internet DNS 伺服器解析到 NAT 的 WAN IP 後。此時內部用戶會直接向NAT提出連線需求。然而內部用戶端提出要求後到NAT。此時仍屬NAT內部的運作,而無法直接轉向到內部伺服端,因而 time out 的情況出現。

這樣的狀況解決方法有不少~
1. DNS Loopback 的功能打開 (視設備的支援能力而定)
2. DNS Forwarder (視設備的支援能力而定) → 剛好這次就是講這個部份的解決方案
3. 修改內部每個用戶端 hosts 檔 (太麻煩!若有100台電腦;豈不是得設定100次?)


以這次的 DNS Forwarder 的解決方案來說~ 他的解析過程會變成下面這兩張圖

1. 連線到外部的伺服端
http://farm6.static.flickr.com/5182/5573273806_360fd4de1a_z.jpg
假設內部用戶端要連線到外部端,首先就得從 DNS Forwarder 那邊進行解析的行為,而 DNS Forwarder 就好像是代理人,幫忙各個用戶端來進行解析的行為。
若在自身的紀錄當中找不到相關的解析部分,則會從外部的DNS來要求解析。


2. 連線到內部的伺服端
http://farm6.static.flickr.com/5177/5570421833_8303a81053_z.jpg
假設內部用戶端需要連線到內部端,跟上面一樣也是從DNS Forwarder 那邊進行解析;與上方不同的,就是查詢自身的紀錄~




OK! DNS Forwarder 的理論大致上算是講完了,接下來開始實做 pfsense 的 DNS Forwarder


http://farm6.static.flickr.com/5136/5570572757_4edc8f9428_z.jpg
首先勾選 啟動 DNS Forwarder

http://farm6.static.flickr.com/5221/5570572793_0f8375e85d_z.jpg
由於我已經先建立好一個FQDN 以便內部解析~ 可以看一下設定的UI(介面) 應該是不太難設定才對~

http://farm6.static.flickr.com/5295/5570572899_057f8d85d4_z.jpg
開個cmd來測試一下這條紀錄是否生效! (前提: 自身的DNS組態必須為DNS Forwarder的IP,要麻自己設定 or 由DHCP來配發這組態,DHCP部份容後說明)
執行 ping 指令就可以得知 auth.anpan.idv.tw 這個FQDN所解析出來的IP為 10.0.150.254

http://farm6.static.flickr.com/5029/5571161614_e0b63fc6f1_z.jpg
首先來增加一筆記錄吧~ 點選+的符號(看圖比較清楚)

http://farm6.static.flickr.com/5171/5571161540_ae0db65083_z.jpg
設定相關的組態,新增完後請點選 Save


http://farm6.static.flickr.com/5180/5571161580_91b2e280c9_z.jpg
可看到剛剛新增的條目。確認OK後,套用(Apply) 並 存檔(Save)。

http://farm6.static.flickr.com/5070/5570572921_4f92feafc2_z.jpg
確認解析的狀況

以上就是 DNS Forwarder 的介紹




再來就是設定 DHCP Server 的部份
http://farm6.static.flickr.com/5054/5571242412_74b3a83b74_z.jpg

http://farm6.static.flickr.com/5058/5570654507_a9f09ba579_z.jpg

http://farm6.static.flickr.com/5055/5571242484_db352e8665_z.jpg




最後就是重頭戲(主角) Captive Portal 的設定了

簡單講一下 Captive Portal 的驗證部份
http://farm6.static.flickr.com/5136/5570745961_020bddb6a9_z.jpg
Captive Portal 簡單來說就是一個網頁的驗證機制~
經過驗證機制後,再給予放行or阻止~ 成果部份~ 我想在這邊我就不囉唆!
(一開始的網頁連結已經有了答案) 那就開始講如何設定的部份吧!


http://farm6.static.flickr.com/5262/5571018711_4b84086b88_z.jpg
設定的大綱~

首先設定主要的設定項目~
http://farm6.static.flickr.com/5053/5571605874_a97a1aecc6_z.jpg
PS: 一般來說~ Captive Portal 只是一個管制的手段,所以用在有線的介面或者無線的介面都可。只不過一般來說都會用在無線方面居多。

http://farm6.static.flickr.com/5132/5571018865_440ca7efbe_z.jpg
這裡我補充的就是 若只是要迫使用戶端網頁導向到該所指定的網頁,而不驗證用戶端,則可選不認證。
(此章節僅說明 Local users 部分,RADIUS部分請閱讀官方網站文件區)

http://farm6.static.flickr.com/5227/5571018927_6cc35a6ba1_z.jpg
僅RADIUS啟用後 此部分才能設定

http://farm6.static.flickr.com/5098/5571606076_637b961b35_z.jpg
OK! 這邊有個HTTPS的部份,請注意! 雖然無線網路有他的加密機制(WEP、WPA、WPA2..等) 不過加密的效果有限~~~
若以WEP為例,以目前電腦硬體的破解應該只需要30秒就能破解完成~ 可以藉由破解加密過而竊聽無線網路的封包~
其他種方法:如Hide SSID(隱藏SSID)以及MAC Filter(MAC過濾)機制~ 一樣可以破解~ Hide SSID 可以藉由Sniffer 蒐集封包後得知SSID。而MAC Filter 一樣的手法;只不過得多一道偽造MAC的部份來偽裝合法MAC位置來通過MAC Filter。而這些機制都是屬於 OSI L2 的部份,當然越高階層的機制對於硬體與系統的要求也越高。 而HTTPS算是高層的加密機制~~~至少在於驗證的部份,可以保有隱密性~~~ 而且破解所需要的程度與時間也要來的高~~~ 而且可以搭配原有的 WEP WPA 等的加密機制(加密再加密!)

OK~~~ 如何實做 HTTPS 的驗證呢?
不要偷懶在pfsense上頭產生key(除非僅使用IP才可使用pfsense上頭產生;若使用FQDN則會造成整個服務的終止)!
產生兩個Key得在其他裝有openssl套件的Unix Like OS上頭產生~
先連線到其他台裝有openssl套件的Unix Like OS 的OS吧~~
http://farm6.static.flickr.com/5178/5573247656_efff2c78cf_z.jpg

http://farm6.static.flickr.com/5012/5571019399_c7ca2c5950_z.jpg
(RH派確認是否openssl套件,可使用 rpm -qa | grep openssl)
產生CA
openssl req -new -nodes > cert.csr

http://farm6.static.flickr.com/5012/5571019399_c7ca2c5950_z.jpg

http://farm6.static.flickr.com/5011/5572901208_d7ab3ba859_z.jpg

http://farm6.static.flickr.com/5022/5571019453_40112d3062_z.jpg
拿CA來產生公鑰與私鑰
openssl x509 -in cert.csr -out cert.pem -req -signkey privkey.pem -days 9999

http://farm6.static.flickr.com/5147/5571606524_2ddb765414_z.jpg
cat cert.pem
並將此檔的內容全部貼到 HTTPS Certificate 欄位當中

http://farm6.static.flickr.com/5309/5571606562_0598f8c200_z.jpg
cat privkey.pem
將此檔的內容全部貼到 HTTPS Private Key 欄位當中

http://farm6.static.flickr.com/5094/5572901290_1d4fa4251b_z.jpg


http://farm6.static.flickr.com/5139/5571019075_c4afe70445_z.jpg
上傳驗證網頁以及驗證失敗的網頁~~~

撰寫驗證入口網頁(偷懶的話,pfsense的那個註解就有相關的程式碼)
http://farm6.static.flickr.com/5025/5572328909_2733e11d13_z.jpg

撰寫驗證失敗網頁
http://farm6.static.flickr.com/5189/5572328931_788d2c3223_z.jpg
http://www.flickr.com/photos/442 ... s/l/in/photostream/


http://farm6.static.flickr.com/5139/5571019075_c4afe70445_z.jpg
設定完成後,可別忘了按下 Save 儲存設定(同時也會將剛剛設定的key內容與網頁檔一併儲存到 pfsense 當中)

http://farm6.static.flickr.com/5136/5570745961_020bddb6a9_z.jpg

再來就是設定 MAC By-Pass 的部份
http://farm6.static.flickr.com/5186/5571606210_02099d93fd_z.jpg

設定 IP By-Pass 的部份
http://farm6.static.flickr.com/5305/5571606268_3035ef2450_z.jpg
From 應該就很容易理解~ 首先從DHCP保留區配發給Captive Portal區域內的機器~
於是會配發IP給 Captive Portal 內的機器~ 而這個部份的 To / From
To 就是從非驗證端連入驗證端 (允許) : 一般這種方法就是在需驗證端設置伺服器來讓非需驗證端連入,而不受到 Captive Portal 的干擾。
From 就是從驗證端連入非驗證端 (允許) : 一般這種方法就好比 IP By-Pass 的方式 讓需驗證端by-pass到非驗證端,而不受Captive Portal的干擾。

設定 Captive Portal 帳號與密碼 於 pfsense Local端
http://farm6.static.flickr.com/5023/5571019233_41f58bafc3_z.jpg

http://farm6.static.flickr.com/5225/5571019287_89808dd2c9_z.jpg

檔案管理
http://farm6.static.flickr.com/5020/5571019339_7fe71280de_z.jpg


除錯: 曾因為CA Key錯誤而導致整個 Captive Portal 服務終止。原因則是HTTPS Server Name與CA當中的 Common Name 不相符而導致。測試的方式很簡單,只需把HTTPS功能拿掉就可以測試是否問題出在這裡了。

Captive Portal 伺服端的設定就到這裡告一段落了~~~ 切記:每次設定完後 記得 Apply Changes 以及 Save 即可~

評分

1

查看全部評分

發表於 2011-3-30 13:40:31 | 顯示全部樓層
這已經超乎家庭網路建制了
基本上已經可以算是中小型公司用的網路建制規模

當初考MCSE 也沒有這麼複雜. CISCO的認證看來還是比MCSE 高級得多
 樓主| 發表於 2011-3-31 08:38:40 | 顯示全部樓層
當初考MCSE 也沒有這麼複雜. CISCO的認證看來還是比MCSE 高級得多
pemit 發表於 2011-3-30 01:40 PM http://bbs.pigoo.com/images/common/back.gif



事實上 CISCO認證 也沒講到這些(例:Captive Portal、CA建立...等)
CISCO R&S 的領域當中,課程所講的大都是網路觀念以及路由協議~~~
(NA提到的靜態路由、RIP、動態路由協議的簡易說明以及許多基本的網路概念
而NP的部份,是將 路由 與 交換 分別獨立出來~ 並且增加了除錯的部份~
而NP路由部分則是需要有NA扎實的基礎才能夠輕鬆的往上讀~~~
至於NP交換的部份則是需要重新建立觀念與實做會比較好)


pfsense 雖然是 base on BSD 但操作的方法已經大部分為GUI的部份了
 樓主| 發表於 2011-3-31 23:19:34 | 顯示全部樓層
http://www.mml.com.tw/topic/index?id=124499
關於 NAT 內部DNS的討論~
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-5-2 05:28 PM , Processed in 0.090345 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.