【问题标题】:In freeradius, is there a way to refer to LDAP attributes in post-auth section?在 freeradius 中,有没有办法在授权后部分引用 LDAP 属性?
【发布时间】:2023-02-22 07:45:17
【问题描述】:

我们使用 ntlm 命令行将 PEAP 与 mschapv2 结合使用。我们想从 LDAP 分配用户 ip

在我们从 ActiveDirectory 得到回复后,我们通过绑定到 LDAP 并查看他们的组来进行授权检查:

  post-auth {
    if (network-auth-LDAP-Group == "xxxcompany-vpn") {
        noop
    } else {
        reject
    }
    Post-Auth-Type REJECT {
      attr_filter.access_reject
    }
  }

我们想从 LDAP 属性中提取 10.1.2.3。我们尝试通过将其放入 LDAP 配置来执行文档中所说的操作:

update {
   reply:Framed-IP-Address := 'radiusFramedIPAddress'
}

在 LDAP 中,我们导入了模式并将用户的 radiusFramedIPAddress 设置为 10.1.2.3

但是,我们在日志中看不到正在更新的 Framed-IP-Address 值。

我们想在回复中设置Framed-Ip-Address

  post-auth {
    if (network-auth-LDAP-Group == "xxxcompany-vpn") {
       update reply {
         Framed-Ip-Address := 10.1.2.3
       }
    } else {
        reject
    }
    Post-Auth-Type REJECT {
      attr_filter.access_reject
    }
  }

然而,这有效 ^ 有没有办法在授权后部分引用 LDAP 属性?是这样的吗?

  post-auth {
    if (network-auth-LDAP-Group == "xxxcompany-vpn") {
       update reply {
         Framed-Ip-Address := %{ldap:'radiusFramedIpAddress'}
       }
    } else {
        reject
    }
    Post-Auth-Type REJECT {
      attr_filter.access_reject
    }
  }

【问题讨论】:

    标签: ldap vpn freeradius


    【解决方案1】:

    这花费了比必要更多的脑力,但是,我们想出了一种方法来做到这一点:

      post-auth {
        if (network-auth-LDAP-Group == "xxxcompany-vpn") {
          update control {
            &Tmp-radiusFramedIPAddress := "%{%{network-auth:ldap:///ou=people,dc=division,dc=company,dc=com?radiusFramedIPAddress?one?(uid=%{%{Stripped-User-Name}:-%{User-Name}})}:-0.0.0.0}"
          }
          if (&control:Tmp-radiusFramedIPAddress != "0.0.0.0") {
            update reply {
              Framed-IP-Address := "%{control:Tmp-radiusFramedIPAddress}"
              MS-Primary-DNS-Server := 10.1.1.1
            }
            updated
          } else {
            noop
          }
        } else {
          reject
        }
        Post-Auth-Type REJECT {
          attr_filter.access_reject
        }
      }
    

    本质上,如果您是正确的 LDAP 组的成员,请尝试在用户的 radiusFramedIPAddress 属性中查找 IP。如果找到,它将返回 ip 地址并将其放入 StrongSwan 将使用的半径框架地址。如果用户没有在 LDAP 中分配 IP,它 noops 出来,用户将从池中获取一个地址。

    我希望这可以帮助别人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-08
      • 2016-02-26
      • 2015-12-27
      • 1970-01-01
      • 2021-02-19
      • 2016-08-24
      • 2018-04-28
      • 1970-01-01
      相关资源
      最近更新 更多