如何在 freeRADIUS 中基於每個使用者使用 Calling-Station-Id?

如何在 freeRADIUS 中基於每個使用者使用 Calling-Station-Id?

我試圖透過直接在文件中包含適當的訊息,將每個使用者限制為 RADIUS 中的一小組 Mac-ID users。即使每個使用者僅限於一台 Mac,也是可以接受的。伺服器正在執行 Ubuntu 13.10 儲存庫中的 FreeRADIUS 版本 2.1.12。使用的身份驗證是 PEAP 和 MSCHAPv2。

當實體用戶端 (Nexus 5) 嘗試透過存取點 (Netgear WG-102) 進行連線時,FreeRADIUS 似乎會識別存取請求中的 Mac-id,但不會在檢查中使用它。在我目前的測試設定中,網路上唯一的裝置是 Radius 伺服器、存取點和測試用戶端。文件中的條目users設定如下:

testuser   NT-Password := "<hash>", Calling-Station-Id == "a1b2c3d4e5f6"

policy.conf文件具有rewrite.calling_station_id將 Mac id 規範化為上述格式的函數,該函數available-sites/defaultpreprocess.格式正確的 mac-id 顯示在運行日誌中freeradius -X。然而,請求被拒絕。即使檢查被替換為Calling-Station-Id =* "a1b2c3d4e5f6"只要屬性剛剛存在就應該通過的檢查,請求也會被拒絕。但是,如果將其替換為Calling-Station-Id !* "a1b2c3d4e5f6",則僅當屬性為不是存在於請求中,則請求被接受。

相反,如果我使用radclient,則會觀察到預期的行為。設定檔和相關日誌連結如下。整個/etc/freeradius資料夾是連結的,還包含以下四種情況的日誌。請注意,第二個是唯一的意外行為:

  1. nexus-without-mac-success:該users檔案沒有mac檢查且身份驗證成功
  2. nexus-with-mac-failusers檔案的 MAC 位址正確,但驗證失敗
  3. radclient-with-mac-expected-behaviour-fail-with-wrong: radclient 使用錯誤的 mac 位址執行並被拒絕:echo "User-Name=testuser,User-Password=test,Calling-Station-Id=8c:3a:e3:19:70:0e" | radclient localhost auth testing123
  4. radclient-with-mac-expected-behaviour-success-with-correct:radclient 使用正確的 mac 位址運行並被接受:echo "User-Name=testuser,User-Password=test,Calling-Station-Id=8c:3a:e3:19:70:0f" | radclient localhost auth testing123

難道不能用Calling-Station-Id這種方式嗎?與之相反http://wiki.freeradius.org/guide/Mac-Auth,我希望對每個用戶限制 Mac-Id,因此如果您有其他方法可以做到這一點,那也將受到歡迎。

http://portmasters.com/tech/docs/radius/userinfo.html#1004825似乎說這是正確的做法,儘管它是在 1999 年寫的。

http://www.cmi.ac.in/~ronno/freeradius-test包含以下內容:

  • freeradius- 內容/etc/freeradius
  • logs- 上面描述的四個日誌
  • wg102.cfg- 接入點配置
  • snapshot.tar.gz- 包含上述所有內容的 tarball

答案1

您尚未將外部請求中的屬性傳遞給內部伺服器。

設定(在 eap.conf 或 mods-available/eap 中)copy_tunnel_request = yeseap{peap{}}

https://github.com/FreeRADIUS/freeradius-server/blob/master/raddb/mods-available/eap#L594

內部伺服器中的檔案呼叫無權存取外部請求中的 Calling-Station-ID 屬性,不符合任何項目,因此不會設定 NT-Password 控制屬性。

相關內容