Well, it seems to be getting a “trend” for me, to integrate stuff into our Active Directory. Now that I know why, and how easy that is, I expect to add more stuff. The good thing about the integration is, that you only need to maintain a single source for authorization.
The bad thing about that is, that stuff becomes dependent on the Active Directory (we do have four domain controllers, so that should be fine).
Now, here’s the ssl-(only) apache2 configuration file for my vhost:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | <VirtualHost *:80>   ## mod_core   DocumentRoot "/usr/share/nagios"   ServerName nagios.barfoo.org   ServerAlias nagios3.barfoo.org   ServerAdmin nagiosadmin@barfoo.org   ## mod_rewrite   RewriteEngine On   RewriteRule ^/(.*)         https://nagios.barfoo.org/$1 [L,R] </VirtualHost> <VirtualHost *:443>   ## mod_core   DocumentRoot "/usr/share/nagios"   ServerName nagios.barfoo.org   ServerAdmin nagiosadmin@barfoo.org   ScriptAlias /nagios/cgi-bin /usr/lib/nagios/cgi   Alias /nagios /usr/share/nagios   Alias /pnp /usr/share/nagios/html/pnp4nagios   <DirectoryMatch "/usr/(share/nagios|lib/nagios/cgi)">     AllowOverride None     Order deny,allow     Deny from all     Allow from 10.0.0.     Options None     # Authorization     AuthType Basic     AuthName "Nagios Barfoo"     # The authentification provider is mod_ldap     AuthBasicProvider ldap     # mod_ldap is our *only* authentification provider for this!     AuthzLDAPAuthoritative on     # Redirect the userfile requests to /dev/null     AuthUserFile /dev/null     # AD requires an authentication DN to access any records     AuthLDAPBindDN "BARFOO\ldap_nagios"     AuthLDAPBindPassword "somethingrandom"     # The URL to search in     AuthLDAPURL "ldap://dc0.barfoo.org dc1.barfoo.org dc2.barfoo.org dc3.barfoo.org/OU=Users,dc=barfoo,dc=org?sAMAccountName?sub?(objectClass=*)"     # Search the group membership in the specified group, otherwise it's gonna     # get searched at the binding DN's location     AuthLDAPGroupAttributeIsDN on     Require ldap-group CN=gr_nagios,OU=Groups,DC=barfoo,DC=org   </DirectoryMatch>   ## mod_log   ErrorLog /var/log/apache2/nagios.barfoo.org.error_log   TransferLog /var/log/apache2/nagios.barfoo.org.access_log   CustomLog /var/log/apache2/nagios.barfoo.org.ssl_request_log   ssl_combined   ## mod_ssl   SSLEngine on   SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL   SSLCertificateFile /etc/apache2/ssl.crt/nagios.barfoo.org.crt   SSLCertificateKeyFile /etc/apache2/ssl.key/nagios.barfoo.org.key   <Files ~ ".(cgi|shtml|phtml|php3|php?)$">     SSLOptions +StdEnvVars   </Files>   SetEnvIf User-Agent ".*MSIE.*"      nokeepalive ssl-unclean-shutdown      downgrade-1.0 force-response-1.0 </VirtualHost> | 
As you can see, AuthLDAPUrl holds the four LDAP servers separated by spaces (that’s what the Apache2 documentation says about that), and that actually works.
The only additional thing I had to change from the nagios part is in /etc/nagios/cgi.cfg to allow everyone to issue system commands. Also, if you ever stumble upon extraneous chars in the check_nrpe output, update to a newer NRPE version, that fixed it for me (that is on the receiver side – as in the box running the NRPE agent).