web-dev-qa-db-ja.com

freeRADIUSでユーザーごとにCalling-Station-Idを使用するにはどうすればよいですか?

usersファイルに適切な情報を直接含めることにより、すべてのユーザーをRADIUSのMac-IDの小さなセットに制限しようとしています。すべてのユーザーが1台のMacに制限されていても問題ありません。サーバーは、Ubuntu13.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ファイルにはMacIDを上記の形式に正規化するrewrite.calling_station_id関数があり、これはpreprocessの直後にavailable-sites/defaultで呼び出されます。 freeradius -Xを実行すると、適切にフォーマットされたmac-idがログに表示されます。ただし、要求は拒否されます。チェックがCalling-Station-Id =* "a1b2c3d4e5f6"に置き換えられた場合でも、属性が存在する場合は常に合格するはずですが、要求は拒否されます。ただし、それがCalling-Station-Id !* "a1b2c3d4e5f6"に置き換えられた場合、リクエストに属性がnotが存在する場合にのみ渡されることになり、リクエストは受け入れられました。

対照的に、radclientを使用すると、期待される動作が観察されます。構成ファイルと関連ログは以下にリンクされています。 /etc/freeradiusフォルダー全体がリンクされており、次の4つの場合のログも含まれています。数2が唯一の予期しない動作であることに注意してください。

  1. nexus-without-mac-successusersファイルには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-上記の4つのログ
  • wg102.cfg-アクセスポイントの構成
  • snapshot.tar.gz-上記のすべてを含むtarball
2
ronno

外部リクエストの属性を内部サーバーに提供していません。

セットする copy_tunnel_request = yes in 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制御属性を設定しません。

3