限制 FreeRADIUS 客户端使用相同的用户和密码从不同的 LAN 访问服务

限制 FreeRADIUS 客户端使用相同的用户和密码从不同的 LAN 访问服务

我已经FreeRADIUS在服务器上安装了,并且该服务器还管理两个 LAN(或可能更多)。假设 LAN A:192.168.1.0和 LAN B: 192.168.2.0。我将其与数据库FreeRADIUS结合使用。在我的表中,我插入了以下行:postgresradcheck

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

现在,我希望让从我的 FreeRADIUS 请求服务的客户端能够使用此用户名和密码进行自我身份验证,前提是它们是 LAN B 的一部分。

问题:有人可以建议我如何完成这件事吗?

我尝试再添加radcheck一行:username='myuser', attribute='NAS-IP-Address', op=':=', value='192.168.2.1',但是没有成功。

任何帮助,将不胜感激。

答案1

我以前没有使用过数据库后端,但是使用用户文件规则看起来如下:

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

基于此,我认为您需要radcheck表中的两个条目:

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

答案2

使用 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 地址

相关内容