Hi.

On Fri, Jul 8, 2011 at 9:54 AM, David Mitton <david@mitton.com> wrote:
Thanks for the reply, sorry about the poor quoting, I'm cut and
pasting from the web archive. 

 ------
From: Jose Ildefonso Camargo Tolosa <ildefonso.camargo@gmail.com>
Date: Fri, 8 Jul 2011 08:58:16 -0430


Greetings,

On Thu, Jul 7, 2011 at 4:08 PM, David Mitton <david@mitton.com>
wrote:

I am trying to use OpenLDAP from an embedded Linux system to
authenticate  (PAM LDAP) against a Windows AD server.  I must use
TLS to secure this, but I would rather not use SASL or Kerberos if
possible.

pam_ldap = http://www.padl.com/pam_ldap.html[1] OR
http://arthurdejong.org/nss-pam-ldapd/[2] .... you are not dealing
here with OpenLDAP....

DJM> Good point, I will look at exactly which module(s) I'm using and
come back to that later.  I beleive for the moment I'm using whatever is in
Centos.  I have Arthur Jong's modules as well, but I don't think I've installed them yet.

Uh... I really wouldn't recommend centos (or any rh-derivative), try Debian or Ubuntu (these could prove to be better suited for this kind of job).
 

I have been able to mock this up on a Centos system without TLS, and
the PAM worked fine.  When I turn on TLS, the Windows server
handshakes the TLS but then has a problem with the first message.  I
am also working that side.


Most likely, cert trust, you need to CA that signed the windows server certificate, and make OpenLDAP client trust it.
 

I have walked through the handshake with s_client, and the connection
is happy.
I am now working with ldapsearch and trying things....
The first thing I notice is that it seems to try an SASL bind.  Can
I stop this?
I'm not sure I have SASL actually installed on this system, and I'm
not sure I want it in my target.

ldapsearch -x   <--- does simple auth instead of sasl.

Is this possible? from both the OpenLDAP client and/or Windows AD?
Ideas on the correct alphabet soup to try this with ldapsearch would
be appreciated.
Thanks.

Well, I have seen this done through samba, but you *should* be able
to use AD's LDAP to authenticate your Linux workstation, I guess.

Sincerely,
Ildefonso Camargo
-------

 I tried the following command and here are the results... note that
after the simple_bind, a SASL_bind line appears.   I'd like to dig
into this deeper....  What will give me more info?

 Thanks,  Dave.

ldapsearch -d 1 -v -x -H ldaps://172.16.9.3:363 -b "dc=foobar,dc=local" -D 'FOOBAR\mgr' -w 'Strongpw@09' '(sAMAccountName=mgr)'

Port 363???? afaik, AD uses standard 389 port, try this better: ldap://172.16.9.3:389 , and, maybe, add -Z parameter to ldapsearch (to attempt TLS).
 
ldap_initialize( ldaps://172.16.9.3:363 )
ldap_create
ldap_url_parse_ext(ldaps://172.16.9.3:363)
ldap_bind
ldap_simple_bind
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP 172.16.9.3:363
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 172.16.9.3:363
ldap_connect_timeout: fd: 3 tm: -1 async: 0
ldap_close_socket: 3
ldap_perror
ldap_bind: Can't contact LDAP server (-1)

Not unexpected (because of the port).