本系列文利用真實世界的例子,示範如何使用 freeRadius 設置 802.1X 認證環境。
- 使用 freeRadius 設置 802.1X 認證環境(一)基礎概念篇
- 使用 freeRadius 設置 802.1X 認證環境(二)EAP-MD5篇 ←目前在這裡
- 使用 freeRadius 設置 802.1X 認證環境(三)EAP-TLS篇
目錄:
(一) 模擬情境
- 某公司的連外 AP 設定成 802.1X 與 WPA2-Enterprise,只讓被認證過的使用者連出去外部網路
- 公司某位員工小明想連上外部網路,AP 會先把小明的這個請求提供給 Radius Server
- Radius Server 會問小明一些問題來判斷其身分
- 小明依據問題種類不同,提供不同資料給 Rasius Server (ex: 帳號密碼 or Certificate)
- Rasius Server 驗證無誤後,會告訴AP說 “我認可小明可以連上外部網路”
- AP 聽到指令後,就會幫小明連上外部網路
流程如下圖:
(二) 架構圖
實驗架構圖如下:
802.1X 三大主要角色分別為:
- Authentication Server - 認證伺服器
- 我們使用 open source 的 freeRadius 裝在
ubuntu 12.02
上 - ubuntu 裝在 windows 7 的 VMware 上,用 bridge 模式橋接真實 IP
- IP =
140.113.240.16
- Radius 安裝好之後,預設 radiusd 使用的 port 為
UDP/1812
- 我們使用 open source 的 freeRadius 裝在
- Authenticater - 橋梁
- 我們使用 ASUS RT-N16 wireless AP
- 對外 IP =
140.113.240.11
- Gateway, DNS 之類請自己設定
- Supplicant - 使用者
- 我們使用
ubuntu 12.02
裝在 Asus 不知名筆電上 - 此筆電透過上述 AP 連上外網 Internet
- 我們使用
(三) Configure Authentication Server
1. 設定VM
沒時間寫,學弟們先自己設定看看,很簡單。
2. 安裝 Radius
這個步驟要來安裝 freeRadius。
Ubuntu 可以直接下載 package: http://packages.ubuntu.com/search?keywords=freeradius
或下載 Version 2.2.3: tar.gz (PGP Signature) 然後自己編譯 (建議自己編譯,有些 package 會修改預設的設定)。
./configure
make
sudo make install
如果 configure 過程出現 configure: error: failed locating OpenSSL headers,請參閱這篇文章。
freeRadius 預設安裝路徑為 /usr/local/etc/raddb/
。
3. 產生預設的 Certificate
安裝完成後,用 root 執行 radiusd -X 使其產生預設 certificates:
$ radiusd -X
如果出現 radiusd: error while loading shared libraries: libfreeradius-radius-020203.so
的話,請參考這篇文章。
用 nmap 可以看見預設的 radius service 監聽 1812/UDP port。
4. 設定允許連上 Radius 的 Clients (上述之 Authenticater)
接著設定 Radius 的 clients,不要被 clients 這個單字搞混;
Radius 的 clients 指的是上述的 Authenticater!
# sudo su
$ cd /usr/local/etc/raddb/
$ vim clients.conf
檔案裏面就有詳盡的設定說明,請自行參閱。
5. 設定允許連上 Radius 的 Users (上述之 Supplicant)
接著設定 Radius 的 users;
Radius 的 users 指的是上述的 Supplicant
$ vim users
上面的 client 會將這邊的 user 導向 Radius Server 認證。
6. 執行 radtest 測試
這個步驟是在 local 端測試上述 Clients 與 Users 有沒有設定好。
首先執行 radiusd -X (debug 模式)
$ radiusd -X
接著在另一視窗執行 radtest 測試,參數部分輸入 user_name, user_passwd, Radius_IP, Radius_port, client_pass
因為 client 就是這台電腦的IP (localhost / 127.0.0.1),所以 client_pass 預設是 testing123。
上圖是成功的畫面。失敗的話下面會有失敗訊息告訴你為什麼失敗。
而 radiusd -X 的視窗應該會出現類似下圖的訊息:
這樣 Radius 就設定好了。
(四) Configure Authenticater
每個 AP 的設定畫面不一定一樣,但都大同小異,下面為 ASUS RT-N16 wireless AP 的設定畫面。
1. 設定無線安全層級至 WPA2-Enterprise (為了啟用 802.1X 認證)
WPA2 更多資訊請參考 wikipedia。
2. 設定外部網路 IP,DNS,Gateway .. etc
3. 設定 Radius Server 位置、帳號密碼等等
這裡的連線密碼就是上面設在 /usr/local/etc/raddb/clients.cnf
的那個 secret ("love5566")
(五) Configure Supplicant
如果 Supplicant 是 Linux 系列的話,基本上不用特別設置,預設就裝有 xSupplicant 了 (原open1x,open source 的 802.1X supplicant application)。
直接連 AP 即可,username 跟 password 記得要填得跟 /usr/local/etc/raddb/users
內的一樣
之後會跳出 No Certificate 警告,使用 MD5 本來就沒有 Certificate,不用理他。
按下確定後, Supplicant 會把連線資料傳給 AP,AP 會將這些資料 forward 給 Radius 認證
如下圖中間部分
最後 Radius 認證成功的話,Supplicant 就可以連上 Internet 了。
此時剛剛的 radiusd -X 視窗訊息大致如下圖:
到這邊我們已經成功以 EAP-MD5 完成 802.1X 認證了。
本系列文利用真實世界的例子,示範如何使用 freeRadius 設置 802.1X 認證環境。