Radius 客户端的每个 IP 有多个秘密
Multiple secrets per IP for radius client
我有各种连接到我的 radius 系统的路由器,它们的 IP 可能会改变,因为它通过 NAT 网络遍布整个网络..
每个路由器都有一个唯一的 secret
。全部在本地数据库中已知
现在我希望以一种方式设置 radius,使每个路由器都可以通过任何 IP 使用其自定义 secret
进行身份验证,但 freeradius 不允许我这样配置它:
client 0.0.0.0/0 {
shortname = test1
secret = AA
}
client 0.0.0.0/0 {
shortname = test2
secret = AB
}
有没有办法让我可以禁用 freeradius IP 检查(并且只检查秘密?),或者强制客户端 (/ip) 拥有超过 1 个秘密?
不幸的是,将秘密重新配置为完全相同是不可能的,因为一些路由器已经部署 非常 有限的网络访问。
我正在使用:
freeradius: FreeRADIUS Version 2.2.8, for host x86_64-pc-linux-gnu, built on Apr 5 2016 at 13:40:43
Copyright (C) 1999-2015 The FreeRADIUS server project and contributors.
为什么你想要的东西不能单独使用 RADIUS/FreeRADIUS
FreeRADIUS 在解码数据包之前将数据包与客户端进行匹配。在执行匹配之前解码数据包使针对服务器的 DoS 攻击更容易,因为虚假请求会导致服务器使用更多 CPU 时间。
忽略这个秘密也不是一个选择。接入点使用该秘密来解码受保护的属性,例如 WPA2 Enterprise 的 MPPE 密钥属性。
对于带 PAP 的围墙花园,共享密钥用于加密用户提供的明文密码,因此如果您不知道共享密钥,则无法取回明文值进行验证。
在 v4.0.x 中,计划是将来自未知 IP 地址的数据包发送到工作线程进行处理。此时,工作人员将完全了解所有属性,并可以使用该附加信息将秘密绑定到 IP 地址。
它仍然不允许您使用 RADIUS 属性映射传入数据包,但您不太可能看到两个 AP 交换其 WAN IP 的冲突...除了可能在 CGN 环境中有一个小 public池.
可用选项
- 使用 RADSEC(DTLS/TLS)。客户端使用证书进行验证,共享密钥是固定的。
- 在 AP 和您的 RADIUS 服务器之间建立隧道 (L2TP/IPSEC/PPP)。使用它来提供一致的本地 IP 地址。
- 运行 AP 双栈,希望能绕过 NAT。一些 ISP 已经开始提供带前缀委托的 IPv6 连接。在这些情况下,CPE 后面的所有设备都获得 public 可访问的 IPv6 地址。前缀可能会偶尔更改,因此您需要使用某种 'phone home' 系统,AP 可以在其中通知您的服务器其 public 地址。
- 开发您自己的软件,它会侦听传入的 RADIUS 数据包,并检查 IP 是否与您的客户端数据库中的 IP 匹配。如果没有,它会尝试所有共享秘密,看看是否有任何秘密可以用来验证数据包内容,然后更新该客户端的 IP 绑定。这可能最适合您的一组限制。
我认为 v2.x.x 也有一些补丁允许使用解码属性创建动态客户端,但是 v2.x.x 已经停产了一段时间,而且它们不是正式的支持。
我有各种连接到我的 radius 系统的路由器,它们的 IP 可能会改变,因为它通过 NAT 网络遍布整个网络..
每个路由器都有一个唯一的 secret
。全部在本地数据库中已知
现在我希望以一种方式设置 radius,使每个路由器都可以通过任何 IP 使用其自定义 secret
进行身份验证,但 freeradius 不允许我这样配置它:
client 0.0.0.0/0 {
shortname = test1
secret = AA
}
client 0.0.0.0/0 {
shortname = test2
secret = AB
}
有没有办法让我可以禁用 freeradius IP 检查(并且只检查秘密?),或者强制客户端 (/ip) 拥有超过 1 个秘密?
不幸的是,将秘密重新配置为完全相同是不可能的,因为一些路由器已经部署 非常 有限的网络访问。
我正在使用:
freeradius: FreeRADIUS Version 2.2.8, for host x86_64-pc-linux-gnu, built on Apr 5 2016 at 13:40:43
Copyright (C) 1999-2015 The FreeRADIUS server project and contributors.
为什么你想要的东西不能单独使用 RADIUS/FreeRADIUS
FreeRADIUS 在解码数据包之前将数据包与客户端进行匹配。在执行匹配之前解码数据包使针对服务器的 DoS 攻击更容易,因为虚假请求会导致服务器使用更多 CPU 时间。
忽略这个秘密也不是一个选择。接入点使用该秘密来解码受保护的属性,例如 WPA2 Enterprise 的 MPPE 密钥属性。
对于带 PAP 的围墙花园,共享密钥用于加密用户提供的明文密码,因此如果您不知道共享密钥,则无法取回明文值进行验证。
在 v4.0.x 中,计划是将来自未知 IP 地址的数据包发送到工作线程进行处理。此时,工作人员将完全了解所有属性,并可以使用该附加信息将秘密绑定到 IP 地址。
它仍然不允许您使用 RADIUS 属性映射传入数据包,但您不太可能看到两个 AP 交换其 WAN IP 的冲突...除了可能在 CGN 环境中有一个小 public池.
可用选项
- 使用 RADSEC(DTLS/TLS)。客户端使用证书进行验证,共享密钥是固定的。
- 在 AP 和您的 RADIUS 服务器之间建立隧道 (L2TP/IPSEC/PPP)。使用它来提供一致的本地 IP 地址。
- 运行 AP 双栈,希望能绕过 NAT。一些 ISP 已经开始提供带前缀委托的 IPv6 连接。在这些情况下,CPE 后面的所有设备都获得 public 可访问的 IPv6 地址。前缀可能会偶尔更改,因此您需要使用某种 'phone home' 系统,AP 可以在其中通知您的服务器其 public 地址。
- 开发您自己的软件,它会侦听传入的 RADIUS 数据包,并检查 IP 是否与您的客户端数据库中的 IP 匹配。如果没有,它会尝试所有共享秘密,看看是否有任何秘密可以用来验证数据包内容,然后更新该客户端的 IP 绑定。这可能最适合您的一组限制。
我认为 v2.x.x 也有一些补丁允许使用解码属性创建动态客户端,但是 v2.x.x 已经停产了一段时间,而且它们不是正式的支持。