web-dev-qa-db-ja.com

FreeRADIUSクライアントが同じユーザーとパスワードで異なるLANからサービスにアクセスするように制限する

サーバーにFreeRADIUSをインストールし、このサーバーで2つのLAN(またはそれ以上)を管理しています。 LAN A:192.168.1.0、LAN B:192.168.2.0としましょう。 FreeRADIUSpostgresデータベースと組み合わせて使用​​しています。 radcheckテーブルに、次の行を挿入しました。

userbane='myuser', attribute='Password', op=':=', value='mypass'

ここで、FreeRADIUSにサービスを要求するクライアントが、LAN Bの一部である場合にのみ、このユーザー名とパスワードで自分自身を認証できるようにしたいと思います。

質問:これを行う方法を誰かに提案してもらえますか?

radcheckをもう1行username='myuser', attribute='NAS-IP-Address', op=':=', value='192.168.2.1'に入れようとしましたが、成功しませんでした。

どんな助けでもいただければ幸いです。

2
artaxerxe

これまでデータベースバックエンドを使用したことはありませんが、 sers ファイルを使用すると、ルールは次のようになります。

myuser  Cleartext-Password := "mypass", NAS-IP-Address == "192.168.2.1"

これに基づいて、radcheckテーブルに2つのエントリが必要だと思います。

usernane='myuser', attribute='Password', op=':=', value='mypass'
username='myuser', attribute='NAS-IP-Address', op='==', value='192.168.2.1'
3
mgorven

SQLデータベースを使用して、私はこれを次のように解決しました。

1)特別な行(site_id)を追加する

ALTER TABLE radcheck ADD site_id VARCHAR(30) NOT NULL default '0.0.0.0' AFTER value;

2)/etc/freeradius/sql/mysql/dialup.confを次のように変更します

authorize_check_query = "SELECT id, username, attribute, value, op, site_id, valid_from, valid_until \
  FROM ${authcheck_table} \
  WHERE username = '%{SQL-User-Name}' AND site_id='%{NAS-Identifier}' \
  ORDER BY id"

私の場合、NAS-Idを使用しましたが、%{NAS-Identifier}を%{NAS-IP-Address}に置き換え、オプションでsite_idをsite_ipに置き換えると、IPアドレスを使用してトリックを実行できます。

1
vinch100