将 FreeRADIUS 配置为仅支持 EAP TTLS PAP

我有一个仅支持 PAP 的外部 RADIUS 服务器。我已将 FreeRADIUS 2.2.4 配置为将 EAP-TTLS 隧道(从为 WPA2 Enterprise 配置的 WiFi 接入点)内的 PAP 请求代理到此 RADIUS 服务器,并使用 eapol_test 对其进行了测试。我可以手动将 PC 或 Mac 配置为仅发送 EAP-TTLS+PAP,但这并不是很理想。

当未配置的 WPA2 Enterprise 客户端连接时,它们会尝试 PEAP、LEAP 和 EAP-MD5。我禁用了大多数其他 EAP 类型,但似乎我需要在 TTLS 块中的 default_eap_type 中支持的至少一种其他 EAP 类型。我的 eap.conf 中未注释的部分如下:

eap {
    default_eap_type = ttls
    timer_expire     = 60
    ignore_unknown_eap_types = no
    cisco_accounting_username_bug = no
    max_sessions = 4096
    md5 {
    }
    tls {
        certdir = ${confdir}/certs
        cadir = ${confdir}/certs

        private_key_password = heythatsprivate
        private_key_file = ${certdir}/server.pem
        certificate_file = ${certdir}/server.pem
        dh_file = ${certdir}/dh
        random_file = /dev/urandom
        CA_path = ${cadir}
        cipher_list = "DEFAULT"
        make_cert_command = "${certdir}/bootstrap"
        ecdh_curve = "prime256v1"
        cache {
              enable = yes
              lifetime = 24 # hours
              max_entries = 255
        }
        verify {
        }
        ocsp {
              enable = no
              override_cert_url = yes
              url = "http://127.0.0.1/ocsp/"
        }
    }
    ttls {
        default_eap_type = md5 
        copy_request_to_tunnel = no
        use_tunneled_reply = no
        virtual_server = "inner-tunnel"
    }
}

有没有办法配置 FreeRADIUS,以便在 TTLS 内不允许 EAP 类型或在隧道内明确要求 PAP?

谢谢,-罗汉

stack overflow Configure FreeRADIUS to only support EAP TTLS PAP
原文答案

答案:

作者头像

尝试设置除默认服务器之外的新服务器...

server my-server {
   authorize { ... }

   authenticate { 
       eap
   }

   accounting { ... }
}

然后为第二次身份验证创建一个内部隧道

server my-tunnel {
     authorize {
          pap
     }
     ...
     authenticate {
         Auth-Type PAP {
            pap
         }
     }
     ...
}

您将需要修改您的 EAP 配置,如下所示:

eap {
            default_eap_type = ttls
            ...

            ttls {
                    default_eap_type = gtc
                    copy_request_to_tunnel = yes
                    use_tunneled_reply = yes
                    virtual_server = "my-tunnel"
            }
            ...
     }

然后为每个客户端指定您要使用哪个服务器来处理身份验证请求

client example {
    ipv6addr       = x.x.x.x
    netmask        = 32
    secret         = *******
    shortname      = example
    virtual_server = my-server
}

我相信这将使你想做的事情成为可能。

问候,

——埃尔南·加西亚