2

我需要帮助通过 LDAP 使用 WPA2 Enterprise 配置 freeradius。

LDAP 通常适用于其他服务,但它不适用于 WPA2E。

我们还管理 WPA2E 以使用硬编码的用户名/密码。所以我们知道所有的组件都靠自己工作,但不要一起工作。

我们将 freeradius 服务器配置得很好,可以与 LDAP 服务一起使用。

任何帮助表示赞赏

这是我对自由半径模块/ldap 文件的 ldap 设置(与此问题几乎无关)

ldap {
    server = "ldapmaster.domain.com,ldapslave.domain.com"
    identity = "uid=binder,ou=services,dc=security,dc=domain,dc=com"
    password = asdfasdfasdf
    basedn = "ou=internal,ou=users,dc=security,dc=domain,dc=com"
    filter = "(mail=%{%{Stripped-User-Name}:-%{User-Name}})"
    ldap_connections_number = 5
    max_uses = 0
    timeout = 4
    timelimit = 3
    net_timeout = 1

    tls {
            start_tls = yes
            require_cert    = "never"
    }

    dictionary_mapping = ${confdir}/ldap.attrmap
    password_attribute = userPassword
    edir_account_policy_check = no

    keepalive {
            idle = 60
            probes = 3
            interval = 3
    }}

eap.conf 也有以下设置

eap {
default_eap_type = peap
timer_expire     = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
max_sessions = 4096

md5 {
}

leap {
}

gtc {
        auth_type = PAP
}

tls {
        certdir = ${confdir}/certs
        cadir = ${confdir}/certs
        private_key_password = whatever
        private_key_file = ${certdir}/server.key
        certificate_file = ${certdir}/server.pem
        CA_file = ${cadir}/ca.pem
        dh_file = ${certdir}/dh
        random_file = /dev/urandom
        CA_path = ${cadir}
        cipher_list = "DEFAULT"
        make_cert_command = "${certdir}/bootstrap"

        cache {
              enable = no
              max_entries = 255
        }

        verify {
        }
}

ttls {
        default_eap_type = md5
        copy_request_to_tunnel = no
        use_tunneled_reply = no
        virtual_server = "inner-tunnel"
}


peap {
        default_eap_type = mschapv2
        copy_request_to_tunnel = no
        use_tunneled_reply = no
        virtual_server = "inner-tunnel"
}

mschapv2 {
}}

还启用了两个站点,默认和内部隧道:

默认

authorize {
    preprocess
    suffix
    eap {
        ok = return
    }
    expiration
    logintime
    ldap
}
authenticate {
    eap
    ldap
}

内隧道

authorize {
    mschap
    update control {
           Proxy-To-Realm := LOCAL
    }
    eap {
        ok = return
    }
    expiration
    ldap
    logintime
}
authenticate {
    Auth-Type MS-CHAP {
        mschap
    }
    eap
    ldap
}

这是我在调试日志中看到的示例日志:

https://gist.github.com/anonymous/10483144

4

1 回答 1

1

您似乎删除了 and 之间的符号sites-available/inner-tunnel链接sites-enabled/inner-tunnel

如果您查看日志,它会抱怨它找不到内部隧道服务器,它需要在 PEAP 身份验证的 TLS 隧道中执行 MSCHAPv2 身份验证。

server  {
  PEAP: Setting User-Name to emre@domain.com
Sending tunneled request
        EAP-Message = 0x0205001a01656d72654071756269746469676974616c2e636f6d
        FreeRADIUS-Proxied-To = 127.0.0.1
        User-Name = "emre@domain.com"
server inner-tunnel {
No such virtual server "inner-tunnel"
} # server inner-tunnel

您将符号链接添加回来,并在内部隧道服务器的授权部分顶部列出 ldap 模块。您还需要使用 ldap attrmap 文件将保存用户的 Cleartext-Password 的属性映射到 User-Password 属性。

如果目录中没有用户的 Cleartext-Password(例如,如果它是散列的),那么您应该使用 EAP-TTLS-PAP,并在内部隧道服务器的身份验证部分列出 LDAP 模块,然后添加:

if (User-Password) {
    update control {
        Auth-Type := LDAP
    }
}

到内部隧道服务器的授权部分。

于 2014-04-14T19:14:30.557 回答