Due to their ever increasing size, management of computer networks and providing users with easy access to them has become a daunting task. Many of the problems inherent to large networks can be solved with a centralized user management. The following sections show which requirements would be posed to a centralized user management and how such a system was implemented using directory technology during the course of this thesis.
A typical organization that runs a pool of Linux PCs would require the following services to make use of a central directory:
In the outlined network, the directory service is a mission critical application. It must therefore:
The idea of R1.2 is to provide the user with a unified login environment. His username and password will be the same for all accessed services. This requires some special precautions to be taken:
User and group information were made available to the operating system
by means of nss_ldap (see
). [23] defines
the schema items to use with this module:
This fulfilles requirements R1.1 as well as R1.2 since
pam_ldap, which is used to handle password verification (see
), relies on the same schema items as nss_ldap.
[23] suggests the ``account'' object class as the structural class for a user's entry. With respect to R1.3, ``inetOrgPerson'' has been chosen as structural object class instead. ``inetOrgPerson'' [86] is a descendant of ``organizationalPerson'' and ``person''. It includes all the attributes that are required to build a state of the art white-pages service. Role accounts, which do not map to a real world person, would still created with ``account'' as structural object class.
Sendmail (see
) was used as the MTA in this thesis. By
default, it makes use of the schema items specified in
[53]. i.e. for an incoming email,
the MTA tries to find an entry that has a matching ``mailLocalAddress'' and
then forwards the mail to the value stored in ``mailRoutingAddress''. To avoid
redundant storage of information in order to meet requirement R1.4,
the ``mail'' attribute from ``inetOrgPerson'' was used instead of
``mailLocalAddress''. The final recipient, which would normally be retrieved
from ``mailRoutingAddress'', would now be determined from the ``userId''
attribute.
For the directory service to be highly available (R2.1), directory servers must be run redundantly on more than one host. The data can be automatically synchronized between the different hosts by the servers' replication mechanism. Clients can make use of such redundant server pool in a number of different ways:
To fulfil requirement R2.2, system accounts are kept local and are not included in the directory. Both NSS and PAM should therefore be configured to first look at the local files (e.g. /etc/passwd) and to fall back to LDAP if no match is found. For example, PAM could be set up like this by stacking the pam_pwdb and the pam_ldap module.9.5
To prevent passwords from being sent over the network in clear text, the connection between the client running pam_ldap and the directory server must be encrypted. In a similar vein, the replication traffic among directory server must also be protected. In both instances, SSL or TLS can be employed to guarantee privacy protection. However, all these precautions in the authentication back-end are useless if unprotected passwords are transmitted by front-end protocols, e.g. in Telnet or by using the IMAP login command without a security layer.
If password changes are only initiated by the Linux passwd
command, the pam_pwcheck module can be used to enforce a password
policy. Some directory servers can also check the quality of a
password themselves. If password changes can originate from other
sources than passwd, a product offering such a feature (see
)
should be used.
The design presented here uses Kerberos 5 (see Section
)
as authentication system to provide an SSO environment. It is based on
the design which can be found in Windows 2000. In Windows 2000, Microsoft has
integrated the KDC with an LDAP server. This retains the possibility
to verify a plain text passwords through an LDAP bind attempt while at
the same time providing an advanced SSO environment.
In fact, the system that was implemented uses a Windows 2000 Server to provide the KDC functionality. A second server has been set up, so that the service is still accessible in case the first server becomes unavailable. Due to its redefinition of standard attributes from multi-valued to single-valued, Active Directory cannot fully support the schema specified in [23]. It was therefore decided to use Active Directory for authentication purposes only, and to keep OpenLDAP as repository for application specific data.
All programs that use PAM to verify plain text passwords with an LDAP server
by means of pam_ldap can easily be migrated to Kerberos. pam_krb5 is
the respective PAM module that uses Kerberos as authentication back-end. This
module verifies the user's password by requesting an initial Kerberos
ticket. If this operation is successful, the ticket is stored in the user's
credentials file for further use. To switch from LDAP to Kerberos password
checking, the administrator only has to replace pam_ldap with pam_krb5 in
the authentication section of the PAM configuration files. The other sections
remain unchanged. To enable a user to change his password, support for the
Active Directory specific password change mechanism has been added to
pam_ldap (see Appendix
).
To make use of the SSO functionality, applications need to support Kerberos--either directly or via GSSAPI. On the server side, the following implementations exist:
All of the Unix applications listed above support Kerberos in their command line or console applications. However, support for Kerberos in GUI applications is not very widespread. Mulberry9.7is a notable exception. This IMAP client supports the SASL GSSAPI mechanism in IMAP and SMTP. Its LDAP client is still LDAPv2 and therefore only supports simple binds.
Norbert Klasen 2001-10-22