0

我有使用 MySQL 存储数据的 freeradius 服务器。

以下是我的数据库

radcheck table
+-----+----------+--------------------+----+--------------+
| id  | username | attribute          | op | value        |
+-----+----------+--------------------+----+--------------+
| 474 | varun    | Cleartext-Password | := | sunshine3003 |
+-----+----------+--------------------+----+--------------+


radreply table
+----+----------+--------------+----+-------+
| id | username | attribute    | op | value |
+----+----------+--------------+----+-------+
|  1 | varun    | Fall-Through | =  | Yes   |
+----+----------+--------------+----+-------+


radgroupcheck table
+----+-----------+-----------+----+-------+
| id | groupname | attribute | op | value |
+----+-----------+-----------+----+-------+
|  1 | group1    | Auth-Type | := | PAP |
|  2 | eapgroup  | Auth-Type | := | EAP   |
+----+-----------+-----------+----+-------+


radusergroup table
+----------+-----------+----------+
| username | groupname | priority |
+----------+-----------+----------+
| varun    | eapgroup  |        1 |
| varun    | group1    |        2 |
+----------+-----------+----------+

我们有两个不同的客户端,它们使用两种不同的身份验证类型和自由半径,一个使用并发送属性PAP中的密码。User-Password

和另一个客户端用户EAP,并将密码发送到EAP-MessageMessage-Authenticator

我想要的是,当 PAP 无法进行身份验证或User-Password属性不存在时,它应该使用EAPasAuth-Type并且如果EAP并且Message-Authenticator不存在于 radius 属性中,它应该回复 Access-reject 或 Authentication failure 消息。

任何帮助将不胜感激

4

1 回答 1

0

你不应该control:Auth-Type手动设置。该属性的存在是为了使该部分中的模块authorize可以与服务器的其余部分进行通信,该类型应在该authenticate部分中运行。

为了Auth-Type根据属性进行设置,您应该在授权部分依次列出 pap、eap 等模块,它们将检查必要的属性是否在请求中并确定正确的 Auth-Type 值。

如果您想制定策略来限制某些用户使用某些类型的身份验证,请在回复列表(radgroupreply 表)中设置 Auth-Type,并检查在授权部分末尾设置了哪个 Auth-Type。

authorize {
    eap
    pap
    sql

    if (control:Auth-Type != reply:Auth-Type) {
        reject
    }
}
于 2017-08-18T21:16:56.163 回答