Procedures:New LDAP Client/Solaris 10 Setup: Difference between revisions

From OACISS Systems Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
This is a subpage of [[Procedures:New_LDAP_Client|New LDAP Client]].
This was a ton of fun to figure out and debug. It works almost exactly as expected, and supports the full nss_ldap/pam_ldap feature set as available on linux with the same configuration file syntax. It also supports start_tls, which the Solaris LDAP libraries do not. The only drawback is a lack of support for the Name Service Cache daemon, as it expects to talk to Sun's ldap_cachemgr. If NSCd is enabled, LDAP passwd and group information will not be available.
This was a ton of fun to figure out and debug. It works almost exactly as expected, and supports the full nss_ldap/pam_ldap feature set as available on linux with the same configuration file syntax. It also supports start_tls, which the Solaris LDAP libraries do not. The only drawback is a lack of support for the Name Service Cache daemon, as it expects to talk to Sun's ldap_cachemgr. If NSCd is enabled, LDAP passwd and group information will not be available.



Latest revision as of 19:57, 13 April 2009

This is a subpage of New LDAP Client.

This was a ton of fun to figure out and debug. It works almost exactly as expected, and supports the full nss_ldap/pam_ldap feature set as available on linux with the same configuration file syntax. It also supports start_tls, which the Solaris LDAP libraries do not. The only drawback is a lack of support for the Name Service Cache daemon, as it expects to talk to Sun's ldap_cachemgr. If NSCd is enabled, LDAP passwd and group information will not be available.

Build and install OpenLDAP

Build 64 bit

 CFLAGS="-m64" ./configure --enable-tls --disable-slapd --prefix=/usr/local --libdir=/usr/local/lib/amd64
 make depend
 make -j5
 make install

Clean up for next install

 make clean

Build 32 bit

 ./configure --enable-tls --disable-slapd --prefix=/usr/local
 make depend
 make -j5
 make install 

Build and install nss_ldap using OpenLDAP

We must temporarily remove the Solaris SASL headers; for some reason they break compilation of recent versions of nss_ldap.

 mv /usr/include/sasl /usr/include/sasl.OLD

Build and install 64 bit

 declare -x LD_LIBRARY_PATH="/usr/local/lib/amd64:/usr/sfw/lib/amd64"
 declare -x CFLAGS="-m64 -DHAVE_SASL_AUXPROP_REQUEST"
 declare -x LDFLAGS="-L/usr/local/lib/amd64 -R/usr/local/lib/amd64"
 ./configure
 make
 cp nss_ldap.so /lib/amd64/nss_ldap.so.1
 ln -sf /lib/amd64/nss_ldap.so.1 /usr/lib/amd64/

Clean up for next install

 make clean

Build and install 32 bit

 declare -x LD_LIBRARY_PATH="/usr/local/lib:/usr/sfw/lib"
 declare -x CFLAGS="-DHAVE_SASL_AUXPROP_REQUEST"
 declare -x LDFLAGS="-L/usr/local/lib/amd -R/usr/local/lib/amd"
 ./configure
 make
 cp nss_ldap.so /lib/nss_ldap.so.1
 ln -sf /lib/nss_ldap.so.1 /usr/lib/

Configure Name Service Switch

Make sure /etc/nsswitch.conf contains the following lines:

 passwd:     files ldap
 group:      files ldap

Restore SASL headers

 mv /usr/include/sasl.old /usr/include/sasl

Build and install pam_ldap using OpenLDAP

We must temporarily remove the Solaris SASL headers; for some reason they break compilation of recent versions of nss_ldap.

 mv /usr/include/sasl /usr/include/sasl.OLD

Build and install 64 bit

 declare -x LD_LIBRARY_PATH="/usr/local/lib/amd64:/usr/sfw/lib/amd64"
 declare -x CFLAGS="-m64 -DHAVE_SASL_AUXPROP_REQUEST"
 declare -x LDFLAGS="-L/usr/local/lib/amd64 -R/usr/local/lib/amd64"
 ./configure
 make
 cp pam_ldap.so /usr/lib/security/amd64/pam_ldap.so.1
 ln -sf /usr/lib/security/amd64/pam_ldap.so.1 /usr/lib/security/amd64/pam_ldap.so

Clean up for next install

 make clean

Build and install 32 bit

 declare -x LD_LIBRARY_PATH="/usr/local/lib/amd:/usr/sfw/lib"
 declare -x CFLAGS="-DHAVE_SASL_AUXPROP_REQUEST"
 declare -x LDFLAGS="-L/usr/local/lib -R/usr/local/lib"
 ./configure
 make
 cp pam_ldap.so /usr/lib/security/pam_ldap.so.1
 ln -sf /usr/lib/security/pam_ldap.so.1 /usr/lib/security/pam_ldap.so

