[Xymon] Cannot issue STARTTLS for ldap:389 -- xymon server 4.3.28

John Thurston john.thurston at alaska.gov
Fri Jun 1 20:55:12 CEST 2018


On 6/1/2018 8:44 AM, Scott Birl wrote:
> Hello all:
> 
> Running the 4.3.28 server.
> 
> My LDAP team wants me to monitor their LDAP farm over both 636 *and* 389.  Monitoring 636 is working as expected, but 389 is not; at least not 100%.
>          ServerA's 389 has not required the use of STARTTLS, yet, so monitoring it is working well.
>          ServerB's 389 is requiring the use of STARTTLS, and tests are failing red with an output of "unknown error."
> 
>          (Yes, there are applications outside of Xymon that can connect to 389 using STARTTLS with no problem.)
> 
> I modified ~xymon/server/etc/protocols.cfg to have the [ldap] section to use "options ssl", but my LDAP team tells me that STARTTLS is not present, and tests are still red.
> 
> I ran: strace ~xymon/server/bin/xymonnet --debug --report ServerB
> and I can see the connection being made, as well as the ldaplogin bind credentials being passed over, but certainly no STARTTLS is being passed.
> 
> On the receiving end of the strace, I see:
>          read(3, "\1\r\4\0\4\30confidentiality required", 30) = 30
>          write(1, "101588 2018-06-01 11:52:08.27042"..., 81101588 2018-06-01 11:52:08.270421 ldap_result returned 97 for ldap_simple_bind()) = 81
> followed by the "LDAP output: Unknown error"
> 
> 
> The hosts.cfg has this entry for its LDAP tests for ServerA and ServerB.
>          ldap://10.96.160.XX:389/dc=DOMAIN,dc=ORG??sub?(uid=moof8) ldaplogin=cn=USER,ou=roles,dc=DOMAIN,dc=ORG:*********
> 
> 
> 
> Is there something that I am missing in order to have Xymon issue a STARTTLS for 389?

If you want a STARTTLS, I think you should be using the ldaps test:

   0.0.0.0  serverA.bar.com  # ldap://blah blah blah
   0.0.0.0  serverB.bar.com  # ldaps://blah blah blah


The ldap tests in xymonnet have always been a point of confusion for me, 
but I recall finding there are two different tests. The first is 
specified by test:port syntax:
   0.0.0.0  foo.bar.com  # ldap:399
   0.0.0.0  baz.bar.com  # ldaps:666
This test uses the lines in protocols.cfg and is pretty brain-dead.

The second test is specified by URL syntax:
   0.0.0.0  foo.bar.com  # ldap://foo.bar.com:399/blah blah blah
   0.0.0.0  baz.bar.com  # ldaps://baz.bar.com:666/blah blah blah
This test ignores everything in protocols.cfg, but still reports under 
the ldap column.

The use of ldap/ldaps strings to name both tests caused me all kinds of 
confusion. I eventually evaded this by creating my own protocol.cfg (and 
referencing it in the stock file). It contains the the following:

[ldap|ldapPort]
    port 389

[ldaps|ldapsPort]
    options ssl
    port 636

This redefines the stock ldap/ldaps tests, but defines an alias for each 
of them. When I want the brain-dead test, I use the alias of my own 
creation. In my hosts.cfg, I have lines like

>   0.0.0.0  foo.bar.com # ldapPort:389 ldapsPort:667 ldaps://foo.bar.com:667/blah blah blah

Which gives the three columns. I can see the results of the query under 
the 'ldap' column. I can also see if ldap or ldaps brain-dead 
connections are working.



--
    Do things because you should, not just because you can.

John Thurston    907-465-8591
John.Thurston at alaska.gov
Department of Administration
State of Alaska


More information about the Xymon mailing list