我们已经部署了 Radius 服务器(Freeradius 3.x)并将其连接到我们的 LDAP 数据库(ForgeRock OpenDJ)。
我们已经成功地为 EAP-TTLS配置了有效的证书并将其设置为默认连接方法。(几乎所有其他设置都保留为默认值)
但是,当 EAP-TTLS 建立时,密码是使用 PAP 传输的。我不是网络专家,但我读到 PAP 不安全,不应该使用?(我觉得网上有很多令人困惑的材料)
如果我尝试使用任何其他方法(例如 MS-CHAPv2)登录,则会失败并出现各种错误:
FAILED: No NT/LM-Password. Cannot perform authentication'
或者
freeradius_1 | (22) eap_md5: ERROR: Cleartext-Password is required for EAP-MD5 authentication
它显然需要额外的配置。
问题是,当我们在 2019 年拥有 EAP-TTLS 时,我们 PAP 可以吗?还是我们应该考虑将不同的类型设置为默认值?
我们的 LDAP 对密码进行了哈希处理(显然),所以我们还有其他选择吗?根据我找到的这份文件,这似乎是我们唯一的选择。
在这种情况下,如果服务器提供的证书由请求者正确验证,则由 EAP-TLS/TLS 提供机密性(防止窥探)和完整性(防止修改)。
这里的关键是服务器的证书是正确验证的。如果不是,那么攻击者可以建立一个蜜罐网络,向请求者提供一个假证书,然后获取明文凭据。
任何重视安全的组织都将实施 EAP-TLS(无需密码)或在其无线客户端上运行可分解的安装程序(SecureW2、Cloudpath、eduroamCAT - 如果这是用于 eduroam)以正确配置 802.1X 身份验证设置。
上次我检查 Windows 10 时,特别是没有实现任何类型的证书/SSID 固定,因此表明您在初始身份验证尝试期间信任服务器的证书实际上并没有增加任何安全性。对于使用不同证书的后续身份验证尝试,请求者会很乐意向您提供新证书的指纹,而不会显示任何不匹配的迹象。解决此问题的唯一方法是手动或使用可分解的安装程序(如上所述)为无线网络显式设置证书验证设置(受信任的 CA、预期的主题名称模式)。
要回答关于哪些 TTLS/PEAP 内部方法可以与 LDAP 一起使用的其他问题,如果您使用 LDAPv3 身份验证绑定来验证用户身份,那么是的,只有 PAP 或 GTC(请参阅 PEAPv0/GTC)可以使用。它们都以几乎相同的方式运行。
如果您在 RADIUS 服务器上拉回散列并在本地进行比较,并存储用户密码的 NT-Password 散列以及您正在使用的任何其他散列,那么这允许您执行 MSCHAPv2。
不过老实说,NT-Passwords 使用极弱的散列(MD4),所以它几乎和在 OpenLDAP 中存储明文一样糟糕。您需要权衡 OpenLDAP 安装被破坏的可能性、所有哈希值被盗/破解的风险、有人发起 MITM 攻击的可能性以及密码子集被盗的风险。
最后要注意的是,如果您使用的是 EAP-PWD,那么在请求者和 RADIUS 服务器上对使用密码的散列副本的支持有限,但这种 EAP 方法在 Linux 环境之外并未得到广泛支持。
我对 TBH 的情况非常不满意,但是让每个人都采用新的 EAP 方法需要多个供应商的巨大努力。
在 FreeRADIUS 方面唯一可以实现的就是在证书验证设置上设置“抽查”,并纠正任何未能通过它们的用户。如何做到这一点是通过用一个无效的证书动态地替换提供给请求者的证书,并验证请求者是否向 RADIUS 服务器返回了正确的警报 (invalid_ca)。这将导致身份验证失败(如果一切正常),但请求者也会很快重试,所以只要抽查很少发生,这没什么大不了的。