Add directories to linker path

crle     -u -l /lib:/usr/lib:/usr/local/lib             -s /lib/secure:/usr/lib/secure:/usr/local/lib
crle -64 -u -l /lib/64:/usr/lib/64:/usr/local/lib/amd64 -s /lib/secure/64:/usr/lib/secure/64:/usr/local/lib/amd64

Configure /etc/pam.conf

# PAM configuration
#
# Unless explicitly defined, all services use the modules
# defined in the "other" section.
#
# Modules are defined with relative pathnames, i.e., they are
# relative to /usr/lib/security/$ISA. Absolute path names, as
# present in this file in previous releases are still acceptable.
#
# Authentication management
#
# login service (explicit because of pam_dial_auth)
#
login   auth requisite          pam_authtok_get.so.1
login   auth required           pam_dhkeys.so.1
login   auth required           pam_unix_cred.so.1
login   auth sufficient         pam_unix_auth.so.1
login   auth required           pam_ldap.so.1 use_first_pass ignore_unknown_user ignore_authinfo_unavail
#
# rlogin service (explicit because of pam_rhost_auth)
#
rlogin  auth sufficient         pam_rhosts_auth.so.1
rlogin  auth requisite          pam_authtok_get.so.1
rlogin  auth required           pam_dhkeys.so.1
rlogin  auth required           pam_unix_cred.so.1
rlogin  auth sufficient         pam_unix_auth.so.1
rlogin  auth required           pam_ldap.so.1 use_first_pass ignore_unknown_user ignore_authinfo_unavail
#
# Default definitions for Authentication management
# Used when service name is not explicitly mentioned for authentication
#
other   auth requisite          pam_authtok_get.so.1
other   auth required           pam_dhkeys.so.1
other   auth required           pam_unix_cred.so.1
other   auth sufficient         pam_unix_auth.so.1
other   auth required           pam_ldap.so.1 use_first_pass ignore_unknown_user ignore_authinfo_unavail
#
# passwd command (explicit because of a different authentication module)
#
passwd  auth sufficient         pam_passwd_auth.so.1
passwd  auth required           pam_ldap.so.1 use_authtok
#
# cron service (explicit because of non-usage of pam_roles.so.1)
#
cron    account required        pam_unix_account.so.1
#
# Default definition for Account management
# Used when service name is not explicitly mentioned for account management
#
other   account sufficient      pam_ldap.so.1 ignore_unknown_user ignore_authinfo_unavail
other   account requisite       pam_roles.so.1
other   account required        pam_unix_account.so.1


#
# Default definition for Session management
# Used when service name is not explicitly mentioned for session management
#
other   session required        pam_unix_session.so.1
#
# Default definition for  Password management
# Used when service name is not explicitly mentioned for password management
#
other   password required       pam_dhkeys.so.1
other   password requisite      pam_authtok_get.so.1
other   password requisite      pam_authtok_check.so.1
other   password required       pam_authtok_store.so.1
#

Configure autofs

Add a line to /etc/auto_master:

/mnt/netapp     auto_netapp 

Create and link network home directory

mkdir /mnt/netapp
ln -sf /mnt/netapp/home/users /home/

Create /etc/auto_netapp with the following contents:

home       -fstype=nfs,hard,intr,async,rsize=32768,wsize=32768,nfsvers=3,udp     172.17.8.63:/vol/home
research   -fstype=nfs,hard,intr,async,rsize=32768,wsize=32768,nfsvers=3,udp     172.17.8.64:/vol/research

Enable/reload autofs

svcadm disable autofs
svcadm enable autofs

Configure LDAP Environment

Link things to places we're likely to look for them later on

ln -sf /usr/share/etc/openldap  /etc/openldap
ln -sf /usr/share/etc/ldap.conf /etc/ldap.conf

Copy files over from a preconfigured host

scp p655-1:/etc/openldap/ldap.conf /usr/share/etc/openldap/
scp p655-1:/etc/ldap.conf /usr/share/etc/

Fix SSL paths in both ldap.conf files to reference the correct SSL cert dir path:

TLS_CACERTDIR /etc/sfw/openssl/certs
<pre>

Install the root CA cert:
<pre>
/home/users/brandond/scripts/install_nic_cacert.sh /etc/sfw/openssl/certs

Disable NSCd, as it doesn't understand how to talk to PADL's nss_ldap

svcadm disable /system/name-service-cache