December 30, 2013

使用 freeRadius 設置 802.1X 認證環境(二)EAP-MD5篇

本系列文利用真實世界的例子,示範如何使用 freeRadius 設置 802.1X 認證環境。


目錄


(一) 模擬情境

  • 某公司的連外 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
  • 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 認證環境。

VoiceTube 看影片學英文