如何在 freeRADIUS 中按使用者使用 Calling-Station-Id?
我試圖通過在
users
文件中直接包含適當的資訊,將每個使用者限制為 RADIUS 中的一小組 Mac-ID。即使每個使用者僅限於一台 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/default
在preprocess
. 正確格式化的 mac-id 出現在 running 的日誌中freeradius -X
。但是,請求被拒絕。即使檢查被替換Calling-Station-Id =* "a1b2c3d4e5f6"
為只要屬性存在就應該通過的檢查,請求也會被拒絕。但是,如果它被替換為,它應該僅在請求中不Calling-Station-Id !* "a1b2c3d4e5f6"
存在該屬性時才通過,則接受請求。相比之下,如果我使用
radclient
,則會觀察到預期的行為。配置文件和相關日誌連結如下。整個/etc/freeradius
文件夾是連結的,並且還包含以下四種情況的日誌。請注意,數字 2 是唯一的意外行為:
nexus-without-mac-success
:users
文件沒有mac檢查,認證成功nexus-with-mac-fail
:users
文件有正確的mac地址,認證失敗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
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
- 包含以上所有內容的壓縮包
您還沒有將外部請求中的屬性提供給內部伺服器。
設置
copy_tunnel_request = yes
在eap{peap{}}
(在 eap.conf 或 mods-available/eap 中)。https://github.com/FreeRADIUS/freeradius-server/blob/master/raddb/mods-available/eap#L594
內部伺服器中的文件呼叫無權訪問外部請求中的 Calling-Station-ID 屬性,不匹配任何條目,因此不設置 NT-Password 控制屬性。