通过Azure Active Directory进行FreeRADIUS身份验证

时间:2016-11-22 17:21:33

标签: azure freeradius

我刚刚配置了FreeRadius,但我想验证Azure AD中的用户。我知道可以将FreeRADIUS与Active Directory链接,但我找不到任何关于Azure AD的信息 有谁知道这是否可能?一种可能的解决方案是创建一个与Azure AD本地同步的AD,但我想直接这样做。

3 个答案:

答案 0 :(得分:1)

您必须在Azure AD域服务[1]中为托管域启用安全LDAP ,然后在FreeRadius [2]中配置 rlm_ldap 以使用Azure AD作为LDAP身份验证源。您可能希望使用访问控制来限制与Azure AD IP地址的连接,以阻止未经授权的客户端向您的域服务发送查询并提取敏感的用户信息。

参考

[1] https://docs.microsoft.com/en-us/azure/active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap

[2] https://wiki.freeradius.org/protocol/LDAP

答案 1 :(得分:1)

我有点困难。约翰·罗伯特·门多萨(John Robert Mendoza)是正确的,但有一些陷阱。这是我的步骤:

  1. 将AADDS和LDAP添加到AAD https://docs.microsoft.com/en-us/azure/active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap。 (确保端口安全,因为您现在可以进行暴力攻击。)
  2. 创建一个Linux虚拟机(我使用Ubuntu)在与您的AADDS相同的vnet中托管Freeradius
  3. 使用ldap安装freeradius 3.x
    sudo apt安装freeradius
    sudo apt安装freeradius-ldap
  4. 配置freeradius(我仅将ldap概述为AAD配置)
    一世。编辑/etc/freeradius/3.0/mods-available/ldap

这些是我更改的值

    ldap {
        server = 'yourAADDSdomain.onmicrosoft.com'
        #the identity user should be a member of you AADDS admin group
        identity = 'user@yourAADDSdomain.onmicrosoft.com' 
        password = 'yourpassword'
        basedn = 'OU=AADDC Users,dc=yourAADDSdomain,dc=onmicrosoft,dc=com'
        user {
           filter = “(userPrincipalName=%{%{Stripped-User-Name}:-%{User-Name}})”
        }
    }

ii。编辑/etc/freeradius/3.0/sites-available/default

server default {
    listen {
        type = auth
        ipaddr = *
        port = 0
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
    }
    listen {
        ipaddr = *
        port = 0
        type = acct
        limit {
        }
    }
    authorize {
         if (!control:Auth-Type) {
              ldap
              if (ok && User-Password) {
                      update {
                      control:Auth-Type := LDAP
                      }
              }
        }
        expiration
        logintime
    }
    authenticate {
        Auth-Type LDAP {
               ldap
        }
    }
    preacct {
        preprocess
        acct_unique
    }
    accounting {
        detail
        unix
        radutmp
        exec
        attr_filter.accounting_response
    }
    session {
        radutmp
    }
    post-auth {
        exec
        Post-Auth-Type REJECT {
                attr_filter.access_reject
        }
    } 
    pre-proxy {
    }
    post-proxy {
        eap
    }
}

其他一些要点:
使用radtest进行测试
使用Windows计算机上的ldp.exe连接到您的ldap,以检查返回的内容

链接:
https://docs.microsoft.com/en-us/azure/active-directory-domain-services/active-directory-ds-admin-guide-configure-secure-ldap
https://wiki.freeradius.org/guide/Getting-Started
https://medium.com/@georgijsr/freeradius-2-1-12-ubuntu-14-04-server-with-ldap-authentication-and-ldap-fail-over-6611624ff2c9
Freeradius + Openldap ERROR: No authenticate method (Auth-Type) found for the request: Rejecting the user
http://freeradius.1045715.n5.nabble.com/guide-on-configuring-freeradius-3-LDAP-td5748776.html

答案 2 :(得分:0)

我想,如果你有" azure ad"在本地网络上启用了服务/主机,因为它与本地广告的工作方式相同。 重要的是要了解,您需要启用所需的服务,以便freeradius可以连接到它。并且建议不要在公共IP上启用它,最好创建一个到微软的(ipsec)隧道并在本地ip上启用广告服务。