This
article describes on how to connect a solaris server to the dsee server. This
includes serveral steps
1.1 Create ldap groups and users
Ldap
groups are used to be sure that only authenticated users can login to the
server. Two ldapgroups where created test01_user_group and test01_admin_group
in the following way:
Sample
ldif below contains a test user with appropriate objectclasses set (please note
the solarisGroup for the _adm group)
Create a file <import.ldif> with the
following content:
dn: uid=DUBEYD,ou=people,
dc=mycomp,dc=mydomain,dc=com
userPassword:
{SSHA}e2+YblxlKb8q0NOTNCNwHHld6uAdSxhdxmWWGw==
uidNumber:
10001
gecos: Deepak
Dubey
loginShell:
/bin/sh
gidNumber:
99999
givenName: Deepak
sn: Steen
objectClass:
inetorgperson
objectClass:
posixAccount
objectClass:
organizationalPerson
objectClass:
top
objectClass:
person
objectClass:
shadowAccount
uid: DUBEYD
cn: Deepak
Dubey
homeDirectory:
/home/DUBEYD
dn:
cn=Sis_Dsi_SA_servers_usr,ou=UserGroups,ou=group, dc=mycomp,dc=mydomain,dc=com
objectClass:
groupOfUniqueNames
objectClass:
top
objectClass:
posixGroup
gidNumber:
90011
uniqueMember:
uid=DUBEYD,ou=people,dc=mycomp,dc=mydomain,dc=com
cn:
Sis_Dsi_SA_servers_usr
dn: cn=omyawb12_usr,ou=UsrSubGroups,ou=UserGroups,ou=group,
dc=oam,dc=uk,
dc=tmo
objectClass:
groupOfUniqueNames
objectClass:
top
uniqueMember:
cn=Sis_Dsi_SA_servers_usr,ou=UserGroups,ou=group,dc=oam,dc=uk,d
c=tmo
cn: test01_user_group
dn: cn= omyawb12_adm,ou=AdmSubGroups,ou=AdminGroups,ou=group,
dc=mycomp,dc=mydomain,dc=com
objectClass:
groupOfUniqueNames
objectClass:
top
objectClass:solarisGroup
objectclass:posixGroup
gidNumber:99999
cn: test01_admin_group
Then from a machine where an ldapclient is
installed (for instance the dsee server) issue the following command
> ldapadd -h vDSEEWB01 -p 389 -D "cn=Directory
Manager" -f import.ldif -q
1.2 LDAP Client Setup
In order for a Solaris client to use LDAP as a
naming service the following needs to be in place.
·
The client's domain name must be
served by the LDAP server
·
The nsswitch.conf file needs to
point to LDAP for the required services
·
The client needs to be configured
with all the given parameters that define its behavior
·
ldap_cachemgr needs to be running
on the client
·
At least one server for which a
client is configured must be up and running
The ldapclient utility is the key to setting
up an LDAP client, as it performs all of the above steps, except for starting
the server.
1.2.1 Execute ldapclient for client registration
Login
to the server you want to connect to ldap as root (via sudo) and execute the
below command.
Below
you can substitue the proxyDN value with any user’s DN who has search access
rights on the defaultsearchbase. Last IP address is ip address of DSEE server
machine.
Password
will be stored encrypted.
ldapclient manual -v -a
defaultsearchbase=dc=mycomp,dc=mydomain,dc=com -a
proxyDN=cn=admin,cn=Administrators,cn=dscc -a
serviceSearchDescriptor=group:ou=group,dc=mycomp,dc=mydomain,dc=com "serviceSearchDescriptor=shadow:ou=people,dc=mycomp,dc=mydomain,dc=com?sub?(isMemberOf=cn=test01_user_group,ou=UsrSubGroups,ou=UserGroups,ou=group,dc=mycomp,dc=mydomain,dc=com)" "serviceSearchDescriptor=passwd:ou=people,dc=mycomp,dc=mydomain,dc=com?sub?(isMemberOf=cn=test01_user_group,ou=UsrSubGroups,ou=UserGroups,ou=group,dc=mycomp,dc=mydomain,dc=com)"
-a credentialLevel=proxy -a authenticationMethod=simple -a proxypassword=password
-a domainName=oam.uk.tmo 10.225.248.125
After
the execution of above command you can verify if the settings are set.
> ldapclient list
|
1.2.2 Overwrite /etc/pam.conf
Login
to the server you want to connect to ldap as root (via sudo) and backup the
existing /etc/pam.conf file
Overwrite
the content of /etc/pam.conf with the following:
#
#ident "@(#)pam.conf 1.31 07/12/07
SMI"
#
#
Copyright 2007 Sun Microsystems, Inc.
All rights reserved.
#
Use is subject to license terms.
#
#
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 required pam_dial_auth.so.1
login auth binding pam_unix_auth.so.1 server_policy
login auth required pam_ldap.so.1
#
#
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 binding pam_unix_auth.so.1 server_policy
rlogin auth required pam_ldap.so.1
#
#
Kerberized rlogin service
#
krlogin auth required pam_unix_cred.so.1
krlogin auth required pam_krb5.so.1
#
#
rsh service (explicit because of pam_rhost_auth,
#
and pam_unix_auth for meaningful pam_setcred)
#
rsh auth sufficient pam_rhosts_auth.so.1
rsh auth required pam_unix_cred.so.1
rsh
auth binding pam_unix_auth.so.1 server_policy
rsh
auth required pam_ldap.so.1
#
#
Kerberized rsh service
#
krsh auth required pam_unix_cred.so.1
krsh auth required pam_krb5.so.1
#
#
Kerberized telnet service
#
ktelnet auth required pam_unix_cred.so.1
ktelnet auth required pam_krb5.so.1
#
#
PPP service (explicit because of pam_dial_auth)
#
ppp auth requisite pam_authtok_get.so.1
ppp auth required pam_dhkeys.so.1
ppp auth required pam_unix_cred.so.1
ppp auth binding pam_unix_auth.so.1 server_policy
ppp auth required pam_dial_auth.so.1
ppp auth required pam_ldap.so.1
#
#
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 binding pam_unix_auth.so.1 server_policy
other auth required pam_ldap.so.1
#
#
passwd command (explicit because of a different authentication module)
#
passwd auth binding pam_passwd_auth.so.1 server_policy
passwd auth required pam_ldap.so.1
#
#
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 requisite pam_roles.so.1
other
account binding pam_unix_account.so.1 server_policy
other
account required pam_ldap.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
other
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
#
#
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 debug server_policy
#
#
Support for Kerberos V5 authentication and example configurations can
#
be found in the pam_krb5(5) man page under the "EXAMPLES" section.
#
1.2.3 Overwrite /etc/nsswitch.conf file.
Back up the existing file and overwrite the
contents with the below text.
#
# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "@(#)nsswitch.ldap 1.10 06/05/03 SMI"
#
# /etc/nsswitch.ldap:
#
# An example file that could be copied over
to /etc/nsswitch.conf; it
# uses LDAP in conjunction with files.
#
# "hosts:" and
"services:" in this file are used only if the
# /etc/netconfig file has a "-"
for nametoaddr_libs of "inet" transports.
# LDAP service requires that
svc:/network/ldap/client:default be enabled
# and online.
# the following two lines obviate the
"+" entry in /etc/passwd and /etc/group.
passwd:
files ldap
#passwd: compat
#passwd_compat: ldap
group:
files ldap
# consult /etc "files" only if
ldap is down.
hosts:
files dns
# Note that IPv4 addresses are searched for
in all of the ipnodes databases
# before searching the hosts databases.
ipnodes:
files dns
networks:
files dns
protocols:
ldap [NOTFOUND=return] files
rpc:
ldap [NOTFOUND=return] files
ethers:
ldap [NOTFOUND=return] files
netmasks:
ldap [NOTFOUND=return] files
bootparams: ldap [NOTFOUND=return] files
publickey:
ldap [NOTFOUND=return] files
netgroup:
ldap
automount:
files ldap
aliases:
files ldap
# for efficient getservbyname() avoid ldap
services:
files ldap
printers:
user files ldap
auth_attr:
files ldap
prof_attr:
files ldap
project:
files ldap
tnrhtp:
files ldap
tnrhdb:
files ldap
|
1.2.4 Copy pam_mkhomedir.so file
Transfer
pam_mkhomedir.so from subversion or deliverables to the client machine and copy
it to /usr/lib/security directory.
1.2.5 Add sudo configuration
Using viduo add the following line to the sudoers file:
%test01_admin_group ALL=(ALL) ALL
|
1.2.6 Restart ldap client service
Issue the below command.
> svcadm restart
network/ldap/client:default
|
1.2.7 Solaris Native LDAP client side
# Create NSS DB (Don't enter password. Just hit
return)
certutil -N -d /var/ldap
chmod 444 /var/ldap/\*
# Download the Test CA certificate on the client machine into a temporary location. Ex: /var/tmp/cacert.pem
# Add CA certificate to the NSS DB
certutil -A -n "ca-cert" -i /var/tmp/cacert.pem -a -t CT -d /var/ldap
# Verify that "myhost" is fully qualified. Else modify /etc/hosts (and if necessary /etc/nssswitch.conf)
getent hosts 11.22.33.44
11.22.33.44 myhost.test.sun.com
# Test with ldapsearch
ldapsearch -v -h myhost.test.sun.com -p 636 -Z -P /var/ldap/cert8.db -b "dc=sun,dc=com" -s base "objectclass=\*"
# Initialize Native LDAP client using profile "tls-profile".
/usr/sbin/ldapclient init -a profileName=tls-profile -a domainname=test.sun.com -a proxyDN=cn=proxyagent,ou=profile,dc=test,dc=sun,dc=com -a proxyPassword=proxy 11.22.33.44
certutil -N -d /var/ldap
chmod 444 /var/ldap/\*
# Download the Test CA certificate on the client machine into a temporary location. Ex: /var/tmp/cacert.pem
# Add CA certificate to the NSS DB
certutil -A -n "ca-cert" -i /var/tmp/cacert.pem -a -t CT -d /var/ldap
# Verify that "myhost" is fully qualified. Else modify /etc/hosts (and if necessary /etc/nssswitch.conf)
getent hosts 11.22.33.44
11.22.33.44 myhost.test.sun.com
# Test with ldapsearch
ldapsearch -v -h myhost.test.sun.com -p 636 -Z -P /var/ldap/cert8.db -b "dc=sun,dc=com" -s base "objectclass=\*"
# Initialize Native LDAP client using profile "tls-profile".
/usr/sbin/ldapclient init -a profileName=tls-profile -a domainname=test.sun.com -a proxyDN=cn=proxyagent,ou=profile,dc=test,dc=sun,dc=com -a proxyPassword=proxy 11.22.33.44