Article Contents
This article is presented in the following four parts:
- Part 1 -- Installation and Configuration
- Part 2 -- Client Configurations for the Solaris OS
- Part 3 -- Client Configurations for Red Hat Linux and AIX
- Part 4 -- Post-Configuration Tasks
Note: When you run the commands shown in the procedures of this article, replace COMPANY with a value that is appropriate for your environment.
Part 4 -- Post-Configuration Tasks
Part 4 provides information on additional tasks you must perform on the four servers (referred to here as "directory servers") on which you installed Sun Java System Directory Server 6.0 (hereafter referred to as "Directory Server").
Part 4 Contents
- Recommendations for Directory Server Access Control
- Setting Up ACIs for No Anonymous Access
- Setting Up ACIs for Anonymous Access During Solaris Client Setup
- Changing Directory Server Password Compatibility Mode
- Tracking Last Login Time
Recommendations for Directory Server Access Control
The control of access is integral to creating a secure directory. Directory Server Access Control Instructions (ACIs) determine which permissions are granted to users accessing the directory.
The following are recommendations for controlling access to the directory:
- Anonymous access should not be permitted. All operations should require a bind.
- Directory Server administration capabilities should be restricted to a group of selected users.
- Regular users should be restricted to accessing their own entry in the directory and should not have the ability to access other user entries.
- All users should have the ability to read, search, and compare their own attributes except for the
userPasswordattribute. - Users should be restricted from modifying their own attributes except for
passwordandloginShell. - The proxy account used by Solaris clients should have the ability to read, compare, and search entries in the directory.
Note: When initializing Solaris clients to a directory server for authentication and authorization, the ldapclient command might fail when anonymous access is not granted in the directory. Use the instructions in Setting Up ACIs for Anonymous Access During Solaris Client Setup to grant anonymous access when initializing new Solaris clients. Revert to disallowing anonymous access, as described in Setting Up ACIs for No Anonymous Access, when the client setup is complete.
Setting Up ACIs for No Anonymous Access
To set up ACIs as previously recommended, use the following ldif output and commands.
Note: To temporarily allow anonymous access for Solaris client initialization, do not use the following ACIs. Instead, use the information in the Setting Up ACIs for Anonymous Access During Solaris Client Setup section.
# cat acis.ldif
dn: dc=COMPANY,dc=com
changetype: modify
replace: aci
aci: (target="ldap:///dc=COMPANY,dc=com") (targetattr="*")
(version 3.0; acl "allow all Admin group"; allow (all)
groupdn = "ldap:///cn=Directory Administrators,ou=Groups,
dc=COMPANY,dc=com";)
aci: (target="ldap:///dc=COMPANY,dc=com") (targetattr !=
"userPassword") (version 3.0; acl "allow self read search compare";
allow(read,search,compare) userdn = "ldap:///self";)
aci: (targetattr = "cn||uid||uidNumber||gidNumber||homeDirectory|
|shadowLastChange||shadowMin||shadowMax||shadowWarning|
|shadowInactive||shadowExpire||shadowFlag||memberUid")
(version 3.0; acl LDAP_Naming_Services_deny_write_access; deny
(write) userdn = "ldap:///self");
aci: (targetattr = "loginShell") (version 3.0;acl
"LDAP_Naming_Services_allow_certain_changes"; allow (write)
userdn = "ldap:///self";)
aci: (target="ldap:///dc=COMPANY,dc=com") (targetattr !=
"userPassword") (version 3.0; acl "LDAP_Naming_Services_proxy_read";
allow(read,search,compare) userdn =
"ldap:///cn=proxyagent,ou=people,dc=COMPANY,dc=com";)
# ldapmodify -D "cn=Directory Manager" -w <password> -f
acis.ldif
Setting Up ACIs for Anonymous Access During Solaris Client Setup
When initializing Solaris clients, Directory Server access control needs to be modified to allow anonymous access. Use the following ldif output and command to set up Directory Server to allow anonymous access. Note that anonymous access across the entire Directory is not required; the access described below is sufficient. The ACIs below configure anonymous access for the baseDN (dc=company,dc=om) only, and the entire ou=profile container.
# more anonacis.ldif
dn:dc=company,dc=com
changetype:modify
replace:aci
aci: (target = ldap:///dc=company,dc=com) (targetscope = base)
(targetattr=\"*\") (version 3.0; acl \"anonymousBaseDN\"; allow (read,
compare, search) (userdn = \"ldap:///anyone\") ;)
dn:dc=company,dc=com
changetype:modify
replace:aci
aci: (target = ldap:///dc=company,dc=com) (targetscope = subtree)
(targetattr=\"*\") (version 3.0; acl \"anonymousProfile\"; allow
(read,compare,search) (userdn = \"ldap:///anyone\") ;)
# ldapmodify -D "cn=Directory Manager" -w <password> -f
acis.ldif
Changing Directory Server Password Compatibility Mode
Use the following commands to change the password compatibility mode to DS6-mode:
# dsconf pwd-compat to-DS6-migration-mode
Certificate "CN=server1, CN=636, CN=Directory Server,
O=Sun Microsystems" presented by the server is not trusted.
Type "Y" to accept, "y" to accept just once, "n" to refuse,
"d" for more details: d
Issued to : CN=server1, CN=636,
CN=Directory Server, O=Sun Microsystems
Issued by : CN=server1, CN=636,
CN=Directory Server, O=Sun Microsystems
Valid from : Mon Jul 02 18:19:15 GMT 2007
Expires on : Tue Oct 02 18:19:15 GMT 2007
Serial Number : 86897bba
Certificate authentication type : RSA
Version Number : 3
Signature Algorithm : MD5withRSA
Signature Algorithm OID : 1.2.840.113549.1.1.4
Public Key :
SunPKCS11-Solaris RSA public key, 1024 bits (id 6041136,
session object)
modulus: 1201140033050440873622914893869572523732486861655252453
76038575821960150918592159554191795232415668431756269205253616
35136507558785581173218946484219909493476056071926643238902404
25948072657153570505623841303358713820181379250571271138936591
65055434817450676894195553748813724944144707264215467526093715
998409
public exponent: 65537
Signature :
0000: 38 E6 E2 A8 84 47 6D 4C BA A7 CF AB 90 A9 B3 5A
8....GmL.......Z
0010: FB 26 36 07 2D 4D BC 5C 1A 8E 26 5E 39 49 5C 91
.&6.-M.\..&^9I\.
0020: B5 FB 5D 51 91 AC 63 DA 13 3E E9 C4 DD D1 B3 BF
..]Q..c..>......
0030: A4 BD 52 39 19 BD 1A 92 2F 36 EC 67 29 0F 68 1B
..R9..../6.g).h.
0040: 3A 3E BA 86 D1 44 5C 80 10 FC BA 85 3E FA B7 B5
:>...D\.....>...
0050: 07 82 4E 73 4D A2 9F D2 09 A4 E0 35 0A 79 AB DB
..NsM......5.y..
0060: 61 C2 D1 CF BF EB 3D 3E C4 2F F5 90 E2 79 DB 04
a.....=>./...y..
0070: 31 3A 52 37 B2 BD F7 CE 33 5D BB 32 FB 21 27 68
1:R7....3].2.!'h
Type "Y" to accept, "y" to accept just once or "n" to refuse: Y
Enter "cn=Directory Manager" password:
## Beginning password policy compatibility changes.
## Password policy compatibility changes finished.
# dsconf pwd-compat to-DS6-mode
Tracking Last Login Time
If your requirements state that the lastLoginTime of users must be tracked, using the attribute pwdKeepLastAuthTime in the global password policy, then proceed as follows.
Enable tracking of last login time.
Set this attribute in the Global Password Policy:
pwdKeepLastAuthTime: true
However, this can create a load on the servers. In particular the last login time of the ProxyAgent user will be tracked far more frequently than regular users. The result is that the replication changelog file can grow rapidly as it tracks last login time. To circumvent this problem, eliminate last login time tracking for the ProxyAgent user only as follows.
Create a special password policy, not to log last auth time, and assign this policy to the ProxyAgent user.
Create an LDIF file, pwdpolicypxyagent.ldif, containing the password policy for the ProxyAgent user. See the bold line below ensuring that last auth time is not logged.
dn: cn=DirectorypwdPolicyPxyAgent1,ou=PasswordPolicy,dc=company,
dc=com
changetype: add
objectclass: pwdPolicy
objectclass: sunPwdPolicy
objectclass: ldapsubentry
objectclass: top
cn: Password Policy Proxy Agent
description: Password Policy Proxy Agent
pwdAttribute: userPassword
pwdAllowUserChange: true
pwdGraceAuthNLimit: 0
pwdMustChange: False
pwdCheckQuality: 0
pwdMinAge: 0
pwdMaxAge: 0
pwdExpireWarning: 432000
pwdInHistory: 0
pwdSafeModify: true
pwdMaxFailure: 5
pwdFailureCountInterval: 0
pwdLockout: false
pwdLockoutDuration: 0
pwdIsLockoutPrioritized: false
pwdKeepLastAuthTime: false
passwordRootdnMayBypassModsChecks: on
passwordStorageScheme: SSHA
Add the password policy to the Directory:
ldapmodify -D "cn=directory manager" -f
/export/home/pwdpolicypxyagent.ldif
Assign the policy to the ProxyAgent user, using this LDIF file, pxyagentpwd.ldif:
dn: cn=proxyagent,ou=profile,dc=company,dc=com
changetype: modify
add: pwdPolicySubentry
pwdPolicySubentry: cn=DirectorypwdPolicyPxyAgent,ou=PasswordPolicy,dc=company,
dc=com
ldapmodify -D "cn=directory manager" -f
/export/home/pxyagentpwd.ldif