12-18-2018 04:03 PM
I have one user (me) who is able to auth via RADIUS but other accounts setup in what I think is the exact same manner don’t seem to work. I replaced the domain, username and OU with generic text.
Any help would be greatly appreciated!
Here’s a snip of my config:
[ad_client]
host=dc01.mydomain.local
host_2=dc02.mydomain.local
service_account_username=svcLDAP
service_account_password=***
search_dn=DC=mydomain,DC=local
security_group_dn=CN=VPN_Users,OU=Security Groups,OU=GROUPOU,DC=mydomain,DC=local
[radius_client]
host=dc01.mydomain.local
host_2=dc02.mydomain.local
secret=***
[radius_server_auto]
radius_ip_1=10.1.1.2
radius_secret_1=***
ikey=**
skey=**
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
client=ad_client
failmode=safe
Here’s a log snip of a successful auth request:
2018-12-18T17:49:47-0600 [DuoForwardServer (UDP)] Packet dump - received from 10.1.1.2:
2018-12-18T17:49:47-0600 [DuoForwardServer (UDP)] '\x01#\x009\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x07firstname\x02\x12\xe3"\xe4)\x84\xd1E\xba\xb1\x8a5<\xf2(\x17F\x04\x06\n\x01\x01\x02\x05\x06\x00\x00\x00\x00'
2018-12-18T17:49:47-0600 [DuoForwardServer (UDP)] Sending request from 10.1.1.2 to radius_server_auto
2018-12-18T17:49:47-0600 [DuoForwardServer (UDP)] Received new request id 35 from ('10.1.1.2', 52669)
2018-12-18T17:49:47-0600 [DuoForwardServer (UDP)] (('10.1.1.2', 52669), 35): login attempt for username u'firstname'
2018-12-18T17:49:47-0600 [DuoForwardServer (UDP)] Sending AD authentication request for 'firstname' to 'dc01.mydomain.local'
2018-12-18T17:49:47-0600 [duoauthproxy.modules.ad_client._ADAuthClientFactory#info] Starting factory <duoauthproxy.modules.ad_client._ADAuthClientFactory object at 0xb54dde6c>
2018-12-18T17:49:47-0600 [Uninitialized] C->S LDAPMessage(id=147, value=LDAPBindRequest(version=3, dn='<ROOT>', auth='*****', sasl=True))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=147L, value=LDAPBindResponse(resultCode=14L, serverSaslCreds=LDAPBindResponse_serverSaslCreds(value='NTLMSSP\x00\x02\x00\x00\x00\x10\x00\x10\x008\x00\x00\x00\x05\x82\x89\x02\x16\x91`)\x00\xbe\xbf\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x9a\x00H\x00\x00\x00\x06\x03\x80%\x00\x00\x00\x0fK\x00E\x00I\x00C\x00O\x00N\x00N\x00Q\x00\x02\x00\x10\x00K\x00E\x00I\x00C\x00O\x00N\x00N\x00Q\x00\x01\x00\x08\x00D\x00C\x000\x001\x00\x04\x00\x1c\x00k\x00e\x00i\x00c\x00o\x00n\x00n\x00q\x00.\x00l\x00o\x00c\x00a\x00l\x00\x03\x00&\x00D\x00C\x000\x001\x00.\x00k\x00e\x00i\x00c\x00o\x00n\x00n\x00q\x00.\x00l\x00o\x00c\x00a\x00l\x00\x05\x00\x1c\x00k\x00e\x00i\x00c\x00o\x00n\x00n\x00q\x00.\x00l\x00o\x00c\x00a\x00l\x00\x07\x00\x08\x00\x1c\xcf\x85r,\x97\xd4\x01\x00\x00\x00\x00')))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C->S LDAPMessage(id=148, value=LDAPBindRequest(version=3, dn='<ROOT>', auth='*****', sasl=True))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=148L, value=LDAPBindResponse(resultCode=0L, serverSaslCreds=LDAPBindResponse_serverSaslCreds(value='')))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C->S LDAPMessage(id=149, value=LDAPSearchRequest(baseObject='DC=mydomain,DC=local', scope=2, derefAliases=0, sizeLimit=0, timeLimit=0, typesOnly=0, filter=LDAPFilter_and(value=[LDAPFilter_or(value=[LDAPFilter_and(value=[LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='objectClass'), assertionValue=LDAPAssertionValue(value='user')), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='objectCategory'), assertionValue=LDAPAssertionValue(value='person'))]), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='objectClass'), assertionValue=LDAPAssertionValue(value='inetOrgPerson')), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='objectClass'), assertionValue=LDAPAssertionValue(value='organizationalPerson'))]), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='memberOf'), assertionValue=LDAPAssertionValue(value='CN=VPN_Users,OU=Security Groups,OU=GROUPOU,DC=mydomain,DC=local')), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='sAMAccountName'), assertionValue=LDAPAssertionValue(value=u'firstname'))]), attributes=('sAMAccountName', 'msDS-PrincipalName')))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=149L, value=L■■■■■■■■■■■■■■■■■■■■(objectName='CN=firstname lastname,OU=GROUPOU,OU=Users,OU=GROUPOU,DC=mydomain,DC=local', attributes=[('sAMAccountName', ['firstname']), ('msDS-PrincipalName', ['mydomain\\firstname'])])
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=149L, value=L■■■■■■■■■■■■■■■■■■■■ence(value=[BEROctetString(value='ldap://DomainDnsZones.mydomain.local/DC=DomainDnsZones,DC=mydomain,DC=local')]))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=149L, value=L■■■■■■■■■■■■■■■■■■■■ence(value=[BEROctetString(value='ldap://ForestDnsZones.mydomain.local/DC=ForestDnsZones,DC=mydomain,DC=local')]))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=149L, value=L■■■■■■■■■■■■■■■■■■■■ence(value=[BEROctetString(value='ldap://mydomain.local/CN=Configuration,DC=mydomain,DC=local')]))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=149L, value=LDAPSearchResultDone(resultCode=0L))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C->S LDAPMessage(id=150, value=LDAPBindRequest(version=3, dn='CN=firstname lastname,OU=GROUPOU,OU=Users,OU=GROUPOU,DC=mydomain,DC=local', auth='*****', sasl=True))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=150L, value=LDAPBindResponse(resultCode=14L, serverSaslCreds=LDAPBindResponse_serverSaslCreds(value='NTLMSSP\x00\x02\x00\x00\x00\x10\x00\x10\x008\x00\x00\x00\x05\x82\x89\x02\xc3\x87\xb8\xd3Ln\x1f5\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x9a\x00H\x00\x00\x00\x06\x03\x80%\x00\x00\x00\x0fK\x00E\x00I\x00C\x00O\x00N\x00N\x00Q\x00\x02\x00\x10\x00K\x00E\x00I\x00C\x00O\x00N\x00N\x00Q\x00\x01\x00\x08\x00D\x00C\x000\x001\x00\x04\x00\x1c\x00k\x00e\x00i\x00c\x00o\x00n\x00n\x00q\x00.\x00l\x00o\x00c\x00a\x00l\x00\x03\x00&\x00D\x00C\x000\x001\x00.\x00k\x00e\x00i\x00c\x00o\x00n\x00n\x00q\x00.\x00l\x00o\x00c\x00a\x00l\x00\x05\x00\x1c\x00k\x00e\x00i\x00c\x00o\x00n\x00n\x00q\x00.\x00l\x00o\x00c\x00a\x00l\x00\x07\x00\x08\x00\x1c\xcf\x85r,\x97\xd4\x01\x00\x00\x00\x00')))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C->S LDAPMessage(id=151, value=LDAPBindRequest(version=3, dn='CN=firstname lastname,OU=GROUPOU,OU=Users,OU=GROUPOU,DC=mydomain,DC=local', auth='*****', sasl=True))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=151L, value=LDAPBindResponse(resultCode=0L, serverSaslCreds=LDAPBindResponse_serverSaslCreds(value='')))
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] C->S LDAPMessage(id=152, value=LDAPUnbindRequest())
2018-12-18T17:49:47-0600 [_ADAuthClientProtocol,client] http POST to https://■■■■■■■■■■■■■■■■■■■■■■■■■■■■:443/rest/v1/preauth: user=firstname
2018-12-18T17:49:47-0600 [duoauthproxy.lib.http._■■■■■■■■■■■■■■■■■■■■#info] Starting factory <_■■■■■■■■■■■■■■■■■■■■: https://■■■■■■■■■■■■■■■■■■■■■■■■■■■■:443/rest/v1/preauth>
2018-12-18T17:49:47-0600 [duoauthproxy.modules.ad_client._ADAuthClientFactory#info] Stopping factory <duoauthproxy.modules.ad_client._ADAuthClientFactory object at 0xb54dde6c>
2018-12-18T17:49:48-0600 [HTTPPageGetter (TLSMemoryBIOProtocol),client] (('10.1.1.2', 52669), 35): Got preauth result for: u'auth'
2018-12-18T17:49:48-0600 [HTTPPageGetter (TLSMemoryBIOProtocol),client] Invalid ip. Ip was None
2018-12-18T17:49:48-0600 [HTTPPageGetter (TLSMemoryBIOProtocol),client] http POST to https://■■■■■■■■■■■■■■■■■■■■■■■■■■■■:443/rest/v1/auth: auto=push1&factor=auto&ipaddr=0.0.0.0&user=firstname
2018-12-18T17:49:48-0600 [duoauthproxy.lib.http._■■■■■■■■■■■■■■■■■■■■#info] Starting factory <_■■■■■■■■■■■■■■■■■■■■: https://■■■■■■■■■■■■■■■■■■■■■■■■■■■■:443/rest/v1/auth>
2018-12-18T17:49:48-0600 [duoauthproxy.lib.http._■■■■■■■■■■■■■■■■■■■■#info] Stopping factory <_■■■■■■■■■■■■■■■■■■■■: https://■■■■■■■■■■■■■■■■■■■■■■■■■■■■:443/rest/v1/preauth>
and a snip of a failing auth
2018-12-18T17:48:25-0600 [DuoForwardServer (UDP)] Packet dump - received from 10.1.1.2:
2018-12-18T17:48:25-0600 [DuoForwardServer (UDP)] '\x01"\x00;\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\tvpntest\x02\x12\xe3"\xe4)\x84\xd1E\xba\xb1\x8a5<\xf2(\x17F\x04\x06\n\x01\x01\x02\x05\x06\x00\x00\x00\x00'
2018-12-18T17:48:25-0600 [DuoForwardServer (UDP)] Sending request from 10.1.1.2 to radius_server_auto
2018-12-18T17:48:25-0600 [DuoForwardServer (UDP)] Received new request id 34 from ('10.1.1.2', 52669)
2018-12-18T17:48:25-0600 [DuoForwardServer (UDP)] (('10.1.1.2', 52669), 34): login attempt for username u'vpntest'
2018-12-18T17:48:25-0600 [DuoForwardServer (UDP)] Sending AD authentication request for 'vpntest' to 'dc01.mydomain.local'
2018-12-18T17:48:25-0600 [duoauthproxy.modules.ad_client._ADAuthClientFactory#info] Starting factory <duoauthproxy.modules.ad_client._ADAuthClientFactory object at 0xb54e568c>
2018-12-18T17:48:26-0600 [Uninitialized] C->S LDAPMessage(id=143, value=LDAPBindRequest(version=3, dn='<ROOT>', auth='*****', sasl=True))
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=143L, value=LDAPBindResponse(resultCode=14L, serverSaslCreds=LDAPBindResponse_serverSaslCreds(value='NTLMSSP\x00\x02\x00\x00\x00\x10\x00\x10\x008\x00\x00\x00\x05\x82\x89\x02\xcbQ\xe1_\x9eY\x86\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x9a\x00H\x00\x00\x00\x06\x03\x80%\x00\x00\x00\x0fK\x00E\x00I\x00C\x00O\x00N\x00N\x00Q\x00\x02\x00\x10\x00K\x00E\x00I\x00C\x00O\x00N\x00N\x00Q\x00\x01\x00\x08\x00D\x00C\x000\x001\x00\x04\x00\x1c\x00k\x00e\x00i\x00c\x00o\x00n\x00n\x00q\x00.\x00l\x00o\x00c\x00a\x00l\x00\x03\x00&\x00D\x00C\x000\x001\x00.\x00k\x00e\x00i\x00c\x00o\x00n\x00n\x00q\x00.\x00l\x00o\x00c\x00a\x00l\x00\x05\x00\x1c\x00k\x00e\x00i\x00c\x00o\x00n\x00n\x00q\x00.\x00l\x00o\x00c\x00a\x00l\x00\x07\x00\x08\x00/\xc6\xd2A,\x97\xd4\x01\x00\x00\x00\x00')))
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C->S LDAPMessage(id=144, value=LDAPBindRequest(version=3, dn='<ROOT>', auth='*****', sasl=True))
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=144L, value=LDAPBindResponse(resultCode=0L, serverSaslCreds=LDAPBindResponse_serverSaslCreds(value='')))
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C->S LDAPMessage(id=145, value=LDAPSearchRequest(baseObject='DC=mydomain,DC=local', scope=2, derefAliases=0, sizeLimit=0, timeLimit=0, typesOnly=0, filter=LDAPFilter_and(value=[LDAPFilter_or(value=[LDAPFilter_and(value=[LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='objectClass'), assertionValue=LDAPAssertionValue(value='user')), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='objectCategory'), assertionValue=LDAPAssertionValue(value='person'))]), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='objectClass'), assertionValue=LDAPAssertionValue(value='inetOrgPerson')), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='objectClass'), assertionValue=LDAPAssertionValue(value='organizationalPerson'))]), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='memberOf'), assertionValue=LDAPAssertionValue(value='CN=VPN_Users,OU=Security Groups,OU=GROUPOU,DC=mydomain,DC=local')), LDAPFilter_equalityMatch(attributeDesc=L■■■■■■■■■■■■■■■■■■■■ion(value='sAMAccountName'), assertionValue=LDAPAssertionValue(value=u'vpntest'))]), attributes=('sAMAccountName', 'msDS-PrincipalName')))
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=145L, value=L■■■■■■■■■■■■■■■■■■■■ence(value=[BEROctetString(value='ldap://DomainDnsZones.mydomain.local/DC=DomainDnsZones,DC=mydomain,DC=local')]))
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=145L, value=L■■■■■■■■■■■■■■■■■■■■ence(value=[BEROctetString(value='ldap://ForestDnsZones.mydomain.local/DC=ForestDnsZones,DC=mydomain,DC=local')]))
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=145L, value=L■■■■■■■■■■■■■■■■■■■■ence(value=[BEROctetString(value='ldap://mydomain.local/CN=Configuration,DC=mydomain,DC=local')]))
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C<-S LDAPMessage(id=145L, value=LDAPSearchResultDone(resultCode=0L))
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C->S LDAPMessage(id=146, value=LDAPUnbindRequest())
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] (('10.1.1.2', 52669), 34): Primary credentials rejected - Invalid User
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] (('10.1.1.2', 52669), 34): Returning response code 3: AccessReject
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] (('10.1.1.2', 52669), 34): Sending response
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] Packet dump - sent to 10.1.1.2:
2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] '\x03"\x00"\xf3h\x85\x92PqJ+^^\xd9\'lq\x84\xa9\x12\x0eInvalid User'
2018-12-18T17:48:26-0600 [duoauthproxy.modules.ad_client._ADAuthClientFactory#info] Stopping factory <duoauthproxy.modules.ad_client._ADAuthClientFactory object at 0xb54e568c>
12-19-2018 06:15 AM
Hi, please contact Duo support for help with your issue.
12-19-2018 08:02 AM
Thanks, unfortunately I’m using the free version so I don’t have access to support.
12-20-2018 07:22 AM
You restricted access to only members of the group CN=VPN_Users,OU=Security Groups,OU=GROUPOU,DC=mydomain,DC=local
in your [ad_client]
section.
The LDAP search for the user attempting to log in uses the memberof
that group DN as one of the filters .
``2018-12-18T17:48:26-0600 [_ADAuthClientProtocol,client] C->S LDAPMessage(id=145, value=LDAPSearchRequest(baseObject=‘DC=mydomain,DC=local’, scope=2, derefAliases=0, sizeLimit=0, timeLimit=0, typesOnly=0, filter=LDAPFilter_and(value=[LDAPFilter_or(value=[LDAPFilter_and(value=[LDAPFilter_equalityMatch(attributeDesc=L■■■■ion(value=‘objectClass’), assertionValue=LDAPAssertionValue(value=‘user’)), LDAPFilter_equalityMatch(attributeDesc=L■■■■ion(value=‘objectCategory’), assertionValue=LDAPAssertionValue(value=‘person’))]), LDAPFilter_equalityMatch(attributeDesc=L■■■■ion(value=‘objectClass’), assertionValue=LDAPAssertionValue(value=‘inetOrgPerson’)), LDAPFilter_equalityMatch(attributeDesc=L■■■■ion(value=‘objectClass’), assertionValue=LDAPAssertionValue(value=‘organizationalPerson’))]), LDAPFilter_equalityMatch(attributeDesc=L■■■■ion(value=‘memberOf’), assertionValue=LDAPAssertionValue(value=‘CN=VPN_Users,OU=Security Groups,OU=GROUPOU,DC=mydomain,DC=local’)), LDAPFilter_equalityMatch(attributeDesc=L■■■■ion(value=‘sAMAccountName’), assertionValue=LDAPAssertionValue(value=u’vpntest’))]), attributes=(‘sAMAccountName’, ‘msDS-PrincipalName’)))```
The LDAP search returns no results.
Verify the second user is in that group.
12-20-2018 08:42 AM
Thanks for taking a look! I apologize but I should have provided this info in the op: both users are members of the vpn_users group.
The user who is working:
firstname@smtp01:~$ ldapsearch -x -h 10.1.1.45 -D firstname@mydomain.local -W -b "OU=GROUPOU,DC=mydomain,DC=local" -s sub "(&(objectClass=user)(sAMAccountName=firstname))" | grep memberOf
Enter LDAP Password:
memberOf: CN=VPN_Users,OU=Security Groups,DC=mydomain,DC=local
memberOf: CN=Mobile Users,OU=Security Groups,DC=mydomain,DC=local
memberOf: CN=Remote Desktop Users,CN=Builtin,DC=mydomain,DC=local
memberOf: CN=Domain Admins,CN=Users,DC=mydomain,DC=local
memberOf: CN=Administrators,CN=Builtin,DC=mydomain,DC=local
And the non-working one:
firstname@smtp01:~$ ldapsearch -x -h 10.1.1.45 -D firstname@mydomain.local -W -b "OU=GROUPOU,DC=mydomain,DC=local" -s sub "(&(objectClass=user)(sAMAccountName=vpntest))" | grep memberOf
Enter LDAP Password:
memberOf: CN=VPN_Users,OU=Security Groups,DC=mydomain,DC=local
memberOf: CN=Mobile Users,OU=Security Groups,DC=mydomain,DC=local
memberOf: CN=Remote Desktop Users,CN=Builtin,DC=mydomain,DC=local
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide