我所拥有的:debian 上的 freeradius 2.1.10,配置为使用数据库。
现在的工作原理:网络上有很多设备和用户,用户登录设备进行配置等等。用户可以登录任何东西。例如,某些设备 (ciscos),radius 上的用户帐户带有cisco-avpair
限制个人在 cisco 设备上可以做什么和不能做什么的权限(属性)。
对于特定的特殊情况,我还希望 freeradius 做什么:有一个特殊的设备,只有选择的用户才能进行身份验证。其他所有人都应该被拒绝访问。(因此,比上面的 cisco 示例更严格)。
我认为我应该做的是首先定义我自己的属性,例如company-special-privilege
,这样我就可以为数据库中的某些用户设置它的值为0
or 1
。然后在policy.conf
.
我要问的是:从来没有做过策略,我不明白它们在 freeradius 配置的其余部分中的应用位置(我应该把我的special_access
策略放在哪里)。也不确定如何制定它,但以下伪代码应该代表我想要的:
special_access {
if (request to log in $special_device_ip) {
if ($username company-special-privilege) {
reject #
}
}
}
从上面我不知道如何获取设备 IP 或用户设置的属性。我不会在第二个条件下对属性执行 == 1 以防用户没有该属性,因为我不知道这意味着什么,但任何没有 1 的用户都必须被拒绝。
你应该把它放在节
raddb/policy.conf
里面policy {}
。然后他们可以像普通模块一样被引用(通过他们的名字),在授权、认证、后认证等......FreeRADIUS 中的策略本质上是宏,它们不是函数,它们不接受参数。
定义一个特殊的属性来控制政策决策很好,
raddb/dictionary
除非你有一个 IANA 号码并且想要旋转你自己的自定义字典,否则就这样做。一种更简单的方法可能是直接查询 SQL。我不确定您要具体做什么,但这里有一个示例可能会有所帮助...根据需要进行修改
感谢我在http://linotp.org/doc/2.6/part-installation/integration/index.html上找到的一些信息,如果您使用 MySQL 数据库中的 nas 表,您可以使用以下配置。在
nas
表中,您有每个设备组的 IP 范围,因此如果您的设备在特定 IP 范围内,则将使用该策略:在文件
sites-enabled/default
中,您参考了该政策;并在
policy.conf
你写你的政策。此策略首先检查nas
表中的受限前缀,然后检查用户是否具有足够的权限当然,在您
radusergroup
在 SQL 查询中引用的表中,您添加了一个额外的列,您可以在其中允许特定用户具有额外的权限。在这种情况下,我写了这样的政策;
Cisco-AVPair := "shell:priv-lvl=15"
peter1
则只是获得正常权限。!= '1'
),它将获得策略中提到的权利。update reply
您可以使用reject
来完全阻止此(peter
和peter2
)用户的访问。它可能会变得很复杂,但这对我有用。