The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
All other trademarks are the property of their respective owners.
Identity and policy management — for both users and machines — is a core function for almost any enterprise environment. IPA provides a way to create an identity domain that allows machines to enroll to a domain and immediately access identity information required for single sign-on and authentication services, as well as policy settings that govern authorization and access. This manual covers all aspects of installing, configuring, and managing IPA domains, including both servers and clients. This guide is intended for IT and systems administrators.
Identity Management is a Red Hat Enterprise Linux-based way to create a security, identity, and authentication domain. The different security and authentication protocols available to Linux and Unix systems (like Kerberos, NIS, DNS, PAM, and sudo) are complex, unrelated, and difficult to manage coherently, especially when combined with different identity stores.
Identity Management provides a layer that unifies all of these disparate services and simplifies the administrative tasks for managing users, systems, and security. IPA breaks management down into two categories: identity and policy. It centralizes the functions of managing the users and entities within your IT environment (identity) and then provides a framework to define authentication and authorization for a global security framework and user-friendly tools like single sign-on (policy).
1. Audience and Purpose
With Identity Management, a Red Hat Enterprise Linux system can easily become the center of an identity/authentication domain and even provide access to the domain for clients of other operating systems. IPA is an integrated system, that builds on existing and reliable technologies like LDAP and certificate protocols, with a robust yet straightforward set of tools (including a web-based UI). The key to identity/policy management with IPA is simplicity and flexibility:
Centralized identity stores for authentication and single sign-on using both integrated LDAP services (with 389 Directory Server) and, optionally, NIS services
Clear and manageable administrative control over system services like PAM, NTP, and sudo
Simplified DNS domains and maintenance
Scalable Kerberos realms and cross-realms which clients can easily join
This guide is written for systems administrators and IT staff who will manage IPA domains, user systems, and servers. This assumes a moderate knowledge of Linux-based systems administration and familiarity with important concepts like access control, LDAP, and Kerberos.
This guide covers every aspect of using IPA, including preparation and installation processes, administrative tasks, and the IPA tools. This guide also explains the major concepts behind both identity and policy management, generally, and IPA features specifically. Administrative tasks in this guide are categorized as either Identity or Policy in the chapter title to help characterize the administrative functions.
2. Examples and Formatting
Each of the examples used in this guide, such as file locations and commands, have certain defined conventions.
2.1. Brackets
Square brackets ([]) are used to indicate an alternative element in a name. For example, if a tool is available in /usr/lib on 32-bit systems and in /usr/lib64 on 64-bit systems, then the tool location may be represented as /usr/lib[64].
2.2. Client Tool Information
The tools for IPA are located in the /usr/bin and the /usr/sbin directories.
The LDAP tools used to edit the IPA directory services, such as ldapmodify and ldapsearch, are from OpenLDAP. OpenLDAP tools use SASL connections by default. To perform a simple bind using a username and password, use the -x argument to disable SASL.
2.3. Text Formatting and Styles
Certain words are represented in different fonts, styles, and weights. Different character formatting is used to indicate the function or purpose of the phrase being highlighted.
Formatting Style
Purpose
Monospace with a background
This type of formatting is used for anything entered or returned in a command prompt.
Italicized text
Any text which is italicized is a variable, such as instance_name or hostname. Occasionally, this is also used to emphasize a new term or other phrase.
Bolded text
Most phrases which are in bold are application names, such as Cygwin, or are fields or options in a user interface, such as a User Name Here: field or Save button. This can also indicate a file, package, or directory name, such as /usr/sbin.
Other formatting styles draw attention to important text.
NOTE
A note provides additional information that can help illustrate the behavior of the system or provide more detail for a specific issue.
IMPORTANT
Important information is necessary, but possibly unexpected, such as a configuration change that will not persist after a reboot.
WARNING
A warning indicates potential data loss, as may happen when tuning hardware for maximum performance.
3. Giving Feedback
If there is any error in this book or there is any way to improve the documentation, please let us know. Bugs can be filed against the documentation for IPA through Bugzilla, http://bugzilla.redhat.com/bugzilla. Make the bug report as specific as possible, so we can be more effective in correcting any issues:
Select the Red Hat group and the Red Hat Enterprise Linux 6 product.
Set the component to doc-Enterprise_Identity_Management_Guide.
For errors, give the page number (for the PDF) or URL (for the HTML), and give a succinct description of the problem, such as incorrect procedure or typo.
For enhancements, put in what information needs to be added and why.
Give a clear title for the bug. For example, "Incorrect command example for setup script options" is better than "Bad example".
We appreciate receiving any feedback — requests for new sections, corrections, improvements, enhancements, even new ways of delivering the documentation or new styles of docs. You are welcome to contact Red Hat Content Services directly at docs@redhat.com.
4. Document Change History
Revision History
Revision 6.2-7
December 6, 2011
Ella DeonLackey
Release for GA of Red Hat Enterprise Linux 6.2.
Release Information
Identity Management is part of Red Hat Enterprise Linux 6, so major features, known issues, and bug fixes are covered in the Red Hat Enterprise Linux release notes. This section is provided as a convenient reference for significant issues that are in Identity Management 2.1. The full list of known issues related to Identity Management is in the Red Hat Enterprise Linux 6.2 Technical Notes.
It is not possible to change the uidNumber or gidNumber of a user when using SSSD. SSSD caches the authentication information; when the user is deleted and re-added with a new uidNumber number, then SSSD attempts to reuse the cached object for the new user, which fails wit this error:
Cache file [/tmp/krb5cc_1866400007_wPJrHJ] exists, but is owned by [1866400007] instead of [1866400008].
SSSD does not support the LDAP password expiration controls, so it does not support password expiration notifications or warnings. The 389 Directory Server instance used by Identity Management does support these controls.
In the directory, calling hash_create() with an initial table size of 65536 will corrupt memory. With the default parameters, the corruption can occur if the initial table size larger than 1024.
The way that Active Directory performs referrals is different than the way that the OpenLDAP libraries (used by the 389 Directory Server instance in Identity Management) performs referrals. Intermittently, Active Directory may return a referral during an LDAP bind attempt that is denied by the OpenLDAP libraries. This can cause performance problems, information loss, or for SSD to go offline.
To work around this, set this parameter in sssd.conf:
SSSD does not support the LDAP password expiration controls, so it does not support password expiration notifications or warnings. The 389 Directory Server instance used by Identity Management does support these controls.
When updating the list of object classes for a user or group entry, it is possible to delete object classes which are required by IPA. The UI and CLI do not prevent the required object classes from being deleted, but adding a user or group after the change will fail with object class violations.
When an IPA server is installed with a custom hostname that is not resolvable, the ipa-server-install command should add a record to the static hostname lookup table in /etc/hosts and enable further configuration of Identity Management integrated services. However, a record is not added to /etc/hosts when an IP address is passed as an CLI option and not interactively. Consequently, IPA server installation fails because integrated services that are being configured expect the IPA server hostname to be resolvable.
There are two ways to work around this issue:
Run the ipa-server-install without the --ip-address option and pass the IP address interactively.
Add a record to /etc/hosts before the installation is started. The record should contain the Identity Management server IP address and its full hostname (the hosts(5) man page specifies the record format).
Searches can be performed on attributes that are not displayed in the UI. This means that entries can be returned in a search that do not appear to match the given filter. This is especially common if the search information is very short, which increases the likelihood of a match.
On the configuration page of the Identity Management WebUI, if the User search field is left blank, and the search button is clicked, an internal error is returned.
The IPA information is stored in a separate LDAP directory than the certificate information, and these two LDAP databases are replicated separately. It is possible for a replication agreement to be broken for one directory and working for another, which can cause problems with managing clients.
For example, an IPA server and replica have a function replication agreement between their IPA databases, but the replication agreement between their CA databases is broken. If a host is created on the server, the host entry is replicated over to the replica — but the certificate for that host is not replicated. The replica is aware of the client, but any management operations for that client will fail because the replica doesn't have a copy of its certificate.
The CA replication agreement can be recreated using the ipa-csreplica-manage utility.
If any previous version of Red Hat Enterprise IPA or the Identity Management tech preview are installed, they must be uninstalled before the latest version of Identity Management can be installed and configured. Otherwise, there are problems connecting to the Identity Management LDAP server.
It should be possible to reconnect a replica to a master IPA server (meaning, to create a new replication agreement), using the ipa-replica-manage connect command. However, once a connection between a replica and server is deleted using ipa-replica-manage del, a new connection cannot be created. It fails with this error:
The ipa-replica-manage script manages both replication agreements betweenn IPA servers and synchronization agreements between an IPA server and an Active Directory server.
The force-sync, del, and re-initialize subcommands with ipa-replica-manage do not work when managing sync agreements, so these operations fail when run against an Active Directory server.
The IPA server cannot be installed on a machine with a dual NIC. When two DNS A records exist for the same hostname, the installer fails with this error:
Server host name [server1.example.com]:
Warning: skipping DNS resolution of host server1.example.com
The domain name has been calculated based on the host name.
Please confirm the domain name [example]:
Unable to resolve IP address for host name
Please provide the IP address to be used for this host name:
Red Hat Identity Management is a way to create identity stores, centralized authentication, domain control for Kerberos and DNS services, and authorization policies — all on Linux systems, using native Linux tools. While centralized identity/policy/authorization software is hardly new, Identity Management is one of the only options that supports Linux/Unix domains.
Identity Management provides a unifying skin for standards-defined, common network services, including PAM, LDAP, Kerberos, DNS, NTP, and certificate services, and it allows Red Hat Enterprise Linux systems to serve as the domain controllers.
Identity Management defines a domain, with servers and clients who share centrally-managed services, like Kerberos and DNS. This chapter first explains what Identity Management is. This chapter also covers how all of these services work together within the domain and how servers and clients work with each other.
1.1. IPA v. LDAP: A More Focused Type of Service
At the most basic level, Red Hat Identity Management is a domain controller for Linux and Unix machines. Identity Management defines the domain, using controlling servers and enrolled client machines. This provides centralized structure that has previously been unavailable to Linux/Unix environments, and it does it using native Linux applications and protocols.
1.1.1. A Working Definition for Identity Management
Security information frequently relates to identities of users, machines, and services. Once the identity is verified, then access to services and resources can be controlled.
For efficiency, risk management, and ease of administration, IT administrators try to manage identities as centrally as possible and to unite identity management with authentication and authorization policies. Historically, Linux environments have had a very difficult time establishing this centralized management. There are a number of different protocols (such as NIS and Kerberos) which define domains, while other applications store data (such as LDAP) and still others manage access (such as sudo). None of these applications talk to each other or use the same management tools. Every application had to be administered separately and it had to be managed locally. The only way to get a consistent identity policy was to copy configuration files around manually or to try to develop a proprietary application to manage identities and policies.
The goal of Identity Management is to simplify that administrative overhead. Users, machines, services, and polices are all configured in one place, using the same tools. Because IPA creates a domain, multiple machines can all use the same configuration and the same resources simply by joining the domain. Users only have to sign into services once, and administrators only have to manage a single user account.
IPA does three things:
Create a Linux-based and Linux-controlled domain. Both IPA servers and IPA clients are Linux or Unix machines. While IPA can synchronize data with an Active Directory domain to allow integration with Windows servers, it is not an administrative tools for Windows machines and it does not support Windows clients. Identity Management is a management tool for Linux domains.
Centralize identity management and identity policies.
Build on existing, native Linux applications and protocols. While IPA has its own processes and configuration, its underlying technologies are familiar and trusted by Linux administrators and are well established on Linux systems.
In a sense, Identity Management isn't making administrators do something new; it is helping them do it better. There are a few ways to illustrate that.
On one extreme is the low control environment. Little Example Corp. has several Linux and Unix servers, but each one is administered separately. All passwords are kept on the local machine, so there is no central identity or authentication process. Tim the IT Guy just has to manage users on every machine, set authentication and authorization policies separately, and maintain local passwords. With IPA, things come to order. There is a simple way to have central user, password, and policy stores, so Tim the IT Guy only has to maintain the identities on one machine (the IPA server) and users and policies are uniformly applied to all machines. Using host-based access control, delegation, and other rules, he can even set different access levels for laptops and remote users.
In the middle is the medium control environment. Mid-Example Corp. has several Linux and Unix servers, but Bill the IT Guy has tried to maintain a greater degree of control by creating a NIS domain for machines, an LDAP directory for users, and Kerberos for authentication. While his environment is well under control, every application has to be maintained separately, using different tools. He also has to update all of the services manually whenever a new machine is added to his infrastructure or when one is taken offline. In this situation, IPA greatly reduces his administrative overhead because it integrates all of the different applications together seamlessly, using a single and simplified tool set. It also makes it possible for him to implement single sign-on services for all of the machines in his domain.
On the other extreme is the absent control environment. At Big Example Corp., most of the systems are Windows based and are managed in a tightly-knit Active Directory forest. However, development, production, and other teams have many Linux and Unix systems — which are basically excluded from the Windows controlled environment. IPA brings native control to the Linux/Unix servers, using their native tools and applications — something that is not possible in an Active Directory forest. Additionally, because IPA is Windows-aware, data can be synchronized between Active Directory and IPA, preserving a centralized user store.
IPA provides a very simple solution to a very common, very specific problem: identity management.
1.1.2. Contrasting Identity Management with a Standard LDAP Directory
The closest relative to Identity Management is a standard LDAP directory like 389 Directory Server, but there are some intrinsic differences between what they do and what they're intended to do.
First, it helps to understand what a directory service is. A directory service is a collection of software, hardware, and processes that stores information. While directory services can be highly specific (for example, DNS is a directory service because it stores information on hostnames), a generic directory service can store and retrieve any kind of information. LDAP directories like 389 Directory Server are generic directories. They have a flexible schema that supports entries for users, machines, network entities, physical equipment, and buildings, and that schema can be customized to define entries of almost anything. Because of its extensibility, LDAP servers like 389 Directory Server are frequently used as backends that store data for other applications. 389 Directory Server not only contains information, it organizes information. LDAP directories uses a hierarchical structure, a directory tree, that organize entries into root entries (suffixes), intermediate or container entries (subtrees or branches), and leaf entries (the actual data). Directory trees can be very complex, with a lot of branch points, or very simple (flat) with few branch points.
The primary feature of an LDAP directory is its generality. It can be made to fit into a variety of applications.
Identity Management, on the other hand, has a very specific purpose and fits a very specific application. It is not a general LDAP directory, it is not a backend, and it is not a general policy server. It is not generic.
Identity Management focuses on identities (user and machine) and policies that relate to those identities and their interactions. While it uses an LDAP backend to store its data, IPA has a highly-customized and specific set of schema that defines a particular set of identity-related entries and defines them in detail. It has a relatively flat and simple directory tree because it has only a handful of entry types and relationships that are relevant to its purpose. It has rules and limitations on how the IPA server can be deployed because it can only be deployed for a specific purpose: managing identities.
The restrictions on IPA also give it a great deal of administrative simplicity. It has a simple installation process, a unified set of commands, and a clearly defined role in the overall IT infrastructure. An IPA domain is easy to configure, easy to join, and easy to manage, and the functions that it serves — particularly identity/authentication tasks like enterprise-wide single sign-on — are also easier to do with IPA than with a more general-purpose directory service.
Table 1.1. Identity Management Compared to 389 Directory Server
389 Directory Server
Identity Management
Use
General purpose
Single domain, focused on identity management
Flexibility
Highly-customizable
Limitations to focus on identity and authentication
Schema
Default LDAP schema
Optimized, special schema for identity management
Directory Tree
Standard and flexible hierarchy
Flat tree with a fixed hierarchy
Authentication
LDAP
Kerberos or Kerberos and LDAP
Active Directory Synchronization
Bi-directional
Unidirectional, Active Directory to Identity Management
Password Policies
LDAP-based
Kerberos-based
User Tools
Java Console and standard LDAP utilities
Web-based UI and special Python command-line tools
LDAP directories like 389 Directory Server have flexibility and adaptability which makes them a perfect backend to any number of applications. Its primary purpose is to store and retrieve data efficiently.
IPA fills a very different niche. It is optimized to perform a single task very effectively. It stores user information and authentication and authorization policies, as well as other information related to access, like host information. Its single purpose is to manage identities.
1.2. Bringing Linux Services Together
Identity Management unifies disparate yet related Linux services into a single management environment. From there, it establishes a simple, easy way to bring host machines into the domain of those services.
An IPA server is, at its core, an identity and authentication server. The primary IPA server, essentially a domain controller, uses a Kerberos server and KDC for authentication. An LDAP backend contains all of the domain information, including users, client machines, and domain configuration.
Figure 1.1. The IPA Server: Unifying Services
Other services are included to provide support for the core identity/authentication functions. DNS is used for machine discovery and for connecting to other clients in the domain. NTP is used to synchronize all domain clocks so that logging, certificates, and operations can occur as expected. A certificate service provides certificates for Kerberos-aware services. All of these additional services work together under the control of the IPA server.
The IPA server also has a set of tools which are used to manage all of the IPA-associated services. Rather than managing the LDAP server, KDC, or DNS settings individually, using different tools on local machines, IPA has a single management toolset (CLI and web UI) that allows centralized and cohesive administration of the domain.
1.2.1. Authentication: Kerberos KDC
Kerberos is an authentication protocol. Kerberos uses symmetric key cryptography to generate tickets to users. Kerberos-aware services check the ticket cache (a keytab) and authenticate users with valid tickets.
Kerberos authentication is significantly safer than normal password-based authentication because passwords are never sent over the network — even when services are accessed on other machines.
In Identity Management, the Kerberos administration server is set up on the IPA domain controller, and all of the Kerberos data are stored in IPA's backend Directory Server. The Directory Server instance defines and enforces access controls for the Kerberos data.
NOTE
Th IPA Kerberos server is managed through IPA tools instead of Kerberos tools because all of its data are stored in the Directory Server instance. The KDC is unaware of the Directory Server, so managing the KDC with Kerberos tools does not effect the IPA configuration.
1.2.2. Data Storage: 389 Directory Server
Identity Management contains an internal 389 Directory Server instance. All of the Kerberos information, user accounts, groups, services, policy information, DNS zone and host entries, and all other information in IPA is stored in this 389 Directory Server instance.
When multiple servers are configured, they can talk to each other because 389 Directory Server supports multi-master replication. Agreements are automatically configured between the initial server and any additional replicas which are added to the domain.
1.2.3. Authentication: Dogtag Certificate System
Kerberos can use certificates along with keytabs for authentication, and some services require certificates for secure communication. Identity Management includes a certificate authority, through Dogtag Certificate System, with the server. This CA issues certificates to the server, replicas, and hosts and services within the IPA domain.
The CA can be a root CA or it can have its policies defined by another, external CA (so that it is subordinate to that CA). Whether the CA is a root or subordinate CA is determined when the IPA server is set up.
1.2.4. Server/Client Discovery: DNS
Identity Management defines a domain — multiple machines with different users and services, each accessing shared resources and using shared identity, authentication, and policy configuration. The clients need to be able to contact each other, as IPA servers. Additionally, services like Kerberos depend on hostnames to identify their principal identities.
Hostnames are associated with IP address using the Domain Name Service (DNS). DNS maps hostnames to IP addresses and IP addresses to hostnames, providing a resource that clients can use when they need to look up a host. From the time a client is enrolled in the IPA domain, it uses DNS to locate the IPA server and then all of the services and clients within the domain.
Multiple DNS servers are usually configured, each one working as an authoritative resource for machines within a specific domain. Having the IPA server also be a DNS server is optional, but it is strongly recommended. When the IPA server also manages DNS, there is tight integration between the DNS zones and the IPA clients and the DNS configuration can be managed using native IPA tools. Even if an IPA server is a DNS server, other external DNS servers can still be used.
1.2.5. Management: NTP
Many services require that servers and clients have the same system time, within a certain variance. For example, Kerberos tickets use time stamps to determine their validity. If the times between the server and client skew outside the allowed range, then any Kerberos tickets are invalidated.
Clocks are synchronized over a network using Network Time Protocol (NTP). A central server acts as an authoritative clock and all of the clients which reference that NTP server sync their times to match.
When the IPA server is the NTP server for the domain, all times and dates are synchronized before any other operations are performed. This allows all of the date-related services — including password expirations, ticket and certificate expirations, account lockout settings, and entry create dates — to function as expected.
The IPA server, by default, works as the NTP server for the domain. Other NTP servers can also be used for the hosts.
1.3. Relationships Between Servers and Clients
IPA itself defines a domain, a group of machines that have shared configuration, policies, and identity stores. This shared configuration allows the machines (and users) within the domain to be aware of each other and operate together. This awareness can be used to enable cross-platform compatibility, like unifying Windows and Linux systems, or to enable infrastructure-wide single sign-on.
1.3.1. About IPA Servers and Replicas
IPA works by having identified servers which are the master stores of information for user and machine identities and domain-wide policies. These servers also host domain-related services such as Kerberos and DNS. The server essentially is a central repository of identity and policy information. This information is sent routinely to the clients.
Servers can be cloned and their information mirrored onto subordinate IPA servers called replicas. IPA servers are the data masters; replicas contain copies of that information, which is synchronized between the internal 389 Directory Server and Certificate System databases through mutual replication agreements.
Figure 1.2. Server and Replica Interactions
Replicas can communicate with clients, the same as servers, so replicas provide a means to balance the loads on servers while using the same domain configuration. This load balancing is done automatically, using the SRV records in DNS. The SRV record priority sets the order that servers and replicas are contacted, while weight distributed the load between servers/replicas with the same priority. The server and replica DNS entries can be edited to change the load balancing, which is covered in Example 8.5, “SRV Record” and Section 8.12, “Changing Load Balancing for IPA Servers and Replicas”.
1.3.2. About IPA Clients
A client is simply any machine which is configured to operate within the IPA domain, using its Kerberos and DNS services, NTP settings, and certificate services. That's an important distinction: a client does not require a daemon or (necessarily) an installed product. It requires only system configurations which direct it to use IPA services.
For Red Hat Enterprise Linux systems, a certain number of platform tools are available for IPA to use, such as SSSD. These are IPA-enabled platform applications, which is simply a way of saying that they are aspects of the underlying platform that work with IPA services. Other tools, like certain PAM and NSS modules and IPA command-line utilities, are provided as IPA-specific packages that must be installed on the machine. These are IPA-related components.
Figure 1.3. Server and Client Interactions
IPA uses the local storage (cache) on a client to improve performance in a few ways:
Store IPA information when the machine is offline.
Keep information active beyond its normal timeout period if the client cannot access the central server. The cache is persistent even after rebooting the machine.
Reduce the round-trip time of requests by checking information locally before looking at the server.
Information is stored either in an LDB database (similar to LDAP) or the local filesystem (as XML files), depending on the type of information.
Identity information (about users, machines, and groups) is stored in the LDB database, which uses the same syntax as an LDAP directory. This identity information is originally stored in the IPA server's 389 Directory Server instance. Because this information changes frequently and is referenced frequently, it is important to be able to call the more current information quickly, which is possible using an LDB database on the client and the Directory Server on the server.
Policy information is more static than identity information, and it can include configuration for SELinux or sudo. These policies are set globally on the server and then are propagated to the clients. On the client, the policy information is stored in the filesystem in XML files which can be downloaded and converted into a native file for whatever service is being managed.
A specific set of services on the IPA server interact with a subset of services and modules on the IPA client. A client is any machine (a host) which can retrieve a keytab or certificates from the IPA domain.
SSSD provides the user authentication for the machine and enforces host-based access control rules.
certmonger monitors and renews the certificates on the client. It can request new certificates for the services on the system, including virtual machines.
When a Red Hat Enterprise Linux client is added to the domain (enrolled), its SSSD and certmonger are configured to connect to the IPA server and the required Kerberos keytab and host certificates are created. (The host certificate is not used directly by IPA; it may be used by other services, such as a web server.)
The IPA domain is defined and managed by an IPA server which is essentially a domain controller. There can be multiple domain controllers within a domain for load-balancing and failover tolerance. These additional servers are called replicas of the master IPA server.
Both IPA servers and replicas only run on Red Hat Enterprise Linux systems. For both servers and replicas, the necessary packages must be installed and then the IPA server or replica itself is configured through setup scripts, which configure all of the requisite services.
2.1. Supported Server Platforms
IPA 2.1 is supported on these platforms:
Red Hat Enterprise Linux 6 i386
Red Hat Enterprise Linux 6 x86_64
2.2. Preparing to Install the IPA Server
Before you install IPA, ensure that the installation environment is suitably configured. You also need to provide certain information during the installation and configuration procedures, including realm names and certain usernames and passwords. This section describes the information that you need to provide.
2.2.1. Hardware Requirements
A basic user entry is about 1 KB in size, as is a simple host entry with a certificate. The structure of the directory tree and the number of indexes in the Directory Server instance can impact the hardware required for the best performance. Table 2.1, “Minimum Hardware Requirements” lists the recommended minimums. For customized systems, additional indexes, or larger user entries, it is more effective to increase the RAM than to increase the disk space because the Directory Server stores much of its data in cache.
The system requirements for both 32-bit and 64-bit platforms are the same.
Table 2.1. Minimum Hardware Requirements
Minimum Hardware Requirements
10,000 - 250,000 Entries
250,000 - 1,000,000 Entries
Over 1,000,000 Entries
CPU
P3; 500MHz
RAM
1 GB
1 GB
1 GB
Disk Space
2 GB
4 GB
8 GB
2.2.2. Software Requirements
Most of the packages that an IPA server depends on are installed as dependencies when the IPA packages are installed. There are some packages, however, which are required before installing the IPA packages:
Kerberos 1.9
The named and bind-dyndb-ldap packages for DNS
2.2.3. Supported Web Browsers
The only supported browser to access the IPA web UI is Firefox 3.x or 4.x.
2.2.4. System Prerequisites
The IPA server is set up using a configuration script, and this script makes certain assumption about the host system. If the system does not meet these prerequisites, then server configuration may fail.
2.2.4.1. Hostname Requirements
Regardless of whether the DNS is within the IPA server or external, the server host must have DNS properly configured:
The hostname must be a fully-qualified domain name. For example, ipaserver.example.com.
IMPORTANT
This must be a valid DNS name, which means only numbers, alphabetic characters, and hyphens (-) are allowed. Other characters, like underscores, in the hostname will cause DNS failures.
The server's machine name must be set and resolve to its public IP address. The fully-qualified domain name cannot resolve to the loopback address. It must resolve to the machine's public IP address, not to 127.0.0.1. The output of the hostname command cannot be localhost or localhost6.
The reverse of the address that the hostname resolves to must match the hostname.
The DNS must be correctly configured to resolve forward and reverse addresses. The DNS does not need to be on the same machine as the IPA server, but it does need to be fully functional.
If you do not have a functional DNS, you can use the --setup-dns option when you install IPA to configure a suitable DNS automatically.
The installation process checks that the IPA server name is a DNS A record and that its reverse and forward addresses match. This check is not performed if an IPA DNS server is installed using the --setup-dns option because the script assumes that the IPA server will use itself as a DNS.
2.2.4.2. Directory Server
There must not be any instances of 389 Directory Server installed on the host machine.
2.2.4.3. System Files
The server script overwrites system files to set up the IPA domain. The system should be clean, without custom configuration for services like DNS and Kerberos, before configuring the IPA server.
2.2.4.4. System Ports
IPA uses a number of ports to communicate with its services. These ports, listed in Table 2.2, “IPA Ports”, must be open and available for IPA to work. They cannot be in use by another service or blocked by a firewall. To make sure that these ports are available, try iptables to list the available ports or nc, telnet, or nmap to connect to a port or run a port scan.
To open a port:
# iptables -A INPUT -p tcp --dport 389 -j ACCEPT
The iptables man page has more information on opening and closing ports on a system.
[c]
This is part of the Dogtag Certificate System server.
2.2.4.5. NTP
If a server is being installed on a virtual machine, that server should not run an NTP server. To disable NTP for IPA, use the --no-ntp option.
2.2.4.6. DNS
IPA uses DNS for the IPA clients to find (discover) the IPA servers. The DNS service can be managed by IPA itself, or IPA can use an existing DNS server. Without a properly configured and working DNS, server discovery for clients and IPA services like, LDAP, Kerberos, and SSL may fail to work.
2.2.4.6.1. The IPA-Generated DNS File
To help create and configure a suitable DNS setup, the IPA installation script creates a sample zone file. During the installation, IPA displays a message similar to the following:
Sample zone file for bind has been created in /tmp/sample.zone.F_uMf4.db
If a DNS server is already configured in the network, then the configuration in the IPA-generated file can be added to the existing DNS zone file. This allows IPA clients to find LDAP and Kerberos servers that are required for them to participate in the IPA domain. For example, this DNS zone configuration is created for an IPA server with the KDC and DNS servers all on the same machine in the EXAMPLE.COM realm:
; ldap servers
_ldap._tcp IN SRV 0 100 389 ipaserver.example.com
;kerberos realm
_kerberos IN TXT EXAMPLE.COM
; kerberos servers
_kerberos._tcp IN SRV 0 100 88 ipaserver.example.com
_kerberos._udp IN SRV 0 100 88 ipaserver.example.com
_kerberos-master._tcp IN SRV 0 100 88 ipaserver.example.com
_kerberos-master._udp IN SRV 0 100 88 ipaserver.example.com
_kpasswd._tcp IN SRV 0 100 464 ipaserver.example.com
_kpasswd._udp IN SRV 0 100 464 ipaserver.example.com
2.2.4.6.2. IPA, DNS, and NSCD
It is strongly recommended that you avoid or restrict the use of nscd (Name Service Caching Daemon) in an IPA deployment. The nscd service is extremely useful for reducing the load on the server, and for making clients more responsive, but there can be problems when a system is also using SSSD, which performs its own caching.
nscd caches authentication and identity information for all services that perform queries through nsswitch, including getent. Because nscd performs both positive and negative caching, if a request determines that a specific IPA user does not exist, it marks this as a negative cache. Values stored in the cache remain until the cache expires, regardless of any changes that may occur on the server. The results of such caching is that new users and memberships may not be visible, and users and memberships that have been removed may still be visible.
Avoid clashes with SSSD caches and to prevent locking out users, avoid using nscd altogether. Alternatively, use a shorter cache time by resetting the time-to-live caching values in the /etc/nscd.conf file:
positive-time-to-live group 3600
negative-time-to-live group 60
positive-time-to-live hosts 3600
negative-time-to-live hosts 20
2.2.4.6.3. DNS and Kerberos
The Kerberos server requires a valid DNS A record, and reverse DNS needs to work correctly. It is safe to use CNAMEs if they point to the A name that corresponds to the principal name used to create service principal names (SPN) for the host. Avoid the use of DDNS names, however.
If necessary, add the hostname to the /etc/hosts file, as long as the fully qualified hostname must be listed first. For example:
192.168.1.1 ipaserver.example.com ipaserver
The realm name does not have to match any or all of the domain name. For example, the domain name can be example.com and the realm name can be TESTIPA. It is only a convention that they match. IPA adds the appropriate domain to realm mapping in the /etc/krb5.conf file.
A typical resolver looks in the /etc/hosts file first and DNS second. If nscd is running this may also cause issues because it caches lookups. The IPA installer does not kill nscd until after the installation process has started, so there can be cached entries that interfere with any changes to the /etc/hosts. If you need to edit the /etc/hosts file, kill the nscd daemon first.
2.2.4.6.4. IPA DNS and DNS Forwarders
There is an option to configure DNS forwarders as part of the IPA DNS configuration. This is beneficial if there is limited direct access to root name servers, such as an organization's main DNS server or even an external DNS server.
Either interactively or through the install argument, forwarders can be listed as a comma-separated list of IP addresses.
NOTE
DNS forwarders must be specified as IP addresses, not as hostnames.
By default, any host is permitted to issue recursive queries against configured forwarders. The client installation script automatically adds a line to the /etc/named.conf file to allow these recursive queries.
This default behavior can be changed by changing the allow-recursion statement. The name server documentation has more details on editing configuration statements.
2.2.4.7. Networking
2.2.4.7.1. Configuring Networking Services
The default networking service used by Red Hat Enterprise Linux is NetworkManager, and due to the way this service works, it can cause problems with IPA and the KDC. Consequently, it is highly recommended that you use the network service to manage the networking requirements in an IPA environment and disable the NetworkManager service.
Boot the machine into single-user mode and run the following commands:
# chkconfig NetworkManager off; service NetworkManager stop
If NetworkManagerDispatcher is installed, ensure that it is stopped and disabled:
# chkconfig NetworkManagerDispatcher off; service NetworkManagerDispatcher stop
Then, make sure that the network service is properly started.
# chkconfig network on; service network start
Ensure that static networking is correctly configured.
Restart the system.
2.2.4.7.2. Configuring the /etc/hosts File
You need to ensure that your /etc/hosts file is configured correctly. A misconfigured file can prevent the IPA command-line tools from functioning correctly and can prevent the IPA web interface from connecting to the IPA server.
Configure the /etc/hosts file to list the FQDN for the IPA server before any aliases. Also ensure that the hostname is not part of the localhost entry. The following is an example of a valid hosts file:
Do not omit the IPv4 entry in the /etc/hosts file. This entry is required by the IPA web service.
2.3. Installing the IPA Server Packages
Installing only the IPA server requires a single package, ipa-server. If the IPA server will also manage a DNS server, then it requires two additional packages to set up the DNS.
All of these packages can be installed using the yum command:
# yum install ipa-server bind bind-dyndb-ldap
Installing the ipa-server also installs a large number of dependencies, such as 389-ds-base for the LDAP service and krb5-server for the Kerberos service, along with IPA tools.
After the packages are installed, the server instance must be created using the ipa-server-install command. The options for configuring the new server instance are described in Section 2.4, “Creating an IPA Server Instance”.
2.4. Creating an IPA Server Instance
The IPA setup script creates a server instance, which includes configuring all of the required services for the IPA domain:
The network time daemon (ntpd)
A 389 Directory Server instance
A Kerberos key distribution center (KDC)
Apache (httpd)
An updated SELinux targeted policy
The Active Directory WinSync plug-in
A certificate authority
Optional. A domain name service (DNS) server
The IPA setup process can be minimal, where the administrator only supplies some required information, or it can be very specific, with user-defined settings for many parts of the IPA services. The configuration is passed using arguments with the ipa-install-server script.
NOTE
The port numbers and directory locations used by IPA are all defined automatically, as defined in Section 2.2.4.4, “System Ports” and . These ports and directories cannot be changed or customized.
2.4.1. About ipa-server-install
An IPA server instance is created by running the ipa-server-install script. This script can accept user-defined settings for services, like DNS and Kerberos, that are used by the IPA instance, or it can supply predefined values for minimal input from the administrator.
While ipa-server-install can be run without any options, so that it prompts for the required information, it has numerous arguments which allow the configuration process to be easily scripted or to supply additional information which is not requested during an interactive installation.
The password for the IPA administrator. This is used for the admin user to authenticate to the Kerberos realm.
--hostname=hostname
The fully-qualified domain name of the IPA server machine.
IMPORTANT
This must be a valid DNS name, which means only numbers, alphabetic characters, and hyphens (-) are allowed. Other characters, like underscores, in the hostname will cause DNS failures.
-n domain_name
The name of the LDAP server domain to use for the IPA domain. This is usually based on the IPA server's hostname.
-p directory_manager_password
The password for the superuser, cn=Directory Manager, for the LDAP service.
-r realm_name
The name of the Kerberos realm to create for the IPA domain.
--subject=subject_DN
Sets the base element for the subject DN of the issued certificates. This defaults to O=realm.
--forwarder=forwarder
Gives a DNS forwarder to use with the DNS service. To specify more than one forwarder, use this option multiple times.
--no-forwarders
Uses root servers with the DNS service instead of forwarders.
--no-reverse
Does not create a reverse DNS zone when the DNS domain is set up.
--setup-dns
Tells the installation script to set up a DNS service within the IPA domain. Using an integrated DNS service is optional, so if this option is not passed with the installation script, then no DNS is configured.
--idmax=number
Sets the upper bound for IDs which can be assigned by the IPA server. The default value is the ID start value plus 199999.
--idstart=number
Sets the lower bound (starting value) for IDs which can be assigned by the IPA server. The default value is randomly selected.
2.4.2. Setting up an IPA Server: Basic Interactive Installation
All that is required to set up an IPA server is to run the ipa-server-install script. This launches the script interactively, which prompts for the required information to set up a server, but without more advanced configuration like DNS and CA options.
Run the ipa-server-install script.
# ipa-server-install
Enter the hostname. This is determined automatically using reverse DNS.
Server host name [ipaserver.example.com]:
Enter the domain name. This is determined automatically based on the hostname.
Please confirm the domain name [example.com]:
The script then reprints the hostname, IP address, and domain name.
The IPA Master Server will be configured with
Hostname: ipaserver.example.com
IP address: 192.168.1.1
Domain name: example.com
Enter the new Kerberos realm name. This is usually based on the domain name.
Please provide a realm name [EXAMPLE.COM]:
Enter the password for the Directory Server superuser, cn=Directory Manager. There are password strength requirements for this password, including a minimum password length.
Directory Manager password:
Password (confirm):
Enter the password for the IPA system user account, admin. This user is created on the machine.
IPA admin password:
Password (confirm):
After that, the script configures all of the associated services for IPA, with task counts and progress bars.
Configuring ntpd
[1/4]: stopping ntpd
...
done configuring ntpd.
Configuring directory server for the CA: Estimated time 30 seconds
[1/3]: creating directory server user
...
done configuring pkids.
Configuring certificate server: Estimated time 6 minutes
[1/17]: creating certificate server user
....
done configuring pki-cad.
Configuring directory server: Estimated time 1 minute
[1/32]: creating directory server user
...
done configuring dirsrv.
Configuring Kerberos KDC: Estimated time 30 seconds
[1/14]: setting KDC account password
...
done configuring krb5kdc.
Configuring ipa_kpasswd
[1/2]: starting ipa_kpasswd
[2/2]: configuring ipa_kpasswd to start on boot
done configuring ipa_kpasswd.
Configuring the web interface: Estimated time 1 minute
[1/12]: disabling mod_ssl in httpd
...
done configuring httpd.
Setting the certificate subject base
restarting certificate server
Applying LDAP updates
Restarting the directory server
Restarting the KDC
Restarting the web server
Sample zone fileforbind has been created in /tmp/sample.zone.ygzij5.db
==============================================================================
Setup complete
Restart the SSH service to retrieve the Kerberos principal and to refresh the name server switch (NSS) configuration file:
# service sshd restart
Authenticate to the Kerberos realm using the admin user's credentials to ensure that the user is properly configured and the Kerberos realm is accessible.
# kinit admin
Password for admin@EXAMPLE.COM:
Test the IPA configuration by running a command like ipa user-find. For example:
# ipa user-find admin
--------------
1 user matched
--------------
User login: admin
Last name: Administrator
Home directory: /home/admin
Login shell: /bin/bash
Account disabled: False
Member of groups: admins
----------------------------
Number of entries returned 1
----------------------------
2.4.3. Examples of Creating the IPA Server
The way that an IPA server is installed can be different depending on the network environment, security requirements within the organization, and the desired topology. These example illustrate some common options when installing the server. These examples are not mutually exclusive; it is entirely possible to use CA options, DNS options, and IPA configuration options in the same server invocation. These are called out separately simply to make it more clear what each configuration area requires.
2.4.3.1. Non-Interactive Basic Installation
As shown in Section 2.4.2, “Setting up an IPA Server: Basic Interactive Installation”, only a few pieces of information are required to configured an IPA server. While the setup script can prompt for this information in interactive mode, this information can also be passed with the setup command to allow automated and unattended configuration:
Passwords for the IPA administrative user and the Directory Server super user (Directory Manager)
The server hostname
The Kerberos realm name
The DNS domain name
This information can be passed with the ipa-server-install, along with the -U to force it to run without requiring user interaction.
Example 2.1. Basic Installation without Interaction
To accept the default shown in brackets, press the Enter key.
The IPA Master Server will be configured with
Hostname: ipaserver.example.com
IP address: 192.168.1.1
Domain name: example.com
Identity Management uses an integrated certificate authority (CA) to create the certificates and keytabs used by users and hosts within the domain. There are three different ways that IPA incorporates the CA into the IPA server:
The installation script installs a root Dogtag Certificate System CA. The Dogtag Certificate System CA provides the fully range of certificate services, based on policies that are defined in the Dogtag Certificate System configuration.
This is the default configuration.
Alternatively, the installation script can set up a Dogtag Certificate System CA that is subordinate to an external CA. A subordinate CA is chained to another CA, and it uses the policies and restrictions defined by that external CA. The root CA can be an external CA like Verisign or a corporate CA.
A Dogtag Certificate System CA is still installed and configured as part of the IPA server installation, but its CA certificates are issued by the external CA rather than by itself.
The IPA server can use self-signed certificates without installing a CA. This is done by using the --selfsign option. When the IPA server uses a self-signed certificate, the setup process is exactly the same as a normal installation, except that no Dogtag Certificate System instance is created. There is still a cacert.p12 file created that can be used by replicas, but the certificate services that the IPA server can perform are much more limited.
A self-signed certificate should only be used for a testing or development environment.
Alternatively, the IPA server can use a certificate issued by an external CA. This can be a corporate CA or a third-party CA like Verisign or Thawte. As with a normal setup process, using an external CA still uses a Dogtag Certificate System instance for the IPA server for issuing all of its client and replica certificates; the initial CA certificate is simply issued by a different CA.
When using an external CA, there are two additional steps that must be performed: submit the generated certificate request to the external CA and then load the CA certificate and issued server certificate to complete the setup.
Example 2.3. Using an External CA
Run the ipa-server-install script, using the --external-ca option.
The script sets up the NTP and Directory Server services as normal.
The script completes the CA setup and returns information about where the certificate signing request (CSR) is located, /root/ipa.csr. This request must be submitted to the external CA.
Configuring certificate server: Estimated time 6 minutes
[1/4]: creating certificate server user
[2/4]: creating pki-ca instance
[3/4]: restarting certificate server
[4/4]: configuring certificate server instance
The next step is to get /root/ipa.csr signed by your CA and re-run ipa-server-install.
Submit the request to the CA. The process differs for every service.
Retrieve the issued certificate and the CA certificate chain for the issuing CA. Again, the process differs for every certificate service, but there is usually a download link on a web page or in the notification email that allows administrators to download all the required certificates. Be sure to get the full certificate chain for the CA, not just the CA certificate.
Rerun ipa-server-install, specifying the locations and names of the certificate and CA chain files. For example:
IPA can be configured to manage its own DNS, use an existing DNS, or not use DNS services at all (which is the default). Running the setup script alone does not configure DNS; this requires the --setup-dns option.
As with a basic setup, the DNS setup can either prompt for the required information or the DNS information can be passed with the script to allow an automatic or unattended setup process.
Example 2.4. Interactive DNS Setup
Run the ipa-server-install script, using the --setup-dns option.
The script configures the hostname and domain name as normal.
The script then prompts for DNS forwarders. If forwarders will be used, enter yes, and then supply the list of DNS servers. If IPA will manage its own DNS service, then enter no.
Do you want to configure DNS forwarders? [yes]: no
No DNS forwarders configured
The script sets up the NTP, Directory Server, Certificate System, Kerberos, and Apache services.
Before completing the configuration, the script prompts to ask whether it should configure reverse DNS services. If you select yes, then it configures the named service.
Do you want to configure the reverse zone? [yes]: yes
Configuring named:
[1/9]: adding DNS container
[2/9]: setting up our zone
[3/9]: setting up reverse zone
[4/9]: setting up our own record
[5/9]: setting up kerberos principal
[6/9]: setting up named.conf
[7/9]: restarting named
[8/9]: configuring named to start on boot
[9/9]: changing resolv.conf to point to ourselves
done configuring named.
==============================================================================
Setup complete
If DNS is used with IPA, then two pieces of information are required: any DNS forwarders that will be used and using (or not) reverse DNS. To perform a non-interactive setup, this information can be passed using the --forwarder or --no-forwarders option and --no-reverse option.
Example 2.5. Setting up DNS Non-Interactively
To use DNS always requires the --setup-dns. To user forwarders, use the --forwarder with a comma-separated list of forwarders.
Some kind of forwarder information is required. If no external forwarders will be used with the IPA DNS service, then use the --no-forwarders option to indicate that only root servers will be used.
The script always assumes that reverse DNS is configured along with DNS, so it is not necessary to use any options to enable reverse DNS. To disable reverse DNS, use the --no-reverse option.
# ipa-server-install ... --setup-dns --no-reverse
2.4.4. Troubleshooting Installation Problems
The server installation log is located in /var/log/ipaserver-install.log. The IPA logs, both for the server and for IPA-associated services, are covered in Section 16.1.3, “Checking IPA Server Logs”.
GSS Failures When Running IPA Commands
Immediately after installation, there can be Kerberos problems when trying to run an ipa-* command. For example:
ipa: ERROR: Kerberos error: ('Unspecified GSS failure. Minor code may provide more information', 851968)/('Decrypt integrity check failed', -1765328353)
There are two potential causes for this:
DNS is not properly configured.
Active Directory is in the same domain as the IPA server.
named Daemon Fails to Start
If an IPA server is configured to manage DNS and is set up successfully, but the named service fails to start, this can indicate that there is a package conflict. Check the /var/log/messages file for error messages related to the named service and the ldap.so library:
ipaserver named[6886]: failed to dynamically load driver 'ldap.so': libldap-2.4.so.2: cannot open shared object file: No such file or directory
This usually means that the bind-chroot package is installed and is preventing the named service from starting. To resolve this issue, remove the bind-chroot package and then restart the IPA server.
# yum remove bind-chroot# ipactl restart
2.5. Setting up IPA Replicas
In the IPA domain, there are three types of machines:
Servers, which manage all of the services used by domain members
Replicas, which are essentially clones of servers
Clients, which belong to the Kerberos domains, receive certificates and tickets issued by the servers, and use other centralized services for authentication and authorization
A replica is a clone of a specific IPA server. The server and replica share the same internal information about users, machines, certificates, and configured policies. These data are copied from the server to the replica in a process called replication. The two Directory Server instances used by an IPA server — the Directory Server instance used by the IPA server as a data store and the Directory Server instance used by the Dogtag Certificate System to store certificate information — are replicated over to corresponding consumer Directory Server instances used by the IPA replica.
TIP
If you are using the integrated Dogtag Certificate System instance as the CA for the IPA domain, then it is possible to make a replica of a replica. It is not possible to make a replica of a replica if you use the --selfsign option for the original IPA server.
2.5.1. Prepping and Installing the Replica Server
Replicas are functionally the same as IPA servers, so they have the same installation requirements and packages.
The replica and the master server must be running the same version of IPA.
If there is an existing Dogtag Certificate System or Red Hat Certificate System instance on the replica machine, make sure that port 7389 is free. This port is used by the master IPA server to communicate with the replica.
Make sure the appropriate ports are open on both the server and the replica machine during and after the replica configuration. Servers and replicas connect to each other over ports 9443, 9444, 9445, and 7389 during the replica configuration. Once the replica is set up, the server and replica communicate over port 7389.
2.5.2. Creating the Replica
NOTE
Make sure that the replica machine exists in the server's DNS before beginning to configure the replica. If the server cannot contact the replica machine during the configuration process, then the replica configuration fails. If necessary, add a DNS entry, as in Section 8.9, “Adding Records to DNS Zones”.
On the master server, create a replica information file. This contains realm and configuration information taken from the master server which will be used to configure the replica server.
Run the ipa-replica-prepare command on the master IPA server. The command requires the fully-qualified domain name of the replica machine. Using the --ip-address option automatically creates DNS entries for the replica, including the A and PTR records for the replica to the DNS.
# ipa-replica-prepare ipareplica.example.com --ip-address 192.168.1.2
Determining current realm name
Getting domain name from LDAP
Preparing replica for ipareplica.example.com from ipaserver.example.com
Creating SSL certificate for the Directory Server
Creating SSL certificate for the Web Server
Copying additional files
Finalizing configuration
Packaging the replica into replica-info-ipareplica.example.com
IMPORTANT
This must be a valid DNS name, which means only numbers, alphabetic characters, and hyphens (-) are allowed. Other characters, like underscores, in the hostname will cause DNS failures.
Each replica information file is created in the /var/lib/ipa/ directory as a GPG-encrypted file. Each file is named specifically for the replica server for which it is intended, such as replica-info-ipareplica.example.com.gpg.
NOTE
A replica information file cannot be used to create multiple replicas. It can only be used for the specific replica and machine for which it was created.
WARNING
Replica information files contain sensitive information. Take appropriate steps to ensure that they are properly protected.
Copy the replica information file to the replica server:
On the replica server, run the replica installation script, referencing the replication information file. There are other options for setting up DNS, much like the server installation script. For example:
The replica installation script runs a test to ensure that the replica file being installed matches the current hostname. If they do not match, the script returns a warning message and asks for confirmation. This could occur on a multi-homed machine, for example, where mismatched hostnames may not be an issue.
Enter the Directory Manager password when prompted. The script then configures a Directory Server instance based on information in the replica information file and initiates a replication process to copy over data from the master server to the replica, a process called initialization.
Once the installation process completes, update the DNS entries so that IPA clients can discover the new server. For example, for an IPA replica with a hostname of ipareplica.example.com:
_ldap._tcp IN SRV 0 100 389 ipareplica.example.com
_kerberos._tcp IN SRV 0 100 88 ipareplica.example.com
_kerberos._udp IN SRV 0 100 88 ipareplica.example.com
_kerberos-master._tcp IN SRV 0 100 88 ipareplica.example.com
_kerberos-master._udp IN SRV 0 100 88 ipareplica.example.com
_kpasswd._tcp IN SRV 0 100 464 ipareplica.example.com
_kpasswd._udp IN SRV 0 100 464 ipareplica.example.com
_ntp._udp IN SRV 0 100 123 ipareplica.example.com
Optional. Set up DNS services for the replica. These are not configured by the setup script, even if the master server uses DNS.
Use the ipa-dns-install command to install the DNS manually, then use the ipa dnsrecord-add command to add the required DNS records. For example:
Use the fully-qualified domain name of the replica, including the final period (.), otherwise BIND will treat the hostname as relative to the domain.
2.5.3. Troubleshooting Replica Installation
If the replica installation fails on step 3 ([3/11]: configuring certificate server instance), that usually means that the required port is not available. This can be verified by checking the debug logs for the CA, /var/log/pki-ca/debug, which may show error messages about being unable to find certain entries. For example:
[04/Feb/2011:22:29:03][http-9445-Processor25]: DatabasePanel
comparetAndWaitEntries ou=people,o=ipaca not found, let's wait
The only resolution is to uninstall the replica:
# ipa-server-install --uninstall
After uninstalling the replica, ensure that port 7389 on the replica is available, and retry the replica installation.
2.6. Uninstalling IPA Servers and Replicas
To uninstall both an IPA server and an IPA replica, pass the --uninstall option to the ipa-server-install command:
A client is any system which is a member of the Identity Management domain. While this is frequently a Red Hat Enterprise Linux system (and IPA has special tools to make configuring Red Hat Enterprise Linux clients very simple), machines with other operating systems can also be added to the IPA domain.
One important aspect of an IPA client is that only the system configuration determines whether the system is part of the domain. (The configuration includes things like belonging to the Kerberos domain, DNS domain, and having the proper authentication and certificate setup.)
NOTE
IPA does not require any sort of agent or daemon running on a client for the client to join the domain. However, for the best management options, security, and performance, clients should run the System Security Services Daemon (SSSD).
This chapter explains how to configure a system to join an IPA domain.
NOTE
Clients can only be configured after at least one IPA server has been installed.
3.1. What Happens in Client Setup
Whether the client configuration is performed automatically on Red Hat Enterprise Linux systems using the client setup script or manually on other systems, the general process of configuring a machine to serve as an IPA client is mostly the same, with slight variation depending on the platform:
Retrieve the CA certificate for the IPA CA.
Create a separate Kerberos configuration to test the provided credentials. This enables a Kerberos connection to the IPA XML-RPC server, necessary to join the IPA client to the IPA domain. This Kerberos configuration is ultimately discarded.
Setting up the Kerberos configuration includes specifying the realm and domain details, and default ticket attributes. Forwardable tickets are configured by default, which facilitates connection to the administration interface from any operating system, and also provides for auditing of administration operations. For example, this is the Kerberos configuration for Red Hat Enterprise Linux systems:
Run the ipa-join command to perform the actual join
Obtain a service principal for the host service and installs it into /etc/krb5.keytab. For example, host/ipa.example.com@EXAMPLE.COM.
Enable certmonger, retrieve an SSL server certificate, and install the certificate in /etc/pki/nssdb.
Disable the nscd daemon.
Configures SSSD or LDAP/KRB5, including NSS and PAM configuration files.
Configure NTP.
3.2. Supported Platforms for IPA Clients
These platforms can be configured to be IPA clients:
Red Hat Enterprise Linux 5 and 6
Solaris 9 and 10
HP-UX 11i
AIX 5.2
3.3. Configuring a Red Hat Enterprise Linux System as an IPA Client
There are two elements to prepare before beginning the client setup process for the Red Hat Enterprise Linux client:
There must be a way to connect the client machine to the Kerberos domain, either by having an available Kerberos identity (such as the admin user) or by manually adding the client machine to the KDC on the server with a one-time password before beginning the enrollment process for the client machine.
If there is an Active Directory server on the same network that serves DNS records, the Active Directory DNS records could prevent the client from automatically detecting the IPA server address. The ipa-client-install script retrieves the Active Directory DNS records instead of any records that were added for IPA.
In this case, it is necessary to pass the IPA server address directly to the ipa-client-install script.
To configure the client:
Install the client packages. These packages provide a simple way to configure the system as a client; they also install and configure SSSD.
For a regular user system, this requires only the ipa-client package:
# yum install ipa-client
An administrator machine requires the ipa-admintools package, as well:
# yum install ipa-client ipa-admintools
If the IPA server is configured as the DNS server and is in the same domain as the client, add the server's IP address as the first entry in the client's /etc/resolv.conf file.
TIP
If every machine in the domain will be an IPA client, then add the IPA server address to the DHCP configuration.
Run the client setup command.
# ipa-client-install --enable-dns-updates
The --enable-dns-updates option updates DNS with the client machine's IP address. This option should only be used if the IPA server was installed with integrated DNS or if the DNS server on the network accepts DNS entry updates with the GSS-TSIG protocol.
When using the --server option to specify the IPA server to register with, the server name must be a fully-qualified domain name.
IMPORTANT
This must be a valid DNS name, which means only numbers, alphabetic characters, and hyphens (-) are allowed. Other characters, like underscores, in the hostname will cause DNS failures.
There is an --on-master option that is used as part of configuring an IPA server (which also is an IPA client, since it is within the domain). This option should never be used when configuring a regular IPA client, because it results in slightly different client configuration which may not work on a non-IPA server machine.
If prompted, enter the domain name for the IPA's DNS domain.
DNS discovery failed to determine your DNS domain
Please provide the domain name of your IPA server (ex: example.com): example.com
If prompted, enter the fully-qualified domain name of the IPA server. Alternatively, use the --server option with the client installation script to supply the fully-qualified domain name of the IPA server.
DNS discovery failed to find the IPA Server
Please provide your IPA server name (ex: ipa.example.com): ipaserver.example.com
IMPORTANT
This must be a valid DNS name, which means only numbers, alphabetic characters, and hyphens (-) are allowed. Other characters, like underscores, in the hostname will cause DNS failures.
The client script then prompts for a Kerberos identity to use to contact and then join the Kerberos realm. When these credentials are supplied, then the client is able to join the IPA Kerberos domain and then complete the configuration:
Continue to configure the system with these values? [no]: yes
User authorized to enroll computers: admin
Password for admin@EXAMPLE.COM:
Enrolled in IPA realm EXAMPLE.COM
Created /etc/ipa/default.conf
Configured /etc/sssd/sssd.conf
Configured /etc/krb5.conf for IPA realm EXAMPLE.COM
SSSD enabled
Kerberos 5 enabled
NTP enabled
Client configuration complete.
Test that the client can connect successfully to the IPA domain and can perform basic tasks. For example, check that the IPA tools can be used to get user and group information:
$ id
$ getentpasswd userID
$ getent group ipausers
Set up NFS to work with Kerberos.
TIP
To help troubleshoot potential NFS setup errors, enable debug information in the /etc/sysconfig/nfs file.
RPCGSSDARGS="-vvv"
RPCSVCGSSDARGS="-vvv"
On an IPA server, add an NFS service principal for the NFS client.
Some versions of the Linux NFS implementation have limited encryption type support. If the NFS server is hosted on a version older than Red Hat Enterprise Linux 6, use the -e des-cbc-crc option to the ipa-getkeytab command for any nfs/<FQDN> service keytabs to set up, both on the server and on all clients. This instructs the KDC to generate only DES keys.
When using DES keys, all clients and servers that rely on this encryption type need to have the allow_weak_crypto option enabled in the [libdefaults] section of the /etc/krb5.conf file. Without these configuration changes, NFS clients and servers are unable to authenticate to each other, and attempts to mount NFS filesystems may fail. The client's rpc.gssd and the server's rpc.svcgssd daemons may log errors indicating that DES encryption types are not permitted.
Copy the keytab from the IPA server to the NFS server. For example, if the IPA and NFS servers are on different machines:
On the client, mount the NFS share. Use the same -o sec setting as is used in the /etc/exports file for the NFS server.
[root@client ~]# mount -v -t nfs4 -o sec=krb5p nfs.example.com:/ /mnt/ipashare
3.4. Manually Configuring a Linux Client
The ipa-client-install command automatically configures services like Kerberos, SSSD, PAM, and NSS. However, if the ipa-client-install command cannot be used on a system for some reason, then the IPA client entries and the services can be configured manually.
Install SSSD 1.5.x or later, if it is not already installed.
On an IPA server. Create a host entry for the client.
Some versions of the Linux NFS implementation have limited encryption type support. If the NFS server is hosted on a version older than Red Hat Enterprise Linux 6, use the -e des-cbc-crc option to the ipa-getkeytab command for any nfs/<FQDN> service keytabs to set up, both on the server and on all clients. This instructs the KDC to generate only DES keys.
When using DES keys, all clients and servers that rely on this encryption type need to have the allow_weak_crypto option enabled in the [libdefaults] section of the /etc/krb5.conf file. Without these configuration changes, NFS clients and servers are unable to authenticate to each other, and attempts to mount NFS filesystems may fail. The client's rpc.gssd and the server's rpc.svcgssd daemons may log errors indicating that DES encryption types are not permitted.
Copy the keytab from the IPA server to the NFS server. For example, if the IPA and NFS servers are on different machines:
Always specify the share as nfs_server:/ /mountpoint.
Use the same -o sec setting as is used in the /etc/exports file for the NFS server.
[root@client ~]# mount -v -t nfs4 -o sec=krb5p nfs.example.com:/ /mnt/ipashare
3.5. Configuring a Solaris System as an IPA Client
3.5.1. Configuring Solaris 10
As with Red Hat Enterprise Linux systems, IPA provides an automated method of configuring Solaris 10 to function as an IPA client. On the Solaris client, run the ldapclient with the information for the IPA domain:
[root@server ~] # ldapclient manual
-a credentialLevel=anonymous
-a authenticationMethod=none
-a defaultSearchBase=dc=example,dc=com
-a domainName=example.com
-a defaultServerList=192.168.0.1
-a attributeMap=group:memberuid=memberUid
-a attributeMap=group:gidnumber=gidNumber
-a attributeMap=passwd:gidnumber=gidNumber
-a attributeMap=passwd:uidnumber=uidNumber
-a attributeMap=passwd:homedirectory=homeDirectory
-a attributeMap=passwd:loginshell=loginShell
-a attributeMap=shadow:userpassword=userPassword
-a objectClassMap=group:posixGroup=posixgroup
-a objectClassMap=passwd:posixAccount=posixaccount
-a objectClassMap=shadow:shadowAccount=posixaccount
-a serviceSearchDescriptor=passwd:cn=users,cn=accounts,dc=example,dc=com
-a serviceSearchDescriptor=group:cn=groups,cn=accounts,dc=example,dc=com
Remove the ldap option from all entries in /etc/nsswitch.conf except for the passwd: and group: entries.
Configure and enable NTP and synchronize the time between the client and the IPA server.
[root@server ~] # ntpdate ipaserver.example.com
Configure the Kerberos client. The Kerberos configuration includes specifying the realm and domain details and default ticket attributes.
The default file created by ldapclient configures forwardable tickets by default, which makes it possible to connect to the UI from any system and provides a way to audit administration operations.
Configure PAM to use Kerberos authentication. For example:
[root@server ~] # vim /etc/pam.conf # 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 sufficient pam_krb5.so.1 try_first_pass
login auth required pam_unix_auth.so.1
login auth required pam_dial_auth.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 sufficient pam_krb5.so.1
other auth required pam_unix_auth.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 required pam_unix_account.so.1
other account required pam_krb5.so.1
# Password construction requirements apply to all users.# Remove force_check to have the traditional authorized administrator# bypass of construction requirements.
other password requisite pam_authtok_check.so.1 force_check
other password sufficient pam_krb5.so.1
other password required pam_authtok_store.so.1
Edit the Kerberos KDC ACLs in /var/kerberos/krb5kdc/kadm5.aclon the IPA server to allow access from the NFS client machine.
Use the kclient command to set up the NFS client for Kerberos authentication.
Do not set up DNS.
Do enter the IPA server and realm information.
Do answer yes to configure Kerberized NFS.
Do not copy over the master krb5.conf file.
[root@server ~] # kclient
Starting client setup
---------------------------------------------------
Do you want to use DNS for kerberos lookups ? [y/n]: n
No action performed.
Enter the Kerberos realm: EXAMPLE.COM
Specify the KDC hostnamefor the above realm: ipaserver.example.com
ipaserver.example.com
Note, this system and the KDC's time must be within 5 minutes of each other forKerberos to function. Both systems should run some form of timesynchronization system like Network Time Protocol (NTP).Setting up /etc/krb5/krb5.conf.Enter the krb5 administrative principal to be used: testadminObtaining TGT for testadmin/admin ...Password for testadmin/admin@EXAMPLE.COM:Do you have multiple DNS domains spanning the Kerberos realm EXAMPLE.COM ?[y/n]: n No action performed.Do you plan on doing Kerberized nfs ? [y/n]: ynfs/client.example.com entry ADDED to KDC database.nfs/client.example.com entry ADDED to keytab.host/client.example.com entry ADDED to KDC database.host/client.example.com entry ADDED to keytab.Do you want to copy over the master krb5.conf file ? [y/n]: n No action performed.---------------------------------------------------Setup COMPLETE.
Change to the configuration directory, and run the setup script.
# cd /opt/ldapux/config/# ./setup
NOTE
Running the setup script is only necessary for the first HP-UX client. Every subsequent HP-UX client only needs to know where the LDAP profile is stored. All clients will then use the same configuration.
The setup script prompts for information about the IPA LDAP service, such as its port and host, Directory Manager credentials, and schema and directory suffixes.
Would you like to continue with the setup? [Yes]
Select which Directory Server you want to connect to ? [RedHat Directory]
Directory server host ? [ipaserver.example.com]
Directory Server port number [389]
Would you like to extend the printer schema in this directory server? [No]
Would you like to install PublicKey schema in this directory server? [No]
Would you like to install the new automount schema ? [No]
Profile Entry DN: [cn=ldapuxprofile,cn=etc,dc=example,dc=com]
User DN [cn=Directory Manager]
Password ? [Directory Manager's Password]
Authentication method ? [ SIMPLE ]
Enter the number of the hosts you want to specify [1]
Default Base DN ? [dc=example,dc=com]
Accept remaining defaults ? [n]
Client binding [Anonymous]
Bind time limit [5 seconds]
Search time limit [no limit]
Do you want client searches of the directory to follow referrals? [Yes]
Profile TTL [0 = infinite]
Do you want to remap any of the standard RFC 2307 attribute? [Yes]
Specify the service you want to map? [ 3 ]
[ group ]
Specify the attribute you want to map [3 for memberuid ]
Type the name of the attribute memberuid should be mapped to [member]
Specify the service you want to map? [ 0 = exit ]
Do you want to remap any of the standard RFC 2307 attribute? [ no this time ]
Do you want to create custom search descriptors? [ No ]
Ensure that the LDAP client daemon is running.
# ps -ef | grep ldapclientd
If necessary, start the daemon:
# /opt/ldapux/bin/ldapclientd
Check that the user and group entries in the LDAP client are correct and available:
# nsquery passwd admin# nsquery group admins
Create a new group on the IPA server.
# ipa group-add testgroup
Add a test user to the new group.
# ipa group-add-member -a testuser testgroup
Validate the new user and group:
# nsquery passwd testuser# nsquery group testgroup
To ensure that the LDAP client daemon starts when the system boots, add the following lines to the /etc/opt/ldapux/ldapclientd.conf file:
[StartOnBoot]
enable=yes
3.6.3. Configuring Kerberos
Edit the /etc/krb5.conf file to reflect the Kerberos domain used by the IPA server. Setting up the Kerberos configuration includes specifying the realm and domain details, and default ticket attributes. Forwardable tickets are configured by default, which facilitates connection to the administration interface from any operating system, and also provides for auditing of administration operations. For example:
Host *
GSSAPIAuthentication yes
GSSAPITrustDNS no
PreferredAuthentications "gssapi-with-mic,publickey,password"
IMPORTANT
Include the tab character before the GSSAPIAuthentication, GSSAPITrustDNS, and PreferredAuthentications lines, and include the double quotes around the PreferredAuthentications value.
Remove the /etc/krb5.keytab file.
Set up the NFS/Kerberos mapping for the Solaris client on the IPA server.
Add a host service principal for the HP-UX client.
Example 3.1. pam_authz.policy File: Allow User Access, Deny Admin Access
This configuration in /etc/opt/ldapux/pam_authz.policy prevents the admin user from logging in while still allowing regular users to log in.
# pam_authz.policy.template:
#
# An example file that could be copied over to /etc/opt/ldapux/pam_authz.policy.
# pam_authz.policy is a local policy file that PAM_AUTHZ would use to help
# determine which users would be allowed to login to the local host.
#
# In this template file, by default, the only active access rule is
# "allow:unix_local_user"
# All the local users are authorized to login.
#
# The policy file contains one or more access rule. The format of an access
# rule is <action>:<type>:<object>
#
# where <action> could be "deny", "allow", "status"
# "PAM_SUCCESS", "PAM_PERM_DENIED", "PAM_MAXTRIES"
# "PAM_AUTH_ERR", "PAM_NEW_AUTHTOK_REQD",
# "PAM_AUTHTOKEN_REQD, "PAM_CRED_INSUFFICIENT",
# "PAM_AUTHINFO_UNAVAIL", "PAM_USER_UNKNOWN"
# "PAM_ACCT_EXPIRED", "PAM_AUTHOK_EXPIRED"
#
# Note: "status" must use along with "rhds" or
# "ads" <type>.
# <type> could be "unix_user", "unix_local_user", "unix_group",
# "netgroup", ldap_filter", "ldap_group"
# "rhds" or "ads"
#
# Note: When <type> is set to "rhds" or "ads",
# the <action> filed must set to "status".
# <object> contains search information. For example,
#
deny:unix_group:admins
allow:unix_local_user
3.6.7. Testing the Configuration
NOTE
By default, the admin user is given /bin/bash as the shell to use and /home/admin as the home directory. It may be necessary to install bash to be able to log in.
There are two quick ways to check the Kerberos and PAM configuration for the HP client:
Authenticate as an administrator on a Linux box that is a client in the IPA domain, and then attempt to SSH into the HP machine. The admin user should be able to log in using SSH without being asked for a password.
Log into the IPA web UI using the administrator credentials on the HP machine.
3.7. Configuring an AIX System as an IPA Client
3.7.1. Prerequisites
Make sure that all of these packages are installed on the AIX machine before beginning the client configuration:
v5.3 OS
v5.3 Updates
krb5 client packages
openssh
wget
bash
krb5 server
ldap.client
openssl
modcrypt.base (for gssd)
Configure and enable NTP and make sure that time is synchronized between the client and the IPA server.
3.7.2. Configuring the AIX Client
Setting up an AIX client requires setting up the client to work in the IPA Kerberos domain and, optionally, to enable SSH authentication to the AIX client using IPA credentials.
Kerberos configuration includes specifying the realm and domain details, and default ticket attributes. Forwardable tickets are configured by default, which facilitates connection to the administration interface from any operating system, and also provides for auditing of administration operations. For example:
Configure the krb5 client settings to use the IPA Kerberos domain:
In the /etc/security/ldap directory, create user and group map files:
For example, for the IPAuser.map file:
#IPAuser.map file
keyobjectclass SEC_CHAR posixaccount s
# The following attributes are required by AIX to be functional
username SEC_CHAR uid s
id SEC_INT uidnumber s
pgrp SEC_CHAR gidnumber s
home SEC_CHAR homedirectory s
shell SEC_CHAR loginshell s
gecos SEC_CHAR gecos s
spassword SEC_CHAR userpassword s
lastupdate SEC_INT shadowlastchange s
For example, for the IPAgroup.map file:
#IPAgroup.map file
groupname SEC_CHAR cn s
id SEC_INT gidNumber s
users SEC_LIST member m
Modify the /etc/security/ldap/ldap.cfg file to set the REALM and base DN values for the IPA domain.
On the IPA server, add a user that is only used for authentication. (This can be substituted with krb5 authentication if that works from the LDAP client). Otherwise go to the IPA server and use ldapmodify, bind as Directory Manager and create this user. The user should be assigned a shared password.
On the IPA server, get a ticket for the admin user.
# kinit admin
To test the SSH configuration, try to log in as the admin user using SSH without providing a password.
# ssh admin@ipaclient.example.com
NOTE
By default, the admin user is given /bin/bash as the shell to use and /home/admin as the home directory. It may be necessary to install bash to be able to log in.
3.8. Troubleshooting Client Installations
For clients configured using ipa-client-install, the client installation log is located in /var/log/ipaclient-install.log. The IPA logs, both for the server and client and for IPA-associated services, are covered in Section 16.1.3, “Checking IPA Server Logs”.
These are some issues and workarounds for client installation problems.
The client can't resolve reverse hostnames when using an external DNS.
While IPA can host its own DNS server as part of the domain services, it can also use external DNS name server. However, because of some of the limitations of reverse DNS, there can be problems with resolving reverse lookups if the external DNS is listed in the client's /etc/resolv.conf file or if there are other resources on the network with SRV records, like Active Directory.
The problem is that the external DNS name server returns the wrong hostname for the IPA server.
One way this exhibits is errors with finding the IPA server in the Kerberos database:
Jun 30 11:11:48 server1 krb5kdc[1279](info): AS_REQ (4 etypes {18 17 16 23}) 192.168.60.135: NEEDED_PREAUTH: admin EXAMPLE COM for krbtgt/EXAMPLE COM EXAMPLE COM, Additional pre-authentication required
Jun 30 11:11:48 server1 krb5kdc[1279](info): AS_REQ (4 etypes {18 17 16 23}) 192.168.60.135: ISSUE: authtime 1309425108, etypes {rep=18 tkt=18 ses=18}, admin EXAMPLE COM for krbtgt/EXAMPLE COM EXAMPLE COM
Jun 30 11:11:49 server1 krb5kdc[1279](info): TGS_REQ (4 etypes {18 17 16 23}) 192.168.60.135: UNKNOWN_SERVER: authtime 0, admin EXAMPLE COM for HTTP/server1.wrong.example.com@EXAMPLE.COM, Server not found in Kerberos database
There are several ways to work around this issue:
Edit the /etc/resolv.conf file to remove the external DNS name server references.
Add reverse lookup records for each IPA server.
Give the IPA client or domain a subnet and forward all requests for that subnet.
3.9. Uninstalling an IPA Client
For Red Hat Enterprise Linux clients, the ipa-client-install utility can be used to uninstall the client and remove it from the IPA domain. To remove the client, use the --uninstall option.
# ipa-client-install --uninstall
NOTE
There is an uninstall option with the ipa-join command. This is called by ipa-client-install --uninstall as part of the uninstallation process. However, while the ipa-join option removes the client from the domain, it does not actually uninstall the client or properly remove all of the IPA-related configuration. Do not run ipa-join -u to attempt to uninstall the IPA client. The only way to uninstall a client completely is to use ipa-client-install --uninstall.
All of the access to Identity Management, both through the web UI and through the command line, is done by a user authenticating to the IPA domain. This chapter covers the basics of setting up browsers to handle Kerberos authentication, logging into Identity Management, and troubleshooting some common connection issues.
4.1. About the IPA Client Tools
IPA creates a domain of recognized services, host machines, and users with universally-applied authentication sources and common policies. From the perspective of a client machine and an IPA user, the domain itself is fairly transparent after the initial configuration. All users need to do is log into the domain using Kerberos, and that's it.
However, an administrator has two ongoing tasks: add principals to the IPA Kerberos domain and set the domain policies and server configuration that govern domain interactions. Identity Management has both command-line and web-based interfaces for administrators to use to manage the domain, services, and IPA entries.
4.1.1. About the IPA Command-Line Tools
The most common method to maintain the domain is using the command-line tools. Identity Management has an incredibly broad set of scripts and commands that are available to administrators. The command-line scripts offer a number of benefits:
The scripts allow management tasks to be automated and performed repeatedly in a consistent way without manual intervention.
Entries can be added with all possible attributes configured (or a desired subset of attributes) in a single step. The web UI frequently requires two steps to fully configure an entry: the first to create the entry and the next to add optional attributes.
The command-line scripts support adding additional attributes which may not be available in the UI or even custom attributes to entries, if the schema is configured.
The potential disadvantage to the command-line scripts is that they are complex, which makes them difficult to use.
4.1.1.1. ipa and Other Command-Line Scripts
There are two basic categories of command-line scripts that Identity Management has available.
The first is a selection of independent configuration scripts which are used to set up machines that operate within the domain. Most commonly, these are scripts to add machines to the domain (including ipa-server-install, ipa-client-install, and ipa-replica-install). Some scripts are also available to enable services within the IPA server. The domain server has a large number of different installation options and services — such as DNS, certificate services, and NIS management. All of these can be enabled at the time the server is set up, but none of those services are required. If a server is configured without a service like DNS, that service can be enabled later using a specific installation script, such as ipa-dns-install.
The real management functions of the domain are carried out with a single script: ipa. The ipa command is essentially a big plug-in container, and it supports dozens of plug-ins which it executes as subcommands. For example, adding a user is done using the user-add plug-in, which is run like a user-add subcommand:
ipa user-add options
Related subcommands are grouped together into plug-in modules. Commands for managing DNS entries like dnszone-add and dnsrecord-add all belong to the dns module or topic. All of the information for managing a specific area, with all of the supported commands and examples for each, are available by viewing the help for that topic:
ipa help topic
To get a list of all available help topics, run the help command without a topic name:
ipa help
4.1.1.2. Adding Attributes with --setattr and --addattr
For the most common attributes, the ipa use specified command-line arguments to set values. For example, adding a mail attribute to a user can be done with the --mail argument; enabling dynamic updates for a DNS zone can be done with the --allow-dynupdate option with zone commands; and a map key for an automount map is given in the --key option.
However, entries can also allow attributes that may not have command-line (or UI) options for setting them. Partially, this is because the underlying LDAP schema is very rich, particularly for user entries. Additionally, Identity Management allows limited schema extensions for users and groups, and those custom schema elements are not reflected in the UI or command-line tools.
Most ipa allow the --setattr and --addattr options to define attributes and values explicitly.
Both options have this format:
--setattr=attribute=value
The --setattr option sets one value for the given attribute; any existing values are overwritten, even for multi-valued attributes.
The --addattr option adds a new value for an attribute; for a multi-valued attribute, it adds the new value while preserving any existing values.
Both --setattr option and --addattr can be used multiple times in the same command invocation. For example:
$ ipa user-mod jsmith --addattr=mail=johnnys@me.com --addattr=mail=jsmith@example.com --setattr=description="backup IT manager for the east coast branch"
4.1.1.3. Tips for Running IPA Tools
The IPA command-line tools are run as any other utilities in a shell. If there are special characters in the command — such as angle brackets (> and <), ampersands (&), asterisks (*), and pipes (|) — the characters must be escaped. Otherwise, the command fails because the shell cannot properly parse the unescaped characters.
4.1.2. Looking at the IPA UI
The Identity Management web UI is designed for simplicity. This was the primary design goal, and this means that the web UI offers benefits that make using IPA simpler and clearer:
It shows instant, visual relationships between entries (such as a user and all the groups, sudo rules, netgroups, and policies which are associated with that user).
All entries are listed immediately without having to run a search. This makes it possible to browse entries. The UI also has a simple search box which quickly filters the list of entries.
The interface is intuitive to use, without having to learn the command-line tools.
The web UI can be accessed from machines outside the IPA domain, so the domain can be managed from anywhere.
The web UI has three major functional areas which correspond to each of the major functions of IPA: identity management, policy management, and domain configuration.
Table 4.1. Configuration Areas Per Tab
Main Menu Tab
Configuration Areas
Identity
User entries
User groups entries
Host/client entries
Host group entries
Netgroups entries
Domain services entries
DNS (if configured)
Policy
Host-based access control
Sudo rules
Automount
User password policies
Kerberos ticket policy
Access controls within Identity Management
Role-based access control (permissions based on group membership)
Self permissions
Delegations (user access control over other users)
The main menu at the top of every page has three tabs which correspond to the functional areas listed in Table 4.1, “Configuration Areas Per Tab”. When a tab is selected, there is a submenu of the different configuration areas. Some configuration areas may have multiple possible entries; for example, role-based access controls define user roles/groups, the areas that access can be granted or denied (privileges), and then the permissions granted to those areas. Each separate configuration entry has its own task area beneath the primary configuration area.
Figure 4.1. The Main Menu
All entries for a configuration area are listed together on the main page for that area. This page provides direct links to individual entry pages, as well as basic information (the attributes) about the entry. (This is usually just the description, but user entries show a lot more information.)
The page also has some tasks that can be performed on it. For a list page that shows entries, this can be creating or deleting an entry. For a list page for groups, the tasks are for establishing relationships between entities, either by adding (enrolling) or removing an entity from that group. Both individual entries and groups can be searched for through the list page.
Figure 4.2. List View
Each entry page is a form which allows that entry to be edited. This is done by editing text fields or by selecting items from drop-down menus.
Figure 4.3. Form/Entry View
4.1.2.2. Page Elements
The web UI uses common elements on all pages.
The most basic is that all blue text is a link to an entry or to an action.
When a task like adding an entry or saving a change is possible, the task link it blue. When it is not possible (such as no items have been selected to be deleted) then the task is grayed out.
Figure 4.4. Active Task Link
All list pages display direct links to entry pages. However, some entries are essentially nested. For example, in automount configuration, the primary entry is the location, and then keys, mount points, and maps are associated with that location as children entries. This hierarchy is reflected in breadcrumb navigation near the top of the page, so it is easy to identify where you are in the UI and how this entry relates to any other related entries.
Figure 4.5. Entry Breadcrumbs
Most entries have a variety of different configuration areas. A simple user entry has account activity settings, personal information, address information, organizational information, and other contact information. Related attributes are grouped together logically in the UI. These entry form areas can be collapsed or expanded using the arrows to control the amount of information displayed on the page.
Figure 4.6. Collapsing and Expanding Form Elements
When entries are created, they are added with only the required attributes. Additional attributes can be added manually. Some attributes have default values added to the entry and simply need to be edited; other attributes may not exist at all in the new entry and need to be added.
Figure 4.7. Add an Attribute
Any changes to any attribute can be undone. A single attribute change can be undone by clicking the dynamic undo button; all changes can be undone by clicking the Reset link at the top of the entry details page.
Figure 4.8. Undo Edits
4.1.2.3. Showing and Changing Group Members
Members can be added to a group through the group configuration. There are tabs for all the member types which can belong to the group, and an administrator picks all of the marching entries and adds them as members.
However, it is also possible for an entity to be added to a group through its own configuration. Each entry has a list of tabs that displays group types that the entry can join. The list of all groups of that type are displayed, and the entity can be added to multiple groups at the same time.
Figure 4.9. Member Of...
4.1.2.4. Looking at Search Results
Searches can be performed on attributes that are not displayed in the UI. This means that entries can be returned in a search that do not appear to match the given filter. This is especially common if the search information is very short, which increases the likelihood of a match.
Users are authenticated to IPA services, including the command-line tools and the web UI, using Kerberos authentication. This means that logging into Identity Management requires running kinit.
Running kinit issues the user a Kerberos ticket. This ticket is checked by any IPA or Kerberos-aware service, so that a user only needs to log in once to access all domain services. Domain services include the IPA web UI, mounted file shares, wikis, or any other application which uses IPA as its identity/authentication store.
4.2.1. Logging into IPA
Logging into Identity Management requires running kinit on a client within the IPA domain.
$ kinit
The kinit command must be run from a machine which has been configured as a client within the IPA domain, so that the client retrieves authenticates with the IPA KDC.
Simply running kinit logs into IPA as the currently logged-in user account. This user account must also be an IPA user for them to authenticate to the IPA Kerberos domain successfully. For example, if you are logged into the machine as jsmith:
$ kinit
Password for jsmith@EXAMPLE.COM:
NOTE
If SSSD or pam_krb5 is configured on the IPA client machine, then when a user logs into the machine, a ticket is created which can be used for machine services which require authentication, such as sudo.
4.2.2. Logging in When an IPA User Is Different Than the System User
To specify an IPA username — because a person's system username is different then the IPA username or to switch IPA user accounts — simply rerun the kinit command, specifying the new user. For example:
$ kinit userName
Password for userName@EXAMPLE.COM:
When the server was first set up, an administrative user, admin, is created to perform normal administrative activities. To authenticate as the admin user, use the name admin when running kinit:
$ kinit admin
NOTE
Only one set of tickets can be stored per logged-in user. The current stored credentials are the ones that will be used when accessing IPA services.
If you were already connected to the IPA web UI as another user, refresh the browser to display the updated details for the new user.
4.2.3. Checking the Current Logged in User
Use the klist command to verify the identity and the ticket granting ticket (TGT) from the server:
$ klist
Ticket cache: FILE:/tmp/krb5cc_500
Default principal: ipaUser@EXAMPLE.COM
Valid starting Expires Service principal
11/10/08 15:35:45 11/11/08 15:35:45 krbtgt/EXAMPLE.COM@EXAMPLE.COM
Kerberos 4 ticket cache: /tmp/tkt500
klist: You have no tickets cached
It's important to know who the authenticated user is because the currently-authenticated user is the only one who can access the IPA services. The Kerberos client libraries for kinit have some limitation, one of them being that the current ticket is overwritten with any new invocation of kinit. Authenticating as User A and then authenticating as User B overwrites User A's ticket.
To allow there to be multiple authenticated users on a machine, set the KRB5CCNAME environment variable. This variable keeps credential caches separate in different shells.
4.2.4. Caching User Kerberos Tickets
Only one set of tickets can be stored per logged-in user. The current stored credentials are the ones that will be used when accessing IPA services.
For example, if you authenticated as admin, added a new user, set the password, and then tried to authenticate as that user, the administrator's ticket is lost.
To keep separate credential caches in different shells, a special environment variable, KRB5CCNAME, can be used.
The only supported browser to access the IPA web UI is Firefox 3.x or 4.x.
4.3.2. Opening the IPA Web UI
The browser must be properly configured, as described in Section 4.3.3, “Configuring the Browser”, to support Kerberos authentication so that the user can connect to the UI.
Open the IPA URL. The full URL is https://IPAserver-FQDN/ipa/ui, but this service is also accessed simply by opening https://IPAserver-FQDN. For example:
Firefox can use Kerberos credentials to authenticate to the IPA UI, but Kerberos negotiation needs to be configured to use the IPA domain. At the first log-in attempt, if Firefox has not been configured to support Kerberos authentication, then an error message appears.
Figure 4.10. Kerberos Authentication Error
If you see that error, then the IPA web UI can perform the required configuration:
Click the follow these directions link.
Click the link to import the CA certificate for the IPA server.
Set the web site and software developer (first and last) trust bits for the CA certificate.
Click the Configure Firefox button. This automatically fills out all the negotiate settings in the Firefox configuration to use the IPA domain settings.
When the process is complete, a success box pops up saying that Firefox has been configured for single sign-on. For there, you are redirected to the IPA web UI.
This can also be done manually:
Open Firefox.
Type about:config in the address bar.
In the Search field, type negotiate to filter out the Kerberos-related parameters.
On Red Hat Enterprise Linux, enter the domain name for the URI parameters, including the preceding period (.) and set the gsslib parameter to true:
Open the web UI by going to the fully-qualified domain name of the IPA server such as http://ipaserver.example.com. Make sure that you can open the web UI and that there are no Kerberos authentication errors.
Next, download the IPA server's CA certificate from http://ipa.example.com/ipa/config/ca.crt.
Select the first (Trust this CA to identify web sites) and third (Trust this CA to identify software developers) check boxes.
4.3.4. Using a Browser on Another System
It is possible to connect to the Identity Management web UI from a system which is not a member of the IPA domain. In this case, it is possible to specify an IPA-specific Kerberos configuration file on the external (non-IPA) machine before running kinit, and then the user can authenticate against the IPA server domain.
This is especially useful there are multiple realms or overlapping domains across your infrastructure.
4.3.5. Enabling Username/Password Authentication in Your Browser
If Kerberos authentication fails, then browser login also fails. That prevents access to the IPA web UI. Configuring username/password authentication for the UI allows users to log in even if there are problems with the Kerberos service.
Open the ipa.conf file used by the Apache web service.
vim /etc/httpd/conf.d/ipa.conf
In the <Location "/ipa"> location definition, change the KrbMethodK5Passwd attribute from off to on.
KrbMethodK5Passwd on
Restart the httpd service:
# service httpd restart
When this is configured, the web UI prompts for an IPA username and password if it can't detect any Kerberos credentials.
Figure 4.11. IPA Password Prompt
NOTE
This must be configured on every IPA server in the domain.
4.3.6. Using the UI with Proxy Servers
Proxy servers can be used to access the web UI without any additional configuration in IPA.
Port forwarding is not supported with the IPA server. However, because it is possible to use proxy servers with IPA, an operation similar to port forwarding can be configured using proxy forwarding with OpenSSH and the SOCKS option. This is described in http://www.meadowy.org/~gotoh/ssh/openssh-socks.html.
4.3.7. Troubleshooting UI Connection Problems
If negotiate authentication is not working, turn on verbose logging for the authentication process to help diagnose the issue:
Close all browser windows.
In a terminal, set the new log levels for Firefox:
-1208550944[90039d0]: entering nsNegotiateAuth::GetNextToken()
-1208550944[90039d0]: gss_init_sec_context() failed: Miscellaneous failure
No credentials cache found
There are no Kerberos tickets. Run kinit.
-1208994096[8d683d8]: entering nsAuthGSSAPI::GetNextToken()
-1208994096[8d683d8]: gss_init_sec_context() failed: Miscellaneous failure
Server not found in Kerberos database
This can occur when you have successfully obtained Kerberos tickets but are still unable to authenticate to the UI. This indicates that there is a problem with the Kerberos configuration. The first place to check is the [domain_realm] section in the /etc/krb5.conf file. Make sure that the IPA Kerberos domain entry is correct and matches the configuration in the Firefox negotiation parameters. For example:
It is possible that you are behind a proxy which is removing the HTTP headers required for negotiate authentication. Try to connect to the server using HTTPS instead, which allows the request to pass through unmodified. Then check the log file again.
Chapter 5. Identity: Managing Users and User Groups
Users in Identity Management are able to access services and servers within the domain through Kerberos authentication. This chapter covers general management tasks for users, groups, password policies, and other configuration for users.
5.1. Setting up User Home Directories
A home directory is required for any IPA user. Without a home directory in the expected location, a user may be unable to log into the domain. While systems administrators can manage home directories outside of IPA, it is also possible to use a PAM module to create home directories automatically on both IPA servers and clients.
5.1.1. About Home Directories
IPA, as part of managing users, can manage user home directories. However, IPA has certain defined parameters for any managed home directories:
The default prefix for users' home directories is /home.
IPA does not automatically create home directories when users log in. Automatically creating home directories requires either the pam_oddjob_mkhomedir module or the pam_mkhomedir module. This module can be configured as part of client installation or after installation, as described in Section 5.1.2, “Enabling the PAM Home Directory Module”.
The home directory process for IPA first attempts to use the pam_oddjob_mkhomedir module because this requires fewer user privileges and access to create the home directories, as well as integrating smoothly with SELinux. If this module is not available, then the process falls back to the pam_mkhomedir module.
It is possible to use an NFS file server that provides /home that can be made available to all machines in the domain and then automounted on the IPA server.
There are potential issues when using NFS, such as security issues related to granting root access to the NFS user, performance issues with loading the entire /home tree, and network performance issues for using remote servers for home directories. There are some general guidelines for using NFS with Identity Management:
Use automount to mount only the user's home directory and only when the user logs in, rather than loading the entire /home tree.
Use a remote user who has limited permissions to create home directories and mount the share on the IPA server as that user. Since the IPA server runs as an httpd process, it is possible to use sudo or a similar program to grant limited access to the IPA server to create home directories on the NFS server.
Use a mechanism, such as the pam_oddjob_mkhomedir module, to create the home directory as that user.
If a suitable directory and mechanism are not available for to create home directories, users may not be able to log in.
5.1.2. Enabling the PAM Home Directory Module
For a home directory to be created automatically when a user logs in, IPA can use either the pam_oddjob_mkhomedir module or the pam_mkhomedir module. Because it requires fewer permissions and works well with SELinux, IPA preferentially uses the pam_oddjob_mkhomedir module. If that module is not installed, then it falls back to the pam_mkhomedir module.
NOTE
IPA does not require the pam_oddjob_mkhomedir module or pam_mkhomedir module. This is because the *_mkhomedir module may try to create home directories even when the shared storage is not available. If the module is unable to create the home directory, then users can be blocked from logging into the IPA domain.
The system administrator must activate this module on each client or server as needed.
There are two ways to enable the pam_oddjob_mkhomedir (or pam_mkhomedir) module:
The --mkhomedir option can be used with the ipa-client-install command. While this is possible for clients, this option is not available to servers when they are set up.
The pam_oddjob_mkhomedir module can be enabled using the system's authconfig command. For example:
authconfig --enablemkhomedir
This option can be used for both server and client machines post-installation.
5.1.3. Manually Automounting Home Directories
While PAM modules can be used to create home directories for users automatically, this may not be desirable behavior in every environment. In that case, home directories can be manually added to the IPA server from separate locations using NFS shares and automount.
Create a new location for the user directory maps:
User accounts in IPA are ultimately stored as user accounts in an LDAP directory. This grants both flexibility and certain restrictions on the structure and information stored in IPA user entries.
5.2.1.1. About User Schema
When a user entry is created, it is automatically assigned certain LDAP object classes which, in turn, make available certain attributes. LDAP attributes are the way that information is stored in the directory. (This is discussed in detail in the Directory Server Deployment Guide and the Directory Server Schema Reference.)
Table 5.1. Default Identity Management User Object Classes
Description
Object Classes
IPA object classes
ipaobject
Person object classes
person
organizationalperson
inetorgperson
inetuser
posixaccount
Kerberos object classes
krbprincipalaux
krbticketpolicyaux
Managed entries (template) object classes
mepOriginEntry
A number of attributes are available to user entries. Some are set manually and some are set based on defaults if a specific value is not set. There is also an option to add any attributes available in the object classes in Table 5.1, “Default Identity Management User Object Classes”, even if there is not a UI or command-line argument for that attribute. Additionally, the values generated or used by the default attributes can be configured, as in Section 5.7, “Specifying Default User and Group Settings”.
Table 5.2. Default Identity Management User Attributes
Unlike the other options, this accepts no value. The script prompts for the new password.
Optional
User ID number
IMPORTANT
When a user is created without specifying a UID number, then the user account is automatically assigned an ID number that is next available in the server or replica range. (Number ranges are described more in Section 5.4, “Managing Unique UID and GID Number Assignments”.) This means that a user always has a unique number for its UID number and, if configured, for its private group.
If a number is manually assigned to a user entry, the server does not validate that the uidNumber is unique. It will allow duplicate IDs; this is expected (though discouraged) behavior for POSIX entries.
If two entries are assigned the same ID number, only the first entry is returned in a search for that ID number. However, both entries will be returned in searches for other attributes or with ipa user-find --all.
--uid
Default
Group ID number
IMPORTANT
When a user is created without specifying a GID number, then the user account is automatically assigned an ID number that is next available in the server or replica range. (Number ranges are described more in Section 5.4, “Managing Unique UID and GID Number Assignments”.) This means that a user always has a unique number for its UID number and, if configured, for its private group.
If a number is manually assigned to a user entry, the server does not validate that the uidNumber is unique. It will allow duplicate IDs; this is expected (though discouraged) behavior for POSIX entries.
If two entries are assigned the same ID number, only the first entry is returned in a search for that ID number. However, both entries will be returned in searches for other attributes or with ipa user-find --all.
--gidnumber
Default
Street address
--street
Optional
City
--city
Optional
State/Province
--state
Optional
Zip code
--postalcode
Optional
Telephone number
--phone
Optional
Mobile telephone number
--mobile
Optional
Pager number
--pager
Optional
Fax number
--fax
Optional
Organizational unit
--orgunit
Optional
Job title
--title
Optional
Manager
--manager
Optional
Car license
--carlicense
Optional
Additional attributes
--addattr
Optional
[a]
Required attributes must be set for every entry. Optional attributes may be set, while default attributes are automatically added with a pre-defined value unless a specific value is given.
5.2.1.2. About Username Formats
IPA supports a wide range of username formats, based on this regular expression:
The IPA configuration provides some validation when object classes are changed:
All of the object classes and their specified attributes must be known to the LDAP server.
All default attributes that are configured for the entry must be supported by the configured object classes.
There are limits to the IPA schema validation, however. Most important, the IPA server does not check that the defined user or group object classes contain all of the required object classes for IPA entries. For example, all IPA entries require the ipaobject object class. However, when the user or group schema is changed, the server does not check to make sure that this object class is included; if the object class is accidentally deleted, then future entry add operations will fail.
Also, all object class changes are atomic, not incremental. The entire list of default object classes has to be defined every time there is a change. For example, a company may create a custom object class to store employee information like birthdays and employment start dates. The administrator cannot simply add the custom object class to the list; he must set the entire list of current default object classes plus the new object class. The existing default object classes must always be included when the configuration is updated. Otherwise, the current settings will be overwritten, which causes serious performance problems.
5.2.1.4. Applying Custom Object Classes to New User Entries
User and group accounts are created with a pre-defined set of LDAP object classes applied to the entry. Any attributes which belong to the object class can be added to the user entry.
While the standard and IPA-specific LDAP object classes will cover most deployment scenarios, administrators may have custom object classes with custom attributes which should be applied to user entries.
At the bottom of the users area, click the Add link to add a new field for another object class.
IMPORTANT
Always include the existing default object classes when the configuration is updated. Otherwise, the current settings will be overwritten. If any object classes required by Identity Management are not included, then subsequent attempts to add an entry will fail with object class violations.
When the changes are complete, click the Update link at the top of the Configuration page.
Add the new object class to the list of object classes added to entries. The option for user object classes is --userobjectclasses.
IMPORTANT
Always include the existing default object classes when the configuration is updated. Otherwise, the current settings will be overwritten. If any object classes required by Identity Management are not included, then subsequent attempts to add an entry will fail with object class violations.
5.2.1.5. Applying Custom Object Classes to New Group Entries
As with user entries, administrators may have custom object classes with custom attributes which should be applied to group entries. These can be added automatically by adding the object classes to the IPA server configuration.
Click the Add link to add a new field for another object class.
IMPORTANT
Always include the existing default object classes when the configuration is updated. Otherwise, the current settings will be overwritten. If any object classes required by Identity Management are not included, then subsequent attempts to add an entry will fail with object class violations.
When the changes are complete, click the Update link at the top of the Configuration page.
Add the new object class to the list of object classes added to entries. The option for group object classes is --groupobjectclasses.
IMPORTANT
Always include the existing default object classes when the configuration is updated. Otherwise, the current settings will be overwritten. If any object classes required by Identity Management are not included, then subsequent attempts to add an entry will fail with object class violations.
Open the Identity tab, and select the Users subtab.
Click the Add link at the top of the users list.
Fill in the user's first and last names. The user login (UID) is automatically generated based on the user's full name, but this can be set manually by clicking the Optional field link.
Click the Add and Edit button to go directly to the expanded entry page and fill in more attribute information, as in Section 5.2.3.1, “From the Web UI”. The user entry is created with some basic information already filled in, based on the given user information and the user entry template.
5.2.2.2. From the Command Line
New user entries are added with the user-add command. Attributes (listed in Table 5.2, “Default Identity Management User Attributes”) can be added to the entry with specific values or the command can be run with no arguments.
$ ipa user-add [username] [attributes]
When no arguments are used, the command prompts for the required user account information and uses the defaults for the other attributes, with the defaults printed below. For example:
$ ipa user-add
First name: John
Last name: Smith
User login [jsmith]: jsmith
--------------------
Added user "jsmith"
--------------------
User login: jsmith
First name: John
Last name: Smith
Home directory: /home/jsmith
GECOS field: jsmith
Login shell: /bin/sh
Kerberos principal: jsmith@EXAMPLE.COM
UID: 387115841
Any of the user attributes can be passed with the command. This will either set values for optional attributes or override the default values for default attributes.
When a user is created without specifying a UID or GID number, then the user account is automatically assigned an ID number that is next available in the server or replica range. (Number ranges are described more in Section 5.4, “Managing Unique UID and GID Number Assignments”.) This means that a user always has a unique number for its UID number and, if configured, for its private group.
If a number is manually assigned to a user entry, the server does not validate that the uidNumber is unique. It will allow duplicate IDs; this is expected (though discouraged) behavior for POSIX entries.
If two entries are assigned the same ID number, only the first entry is returned in a search for that ID number. However, both entries will be returned in searches for other attributes or with ipa user-find --all.
5.2.3. Editing Users
5.2.3.1. From the Web UI
Open the Identity tab, and select the Users subtab.
Click the name of the user to edit.
There are a number of different types of attributes that can be edited for the user. All of the default attributes are listed in Table 5.2, “Default Identity Management User Attributes”. Most of the attributes in the Identity Settings and Account Settings areas have default values filled in for them, based on the user information or on the user entry template.
Edit the fields or, if necessary, click the Add link by an attribute to create the attribute on the entry.
When the edits are done, click the Update link at the top of the page.
5.2.3.2. From the Command Line
The user-mod command edits user accounts by adding or changing attributes. At its most basic, the user-mod specifies the user account by login ID, the attribute to edit, and the new value:
$ ipa user-mod loginID --attributeName=newValue
For example, to change a user's work title from Editor II to Editor III:
$ ipa user-mod jsmith --title="Editor III"
Identity Management allows multi-valued attributes, based on attributes in LDAP that are allowed to have multiple values. For example, a person may have two email addresses, one for work and one for personal, that are both stored in the mail attribute. Managing multi-valued attributes can be done using the --addattr option.
If an attributes allows multiple values — like mail — simply using the command-line argument will overwrite the value with the new value. This is also true for using --setaddr. However, using --addattr will add a new attribute; for a multi-valued attribute, it adds the new value in addition to any existing values.
Example 5.1. Multiple Mail Attributes
A user is created first using his work email account.
User accounts can be deactivated. A deactivated user cannot log into IPA or its related services (like Kerberos) and he cannot perform any tasks. However, the user account still exists within Identity Management and all of the associated information remains unchanged.
NOTE
Any existing connections remain valid until the Kerberos TGT and other tickets expire. Once the ticket expires, the user cannot renew the ticket.
5.2.4.1. From the Web UI
Open the Identity tab, and select the Users subtab.
Click the name of the user for whom to deactivate or activate.
Scroll to the Account Settings area.
Click the Deactivate link.
Click the Update link at the top of the page.
5.2.4.2. From the Command Line
Users are activated and disabled using user-enable and user-disable commands. All that is required is the user login. For example:
$ ipa user-disable jsmith
5.2.5. Deleting Users
Deleting a user account permanently removes the user entry and all its information from IPA, including group memberships and passwords. External configuration — like a system account and home directory — will still exist on any server or local machine where they were created, but they cannot be accessed through IPA.
Deleting a user account is permanent. The information cannot be recovered; a new account must be created.
NOTE
If all admin users are deleted, then you must use the Directory Manager account to create a new administrative user.
Alternatively, any user who belongs in the group management role can also add a new admin user.
5.2.5.1. With the Web UI
Open the Identity tab, and select the Users subtab.
Select the checkboxes by the names of the users to delete.
Click the Delete link at the top of the task area.
When prompted, confirm the delete action.
5.2.5.2. From the Command Line
Users are deleted using the user-del command and then the user login. For example, a single user:
$ ipa user-del jsmith
To delete multiple users, simply list the users, separated by spaces.
$ ipa user-del jsmith bjensen mreynolds cdickens
When deleting multiple users, use the --continue option to force the command to continue regardless of errors. A summary of the successful and failed operations is printed to stdout when the command completes. If --continue is not used, then the command proceeds with deleting users until it encounters an error, and then it exits.
Regular, non-administrative users can change only their personal passwords, and all passwords are constrained by the IPA password policies.
This allows administrators to create intro passwords or to reset passwords easily, while still keeping the final password confidential. Since any password sent by an administrator to the user is temporary, there is little security risk.
Changing a password as the IPA admin user overrides any IPA password policies, but the password expires immediately. This requires the user to change the password at the next login. Similarly, any user who has password change rights can change a password and no password policies are applied, but the other user must reset the password at the next log in.
Changing a password as the LDAP Directory Manager user, using LDAP tools, overrides any IPA password policies.
5.3.1. From the Web UI
Open the Identity tab, and select the Users subtab.
Click the name of the user for whom to reset the password. All users can change their own password; only administrators or users with delegated permissions can change other user's passwords.
Scroll to the Account Settings area.
Click the Reset Password link.
In the pop-up box, enter and confirm the new password.
5.3.2. From the Command Line
Changing a password — your own or another user's — is done using the user-mod command, as with other user account changes.
$ ipa user-mod jsmith --password
5.4. Managing Unique UID and GID Number Assignments
An IPA server must generate random UID and GID values and simultaneously ensure that replicas never generate the same UID or GID value. The need for unique UID and GID numbers might even cross IPA domains, if a single organization has multiple disparate domains.
The UID and GID numbers are divided into ranges. By keeping separate numeric ranges for individual servers and replicas, the chances are minimal that any numbers issued by one server or replica will duplicate those from another. Ranges are updated and shared intelligently between servers and replicas through the Dynamic Numeric Assignment (DNA) Plug-in, as part of the backend 389 Directory Server instance for the domain. The same range is used for user IDs (uidNumber) and group IDs (gidNumber). A user and a group may have the same ID, but since the ID is set in different attributes, there is no conflict. Using the same ID number for both a user and a group also allows an administrator to configure user private groups, where a unique system group is created for each user and the ID number is the same for both the user and the group.
IMPORTANT
When a user is created interactively or without specifying a UID or GID number, then the user account is created with an ID number that is next available in the server or replica range. This means that a user always has a unique number for its UID number and, if configured, for its private group.
If a number is manually assigned to a user entry, the server does not validate that the uidNumber is unique. It will allow duplicate IDs; this is expected (though discouraged) behavior for POSIX entries. The same is true for group entries: a duplicate gidNumber can be manually assigned to the entry.
If two entries are assigned the same ID number, only the first entry is returned in a search for that ID number. However, both entries will be returned in searches for other attributes or with ipa user-find --all.
5.4.1. About ID Range Assignments During Installation
The IPA administrator can initially define a range during server installation, using the --idstart and --idmax options with ipa-server-install. These options are not required, so the setup script can assign random ranges during installation.
If no range is set manually when the first IPA server is installed, a range of 200,000 IDs is randomly selected. There are 10,000 possible ranges. Selecting a random range from that number provides a high probability of non-conflicting IDs if two separate IPA domains are ever merged in the future.
With a single IPA server, IDs are assigned to entries in order through the range. With replicas, the initial server ID range is split and distributed.
When a replica is installed, it is configured with an invalid range. It also has a directory entry (that is shared among replicas) that instructs the replica where it can request a valid range. When the replica starts, or as its current range is depleted so that less than 100 IDs are available, it can contact one of the available servers for a new range allotment. A special extended operation splits the range in two, so that the original server and the replica each have half of the available range.
5.4.2. Adding New Ranges
If the range for the entire domain is close to depletion, a new range can be manually selected and assigned to one of the master servers. All replicas then request ID ranges from the master as necessary.
The changes to the range are done by editing the 389 Directory Server configuration to change the DNA Plug-in instance. The range is defined in the dnaNextRange parameter. For example:
This command only adds the specified range of values; it does not check that the values in that range are actually available. This check is performed when an attempt is made to allocate those values. If a range is added that contains mostly values that were already allocated, the system will cycle through the entire range searching for unallocated values, and then the operation ultimately fails if none are available.
5.5. Managing User Groups
User groups are a way of centralizing control over important management tasks, particularly access control and password policies. Three groups are created during the installation, specifically for use by IPA operations:
ipausers, which contains all users.
admins, which contains administrative users. The initial admin user belongs to this group.
editors, which is a special group for users working through the web UI. This group allows users to edit other users' entries, though without all of the rights of the admin user.
All groups in Identity Management are essentially static groups, meaning that the members of the group are manually and explicitly added to the group. Tangentially, IPA allows nested groups, where a group is a member of another group. In that case, all of the group members of the member group automatically belong to the parent group, as well.
Because groups are easy to create, it is possible to be very flexible in what groups to create and how they are organized. Groups can be defined around organizational divisions like departments, physical locations, or IPA or infrastructure usage guidelines for access controls.
NOTE
Some operating systems limit the number of groups that can be assigned to system users. For example, Solaris and AIX systems both limit users to 16 groups per user. This can be an issue when using nested groups, when a user may be automatically added to multiple groups.
When a group entry is created, it is automatically assigned certain LDAP object classes. (LDAP object classes and attributes are discussed in detail in the Directory Server Deployment Guide and the Directory Server Schema Reference.) For groups, only two attributes truly matter: the name and the description.
Table 5.3. Default Identity Management Group Object Classes
Description
Object Classes
IPA object classes
ipaobject
ipausergroup
nestedgroup
Group object classes
groupofnames
posixgroup
5.5.1. Creating User Groups
5.5.1.1. With the Web UI
Open the Identity tab, and select the User Groups subtab.
Click the Add link at the top of the groups list.
Enter all of the information for the group.
A unique name. This is the identifier used for the group in the IPA domain, and it cannot be changed after it is created. The name cannot contain spaces, but other separators like an underscore (_) are allowed.
A text description of the group.
Whether the group is a Posix group, which adds Linux-specific information to the entry. By default, all groups are Posix groups unless they are explicitly configured not to be. Non-Posix groups can be created for interoperability with Windows or Samba.
Optionally, the GID number for the group. All Posix groups require a GID number, but IPA automatically assigns the GID number.
Setting a GID number is not necessary because of the risk of collisions. If a GID number is given manually, IPA will not override the specified GID number, even if it not unique.
Click the Add and Edit button to go immediately to the member selection page.
New groups are created using the group-add command. (This adds only the group; members are added separately.)
Two attributes are always required: the group name and the group description. If those attributes are not given as arguments, then the script prompts for them.
Additionally, there is one other configuration option, --nonposix. (By default, all groups are created as POSIX groups.) To enable interoperability with Windows users and groups and programs like Samba, it is possible to create non-POSIX groups by using the --nonposix option. This option tells the script not to add the posixGroup object class to the entry.
For example:
$ ipa group-add examplegroup --desc="for examples" --nonposix
----------------------
Added group "examplegroup"
----------------------
Group name: examplegroup
Description: for examples
GID: 855800010
When no arguments are used, the command prompts for the required group account information:
$ ipa group-add
Group name: engineering
Description: for engineers
-------------------------
Added group "engineering"
-------------------------
Group name: engineering
Description: for engineers
GID: 387115842
IMPORTANT
When a group is created without specifying a GID number, then the group entry is assigned the ID number that is next available in the server or replica range. (Number ranges are described more in Section 5.4, “Managing Unique UID and GID Number Assignments”.) This means that a group always has a unique number for its GID number.
If a number is manually assigned to a group entry, the server does not validate that the gidNumber is unique. It will allow duplicate IDs; this is expected (though discouraged) behavior for POSIX entries.
If two entries are assigned the same ID number, only the first entry is returned in a search for that ID number. However, both entries will be returned in searches for other attributes or with ipa group-find --all.
NOTE
You cannot edit the group name. The group name is the primary key, so changing it is the equivalent of deleting the group and creating a new one.
5.5.2. Adding Group Members
5.5.2.1. With the Web UI (Group Page)
NOTE
This procedure adds a user to a group. User groups can contain other user groups as their members. These are nested groups.
It can take up to several minutes for the members of the child group to show up as members of the parent group. This is especially true on virtual machines where the nested groups have more than 500 members.
When creating nested groups, be careful not to create recursive groups. For example, if GroupA is a member of GroupB, do not add GroupB as a member of GroupA. Recursive groups are not supported and can cause unpredictable behavior.
Open the Identity tab, and select the User Groups subtab.
Click the name of the group to which to add members.
Click the Enroll link at the top of the task area.
Click the checkbox by the names of the users to add, and click the right arrows button, >>, to move the names to the selection box.
Click the Enroll button.
Group members can be users or other user groups. It can take up to several minutes for the members of the child group to show up as members of the parent group. This is especially true on virtual machines where the nested groups have more than 500 members.
5.5.2.2. With the Web UI (User's Page)
Users can also be added to a group through the user's page.
Open the Identity tab, and select the Users subtab.
Click the name of the user to edit.
Open the User Groups tab on the user entry page.
Click the Enroll link at the top of the task area.
Click the checkbox by the names of the groups for the user to join, and click the right arrows button, >>, to move the groups to the selection box.
Click the Enroll button.
5.5.2.3. With the Command Line
Members are added to a group using the group-add-member command. This command can add both users as group members and other groups as group members.
The syntax of the group-add-member command requires only the group name and a comma-separated list of users to add:
For example, this adds three users to the engineering group:
$ ipa group-add-member engineering --users=jsmith,bjensen,mreynolds
Group name: engineering
Description: for engineers
GID: 387115842
Member users: jsmith,bjensen,mreynolds
-------------------------
Number of members added 3
-------------------------
Likewise, other groups can be added as members, which creates nested groups:
$ ipa group-add-member engineering --groups=dev,qe1,dev2
Group name: engineering
Description: for engineers
GID: 387115842
Member groups: dev,qe1,dev2
-------------------------
Number of members added 3
-------------------------
When displaying nested groups, members are listed as members and the members of any member groups are listed as indirect members. For example:
$ ipa group-show examplegroup
Group name: examplegroup
Description: for examples
GID: 93200002
Member users: jsmith,bjensen,mreynolds
Member groups: californiausers
Indirect Member users: sbeckett,acalavicci
It can take up to several minutes for the members of the child group to show up as members of the parent group. This is especially true on virtual machines where the nested groups have more than 500 members.
NOTE
When creating nested groups, be careful not to create recursive groups. For example, if GroupA is a member of GroupB, do not add GroupB as a member of GroupA. Recursive groups are not supported and can cause unpredictable behavior.
A group member is removed using the group-remove-member command.
$ ipa group-remove-member engineering --users=jsmith
Group name: engineering
Description: for engineers
GID: 855800009
Member users: bjensen,mreynolds
---------------------------
Number of members removed 1
---------------------------
5.5.2.4. Viewing Direct and Indirect Members of a Group
User groups can contain other user groups as members. This is called a nested group. This also means that a group has two types of members:
Direct members, which are added explicitly to the group
Indirect members, which are members of the group because they are members of another user group which is a member of the group
The IPA web UI has an easy way to view direct and indirect members of a group. The members list is filtered by member type, and this can be toggled by selecting the Direct and Indirect radio buttons at the top right corner of the members list.
Figure 5.1. Indirect and Direct Members
Being able to track indirect members makes it easier to assign group membership properly, without duplicating membership.
5.5.3. Deleting User Groups
When a user group is deleted, only the group is removed. The user accounts of group members (including nested groups) are not affected. Additionally, any access control delegations that apply to that group are removed.
WARNING
Deleting a group is immediate and permanent. If any group configuration (such as delegations) is required, it must be assigned to another group or a new group created.
5.5.3.1. With the Web UI
Open the Identity tab, and select the User Groups subtab.
Select the checkbox by the name of the group to delete.
Click the Delete link at the top of the task area.
When prompted, confirm the delete action.
5.5.3.2. With the Command Line
The group-del command to deletes the specified group. For example:
$ ipa group-del examplegroup
5.6. Searching for Users and Groups
The user searches in IPA can be run against simple (full word) or partial search strings. The range of attributes that are searched is configured as part of the default IPA configuration, as in Section 5.7, “Specifying Default User and Group Settings”.
By default, there are six attributes that are indexed for user searches and two that are indexed for group searches. These are listed in Table 5.4, “Default Search Attributes”. All search attributes are searched in a user/group search.
Both user and group main pages have a search bar in the upper right corner of the task area. This search box searches against all of the fields listed in Table 5.4, “Default Search Attributes”. Type in any string, even a single letter, and click the magnifying glass icon. The UI filters the displayed list to match the search string.
Figure 5.2. User Search Box
5.6.2. With the Command Line
Searches are simple:
$ ipa user-find|group-find stringoptions
There are a few general rules with searches:
If there is no string, then the search returns every entry in IPA, up to the search limit.
With the command-line tools, only a single search string can be used for user and group searches. With the UI, multiple strings can be used.
Searches are case insensitive.
Search results are displayed alphabetically, with exact matches listed first, followed by partial matches.
Wildcards cannot be used in searches. The search string must include at least one character that appears in one of the indexed search fields.
Example 5.2. User Search for John
The basic search looks for the string john, which can appear in any of the search indexes.
$ ipa user-find john
---------------
2 users matched
---------------
User login: jpeterson
First name: john
Last name: peterson
Home directory: /home/jpeterson
Login shell: /bin/sh
UID: 855800007
GID: 855800007
Account disabled: False
User login: jsmith
First name: john
Last name: smith
Home directory: /home/jsmith
Login shell: /bin/sh
UID: 855800004
GID: 855800004
Account disabled: False
----------------------------
Number of entries returned 2
----------------------------
A search can also accept options like --raw. --raw prints the LDAP attributes for the user account rather than the reading-friendly field names.
$ ipa user-find john --raw
---------------
2 users matched
---------------
uid: jpeterson
givenname: john
sn: peterson
homedirectory: /home/jpeterson
loginshell: /bin/sh
uidnumber: 855800007
gidnumber: 855800007
nsaccountlock: False
uid: jsmith
givenname: john
sn: smith
homedirectory: /home/jsmith
loginshell: /bin/sh
uidnumber: 855800004
gidnumber: 855800004
nsaccountlock: False
----------------------------
Number of entries returned 2
----------------------------
TIP
If the desired entry is not listed, it is possible that the search hit the preset search size limit before the entry was found. Change the search record or time limits, as in Section 5.7.2, “Setting Default Search Limits”, to allow more entries to be returned.
5.7. Specifying Default User and Group Settings
Identity Management uses a template when it creates new entries.
For users, the template is very specific. Identity Management uses default values for several core attributes for IPA user accounts. These defaults can define actual values for user account attributes (such as the home directory location) or it can define the format of attribute values, such as the username length. These settings also define the object classes assigned to users.
For groups, the template only defines the assigned object classes.
These default definitions are all contained in a single configuration entry for the IPA server, cn=ipaconfig,cn=etc,dc=example,dc=com.
The configuration can be changed using the ipa config-mod command.
Table 5.5. Default User Parameters
Field
Command-Line Option
Descriptions
Maximum username length
--maxusername
Sets the maximum number of characters for usernames. The default value is eight.
Root for home directories
--homedirectory
Sets the default directory to use for user home directories. The default value is /home.
Default shell
--defaultshell
Sets the default shell to use for users. The default value is /bin/sh.
Default user group
--defaultgroup
Sets the default group to which all newly created accounts are added. The default value is ipausers, which is automatically created during the IPA server installation process.
Default e-mail domain
--emaildomain
Sets the email domain to use to create email addressed based on the new accounts. The default is the IPA server domain.
Search time limit
--searchtimelimit
Sets the maximum amount of time, in seconds, to spend on a search before the server returns results.
Search size limit
--searchrecordslimit
Sets the maximum number of records to return in a search.
User search fields
--usersearch
Sets the fields in a user entry that can be used as a search string. Any attribute listed has an index kept for that attribute, so setting too many attributes could affect server performance.
Group search fields
--groupsearch
Sets the fields in a group entry that can be used as a search string.
Certificate subject base
Sets the base DN to use when creating subject DNs for client certificates. This is configured when the server is set up.
Default user object classes
--userobjectclasses
Sets a list of object classes that are used to create IPA user accounts.
Default group object classes
--groupobjectclasses
Sets a list of object classes that are used to create IPA group accounts.
Password expiration notification
--pwdexpnotify
Sets how long, in days, before a password expires for the server to send a notification.
Password plug-in features
Sets the format of passwords that are allowed for users.
5.7.1. Viewing the Settings Configuration
5.7.1.1. From the Web UI
Open the IPA Server tab.
Select the Configuration subtab.
The complete configuration entry is shown in three sections, one for all search limits, one for user templates, and one for group templates.
5.7.1.2. From the Command Line
The config-show command shows the current configuration which applies to all new user accounts. By default, only the most common attributes are displayed; use the --all option to show the complete configuration.
Search limits set caps on the number of records returned or the time spent searching when querying the database for user or group entries. There are two types of search limits: time limits and size (number) limits.
With the default settings, users are limited to two second searches and no more than 100 records returned per search.
IMPORTANT
Setting search size or time limits too high can negatively affect IPA server performance.
5.7.2.1. With the Web UI
Open the IPA Server tab.
Select the Configuration subtab.
Scroll to the Search Options area.
Change the search limit settings.
Search size limit, the maximum number of records to return in a search.
Search time limit, the maximum amount of time, in seconds, to spend on a search before the server returns results.
TIP
Setting the time limit or size limit value to -1 means that there are no limits on searches.
When the changes are complete, click the Update link at the top of the Configuration page.
5.7.2.2. With the Command Line
The search limits can be changed using the config-mod command.
$ ipa config-mod --searchtimelimit=5 --searchrecordslimit=500
Max. username length: 32
Home directory base: /home
Default shell: /bin/sh
Default users group: ipausers
Default e-mail domain for new users: rhts.eng.bos.redhat.com
Search time limit: 5
Search size limit: 50
User search fields: uid,givenname,sn,telephonenumber,ou,title
Group search fields: cn,description
Enable migration mode: FALSE
Certificate Subject base: O=EXAMPLE.COM
Password Expiration Notification (days): 4
TIP
Setting the time limit or size limit value to -1 means that there are no limits on searches.
5.7.3. Setting User Search Attributes
A search for users or groups does not automatically search every possible attribute for that attribute. Rather, it searches a specific subset of attributes, and that list is configurable.
When adding attributes to the user or group search fields, make sure that there is a corresponding index within the LDAP directory for that attribute. Searches are performed based on indexes. Most standard LDAP attributes have indexes, but any custom attributes must have indexes created for them. Creating indexes is described in the indexes chapter in the Directory Server Administrator's Guide.
5.7.3.1. From the Web UI
Open the IPA Server tab.
Select the Configuration subtab.
Scroll to the User Options area.
Add any additional search attributes, in a comma-separated list, in the User search fields field.
When the changes are complete, click the Update link at the top of the Configuration page.
5.7.3.2. From the Web UI
To change the search attributes, use the --usersearch option to set the attributes for user searches.
Always give the complete list of search attributes. Whatever values are passed with the configuration argument overwrite the previous settings.
5.7.4. Setting Group Search Attributes
A search for users or groups does not automatically search every possible attribute for that attribute. Rather, it searches a specific subset of attributes, and that list is configurable.
When adding attributes to the user or group search fields, make sure that there is a corresponding index within the LDAP directory for that attribute. Searches are performed based on indexes. Most standard LDAP attributes have indexes, but any custom attributes must have indexes created for them. Creating indexes is described in the indexes chapter in the Directory Server Administrator's Guide.
5.7.4.1. From the Web UI
Open the IPA Server tab.
Select the Configuration subtab.
Scroll to the Group Options area.
Add any additional search attributes, in a comma-separated list, in the Group search fields field.
When the changes are complete, click the Update link at the top of the Configuration page.
5.7.4.2. From the Command Line
To change the search attributes, use the --groupsearch options to set the attributes for group searches.
$ ipa config-mod --groupsearch=cn,description
NOTE
Always give the complete list of search attributes. Whatever values are passed with the configuration argument overwrite the previous settings.
Both DNS and Kerberos are configured as part of the initial client configuration. This is required because these are the two services that bring the machine within the IPA domain and allow it to identify the IPA server it will connect with. After the initial configuration, IPA has tools to manage both of these services in response to changes in the domain services, changes to the IT environment, or changes on the machines themselves which affect Kerberos, certificate, and DNS services, like changing the client hostname.
This chapter describes how to manage identity services that relate directly to the client machine:
DNS entries and settings
Machine authentication
Hostname changes (which affect domain services)
6.1. About Hosts, Services, and Machine Identity and Authentication
The basic function of an enrollment process is to create a host entry for the client machine in the IPA directory. This host entry is used to establish relationships between other hosts and even services within the domain. These relationships are part of delegating authorization and control to hosts within the domain.
A host entry contains all of the information about the client within IPA:
Service entries associated with the host
The host and service principal
Access control rules
Machine information, such as its physical location and operating system
Some services that run on a host can also belong to the IPA domain. Any service that can store a Kerberos principal or an SSL certificate (or both) can be configured as an IPA service. Adding a service to the IPA domain allows the service to request an SSL certificate or keytab from the domain. (Only the public key for the certificate is stored in the service record. The private key is local to the service.)
An IPA domain establishes a commonality between machines, with common identity information, common policies, and shared services. Any machine which belongs to a domain functions as a client of the domain, which means it uses the services that the domain provides. An IPA domain (as described in Section 1.2, “Bringing Linux Services Together”) provides three main services specifically for machines:
DNS
Kerberos
Certificate management
Machines are treated as another identity that is managed by IPA. Clients use DNS to identify IPA servers, services, and domain members — which, like user identities are stored in the 389 Directory Server instance for the IPA server. Like users, machines can be authenticated to the domain using Kerberos or certificates to verify the machine's identity.
From the machine perspective, there are several tasks that can be performed that access these domain services:
Joining the DNS domain (machine enrollment)
Managing DNS entries and zones
Managing machine authentication
Authentication in IPA includes machines as well as users. Machine authentication is required for the IPA server to trust the machine and to accept IPA connections from the client software installed on that machine. After authenticating the client, the IPA server can respond to its requests. IPA supports two different approaches to machine authentication:
Key tables (or keytabs, a symmetric key resembling to some extent a user password) and machine certificates. Kerberos tickets are generated as part of the Kerberos services and policies defined by the server. Initially granting a Kerberos ticket, renewing the Kerberos credentials, and even destroying the Kerberos session are all handled by the IPA services. Managing Kerberos is covered in Chapter 12, Policy: Managing the Kerberos Domain.
Machine certificates. In this case, the machine uses an SSL certificate that is issued by the IPA server's certificate authority and then stored in IPA's Directory Server. The certificate is then sent to the machine to present when it authenticates to the server. On the client, certificates are managed by a service called certmonger, which is described in Chapter 18, Working with certmonger.
6.2. Adding Host Entries
A host entry is always created when a client is configured. On Red Hat Enterprise Linux systems, this is done automatically with the ipa-client-install script. On other platforms — and in alternative enrollment scenarios, as in Section 6.3, “Enrolling Clients Manually” — the host entry is created manually.
6.2.1. Adding Host Entries from the Web UI
Open the Identity tab, and select the Hosts subtab.
Click the Add link at the top of the hosts list.
Fill in the machine name and select the domain from the configured zones in the drop-down list. If the host has already been assigned a static IP address, then include that with the host entry so that the DNS entry is fully created.
DNS zones can be created in IPA, which is described in Section 8.5, “Adding DNS Zones”. If the IPA server does not manage the DNS server, the zone can be entered manually in the menu area, like a regular text field.
NOTE
Select the Force checkbox to add the host DNS record, even if the hostname cannot be resolved.
This is useful for hosts which use DHCP and do not have a static IP address. This essentially creates a placeholder entry in the IPA DNS service. When the DNS service dynamically updates its records, the host's current IP address is detected and its DNS record is updated.
Click the Add and Edit button to go directly to the expanded entry page and fill in more attribute information. Information about the host hardware and physical location can be included with the host entry.
6.2.2. Adding Host Entries from the Command Line
Host entries are created using the host-add command. This commands adds the host entry to the IPA Directory Server. The full list of options with host-add are listed in Section B.4, “ipa Host Commands”. At its most basic, an add operation only requires the client hostname to add the client to the Kerberos realm and to create an entry in the IPA LDAP server:
$ ipa host-add client1.example.com
If the IPA server is configured to manage DNS, then the host can also be added to the DNS resource records using the --ip-address and --force options.
Example 6.1. Creating Host Entries with Static IP Addresses
Commonly, hosts may not have a static IP address or the IP address may not be known at the time the client is configured. For example, laptops may be preconfigured as Identity Management clients, but they do not have IP addresses at the time they're configured. Hosts which use DHCP can still be configured with a DNS entry by using --force. This essentially creates a placeholder entry in the IPA DNS service. When the DNS service dynamically updates its records, the host's current IP address is detected and its DNS record is updated.
Example 6.2. Creating Host Entries with DHCP
$ ipa host-add --force client1.example.com
Host records are deleted using the host-del command. If the IPA domain uses DNS, then the --updatedns option also removes the associated records of any kind for the host from the DNS.
$ ipa host-del --updatedns client1.example.com
6.3. Enrolling Clients Manually
Enrolling machines as clients in the IPA domain is a two-part process. A host entry is created for the client (and stored in the 389 Directory Server instance), and then a keytab is created to provision the client.
Both parts are performed automatically by the ipa-client-install command. It is also possible to perform those steps separately; this allows for administrators to prepare machines and IPA in advance of actually configuring the clients. This allows more flexible setup scenarios, including bulk deployments.
When performing a manual enrollment, the host entry is created separately, and then enrollment is completed when the client script is run, which creates the requisite keytab.
NOTE
There are two ways to set the password. You can either supply your own or have IPA generate a random one.
6.3.1. Performing a Split Enrollment
There may be a situation where an administrator in one group is prohibited from creating a host entry and, therefore, from simply running the ipa-client-install command and allowing it to create the host. However, that administrator may have the right to run the command after a host entry exists. In that case, one administrator can create the host entry manually, then the second administrator can complete the enrollment by running the ipa-client-install command.
When the second administrator runs the setup script, he must pass his Kerberos password and username (principal) with the ipa-client-install command. For example:
$ ipa-client-install -w secret -p admin2
The keytab is generated on the server and provisioned to the client machine, so that the client machine is not able to connect to the IPA domain. The keytab is saved with root:root ownership and 0600 permissions.
6.3.2. Performing a Bulk or Kickstart Enrollment
Two variations of a split enrollment are a bulk enrollment and a kickstart enrollment. Combined, that allows automatic provisioning of multiple hosts or virtual machines. This requires pre-creating the hosts on the IPA server, with a predefined password that can be used to authenticate to complete the enrollment operation.
An administrator creates the host entry, as described in Section 6.2, “Adding Host Entries”. Set a password to use for the bulk or automatic enrollment. For example:
The password is set to expire after the first authentication attempt. After enrollment completes, the password expires and the host is authenticated using its keytab.
Run the kickstart script, using the given bulk password. The kickstart script performs all of the tasks performed manually by the second administrator in Section 6.3.1, “Performing a Split Enrollment”:
Kickstart installs the IPA packages.
Kickstart runs the enrollment script, passing in the password.
The enrollment script connects to the IPA server using the provided password and a bind DN derived from the machine name. It then authenticates using a simple bind over SSL.
6.4. Manually Unconfiguring Client Machines
A machine may need to be removed from one IPA domain and moved to another domain or a virtual machine may be copied. There are a number of different situations where an IPA client needs to be reconfigured. The easiest solution is to uninstall the client and then configure it afresh.
ipa-client-install --uninstall
If it is not possible to uninstall the client directly, then the IPA configuration can be manually removed from the virtual machine.
WARNING
When a machine is unenrolled, the procedure cannot be undone. The machine can only be enrolled again.
Remove the old hostname from the main keytab. This can be done by removing every principal in the realm or by removing specific principals. For example, to remove all principals:
Remove the old host from the IPA DNS domain. While this is optional, it cleans up the old IPA entries associated with the system and allows it to be re-enrolled cleanly at a later time.
$ ipa host-del server.example.com
If the system should be re-added to a new IPA domain — such as a virtual machine which was moved from one location to another — then the system can be rejoined to IPA using the ipa-join command.
$ ipa-join
6.5. Managing Services
6.5.1. Adding and Editing Service Entries and Keytabs
As with host entries, service entries for the host (and any other services on that host which will belong to the domain) must be added manually to the IPA domain. This is a two step process. First, the service entry must be created, and then a keytab must be created for that service which it will use to access the domain.
By default, Identity Management saves its HTTP keytab to /etc/httpd/conf/ipa.keytab.
NOTE
This keytab is used for the web UI. if a key were stored in ipa.keytab and that keytab file is delete, the IPA web UI will stop working, because the original key would also be deleted.
Similar locations can be specified for each service that needs to be made Kerberos aware. There is no specific location that must be used, but, when using ipa-getkeytab, you should avoid using /etc/krb5.keytab. This file should not contain service-specific keytabs; each service should have its keytab saved in a specific location and the access privileges (and possibly SELinux rules) should be configured so that only this service has access to the keytab.
6.5.1.1. >Adding Services and Keytabs from the Web UI
Open the Identity tab, and select the Services subtab.
Click the Add link at the top of the services list.
Select the service type from the drop-down menu, and give it a name.
Select the hostname of the IPA host on which the service is running. The hostname is used to construct the full service principal name.
Click the Add button to save the new service principal.
Use the ipa-getkeytab command to generate and assign the new keytab for the service principal.
The realm name is optional. The IPA server automatically appends the Kerberos realm for which it is configured. You cannot specify a different realm.
The hostname must resolve to a DNS A record for it to work with Kerberos. You can use the --force flag to force the creation of a principal should this prove necessary.
The -e argument can include a comma-separated list of encryption types to include in the keytab. This supersedes any default encryption type.
WARNING
Creating a new key resets the secret for the specified principal. This means that all other keytabs for that principal are rendered invalid.
6.5.1.2. >Adding Services and Keytabs from the Command Line
Create the service principal. The service is recognized through a name like service/FQDN:
Create the service keytab file. This is done using the ipa-getkeytab command. The command requires the Kerberos service principal (-p), the IPA server name (-s), the file to write (-k), and the encryption method (-e). Be sure to copy the keytab to the appropriate directory for the service.
The realm name is optional. The IPA server automatically appends the Kerberos realm for which it is configured. You cannot specify a different realm.
The hostname must resolve to a DNS A record for it to work with Kerberos. You can use the --force flag to force the creation of a principal should this prove necessary.
The -e argument can include a comma-separated list of encryption types to include in the keytab. This supersedes any default encryption type.
WARNING
The ipa-getkeytab command resets the secret for the specified principal. This means that all other keytabs for that principal are rendered invalid.
6.5.2. Adding Services and Certificates for Services
While services can use keytabs, some services require certificates for access. In that case, a service can be added (or modified) to include a certificate with its service entry.
6.5.2.1. Adding Services and Certificates from the Web UI
Open the Identity tab, and select the Services subtab.
Click the Add link at the top of the services list.
Select the service type from the drop-down menu, and give it a name.
Select the hostname of the IPA host on which the service is running. The hostname is used to construct the full service principal name.
Click the Add and Edit button to go directly to the service entry page.
Scroll to the bottom of the page, to the Service Certificate section.
Click the New Certificate button to create the service certificate.
6.5.2.2. Adding Services and Certificates from the Command Line
Create a certificate for the service. Be sure to copy the keytab to the appropriate directory for the service.
Include the complete certificate request in the --certificate option.
6.5.3. Storing Certificates in NSS Databases
When services use certificates, the certificates and keys can be stored in NSS databases (which may also be used by the services themselves, as well as Identity Management).
Create the NSS databases.
$ certutil -N -d /path/to/database/dir
Request the certificate using certutil, an NSS tool.
$ certutil -R -s "CN=client1.example.com,O=EXAMPLE.COM" -d /path/to/database/dir -a > example.csr
If the IPA domain is using Certificate System for its CA, only the CN of the subject name is used. With a self-signed CA, the subject must match the configured certificate subject base. The IPA server rejects requests with a subject base that differs from this value.
6.5.4. Configuring Clustered Services
The IPA server is not cluster aware. However, it is possible to configure a clustered service to be part of IPA by synchronizing Kerberos keys across all of the participating hosts and configuring services running on the hosts to respond to whatever names the clients use.
6.5.4.1. Configuring Kerberos Credentials for a Clustered Environment
Enroll all of the hosts in the cluster into the IPA domain.
Create any service principals and generate the required keytabs.
Collect any keytabs that have been set up for services on the host, including the host keytab at /etc/krb5.keytab.
Use the ktutil command to produce a single keytab file that contains the contents of all of the keytab files.
For each file, use the rkt command to read the keys from that file.
Use the wkt command to write all of the keys which have been read to a new keytab file.
Replace the keytab files on each host with the newly-created combined keytab file.
At this point, each host in this cluster can now impersonate any other host.
Some services require additional configuration to accommodate cluster members which do not reset hostnames when taking over a failed service.
For sshd, set GSSAPIStrictAcceptorCheck no in /etc/ssh/sshd_config.
For mod_auth_kerb, set KrbServiceName Any in /etc/httpd/conf.d/auth_kerb.conf.
NOTE
For SSL servers, the subject name or a subject alternative name for the server's certificate must appear correct when a client connects to the clustered host. If possible, share the private key among all of the hosts. If each cluster member contains a subject alternative name which includes the names of all the other cluster members will satisfy any client connection requirements.
6.5.5. Using the Same Service Principal for Multiple Services
Within a cluster, the same service principal can be used for multiple services, spread across different machines.
Retrieve a service principal using the ipa-getkeytab command.
Either direct multiple servers or services to use the same file, or copy the file to individual servers as required.
6.6. Disabling Host and Service Entries
Active services and hosts can be accessed by other services, hosts, and users within the domain. There can be situations when it is necessary to remove a host or a service from activity. However, deleting a service or a host removes the entry and all the associated configuration, and it removes it permanently.
Disabling a host or service prevents domain users from access it without permanently removing it from the domain. This can be done by using the host-disable and service-disable commands.
For example, for a host:
$ ipa host-disable server.example.com
For a service, specify the principal rather than the hostname:
$ ipa service-disable http/server.example.com
6.7. Extending Access Permissions over Other Hosts and Services
As discussed in Section 1.3, “Relationships Between Servers and Clients”, within the IPA domain, manage means being able to retrieve a keytab and certificates for another host or service. Every host and service has a managedby entry which lists what hosts or services can manage it. By default, a host can manage itself and all of its services. It is also possible to allow a host to manage other hosts, or services on other hosts, by updating the appropriate delegations or providing a suitable managedby entry.
An IPA service can be managed from any IPA host, as long as that host has been granted, or delegated, permission to access the service. Likewise, hosts can be delegated permissions to other hosts within the domain.
Figure 6.1. Host and Service Delegation
NOTE
If a host is delegated authority to another host through a managedBy entry, it does not mean that the host has also been delegated management for all services on that host. Each delegation has to be performed independently.
6.7.1. Delegating Service Management
A host is delegated control over a service using the service-add-host command. There are two parts to delegating the service: specifying the principal and identifying the hosts (in a comma-separated list) with control:
# ipa service-add-host principal --hosts=hostnames
To create a ticket for this service, create a certificate request on the host with the delegated authority and use the cert-request command to create a service entry and load the certification information:
# ipa cert-request --add --principal=http/web.example.com web.csr
Certificate: MIICETCCAXqgA...[snip]
Subject: CN=web.example.com,O=EXAMPLE.COM
Issuer: CN=EXAMPLE.COM Certificate Authority
Not Before: Tue Feb 08 18:51:51 2011 UTC
Not After: Mon Feb 08 18:51:51 2016 UTC
Fingerprint (MD5): c1:46:8b:29:51:a6:4c:11:cd:81:cb:9d:7c:5e:84:d5
Fingerprint (SHA1):
01:43:bc:fa:b9:d8:30:35:ee:b6:54:dd:a4:e7:d2:11:b1:9d:bc:38
Serial number: 1005
6.7.2. Delegating Host Management
Hosts are delegated authority over other hosts through the host-add-managedby command. This creates a managedby entry. Once the managedby entry is created, then the host can retrieve a keytab for the host it has delegated authority over.
Log in as the admin user.
# kinit admin
Add the managedby entry. For example, this delegates authority over client2 to client1.
For both services and hosts, if a client has delegated authority, it can obtain a keytab for that principal on the local machine. For services, this has the format service/hostname@REALM. For hosts, the service is host.
With kinit, use the -k option to load a keytab and the -t option to specify the keytab.
6.8. Renaming Machines and Reconfiguring IPA Client Configuration
The hostname of a system is critical for the correct operation of Kerberos and SSL. Both of these security mechanisms rely on the hostname to ensure that communication is occurring between the specified hosts. Infrastructures which use virtual machines or clustered servers will commonly have hosts which are renamed because systems are copied, moved, or renamed.
Red Hat Enterprise Linux does not provide a simple rename command to facilitate the renaming of an IPA host. Renaming a host in an IPA domain involves deleting the entry in IPA, uninstalling the client software, changing the hostname, and re-enrolling using the new name. Additionally, part of renaming hosts requires regenerating service principals.
To reconfigure the client:
Identify which services are running on the machine. These need to be re-created when the machine is re-enrolled.
# ipa service-find server.example.com
Each host has a default service which does not appear in the list of services. This service can be referred to as the "host service". The service principal for the host service is host/<hostname>, such as host/server.example.com. This principal can also be referred to as the host principal.
Identify all host groups to which the machine belongs.
# ipa hostgroup-find server.example.com
Identify which of the services have certificates associated with them. This can be done using the ldapsearch command to check the entries in the IPA LDAP database directly:
For any service principals (in addition to the host principal), determine the location of the corresponding keytabs on server.example.com. The keytab location is different for each service, and IPA does not store this information.
Each service on the client system has a Kerberos principal in the form service name/hostname@REALM, such as ldap/server.example.com@EXAMPLE.COM.
Unenroll the client machine from the IPA domain:
# ipa-client-install --uninstall
For each identified keytab other than /etc/krb5.keytab, remove the old principals:
# ipa-rmkeytab -k /path/to/keytab -r EXAMPLE.COM
On another IPA machine, as an IPA administrator, remove the host entry. This removes all services and revokes all certificates issued for that host:
# ipa host-del server.example.com
At this point, the host is completely removed from IPA.
Rename the machine.
Re-enroll the system with IPA:
# ipa-client-install
This generates a host principal for with the new hostname in /etc/krb5.keytab.
For every service that needs a new keytab, run the following command:
# ipa service-add serviceName/new-hostname
To generate certificates for services, use either certmonger or the IPA administration tools.
Re-add the host to any applicable host groups.
6.9. Managing Host Groups
Host groups are a way of centralizing control over important management tasks, particularly access control.
All groups in Identity Management are essentially static groups, meaning that the members of the group are manually and explicitly added to the group. Tangentially, IPA allows nested groups, where a group is a member of another group. In that case, all of the group members of the member group automatically belong to the parent group, as well.
Because groups are easy to create, it is possible to be very flexible in what groups to create and how they are organized. Groups can be defined around organizational divisions like departments, physical locations, or IPA or infrastructure usage guidelines for access controls.
6.9.1. Creating Host Groups
6.9.1.1. Creating Host Groups from the Web UI
Open the Identity tab, and select the Host Groups subtab.
Click the Add link at the top of the groups list.
Enter the name and a description for the group.
Click the Add and Edit button to go immediately to the member selection page.
6.9.1.2. Creating Host Groups from the Command Line
New groups are created using the hostgroup-add command. (This adds only the group; members are added separately.)
Two attributes are always required: the group name and the group description. If those attributes are not given as arguments, then the script prompts for them.
Open the Identity tab, and select the Host Groups subtab.
Click the name of the group to which to add members.
Click the Enroll link at the top of the task area.
Click the checkbox by the names of the hosts to add, and click the right arrows button, >>, to move the hosts to the selection box.
Click the Enroll button.
6.9.2.2. Adding Group Members from the Command Line
Members are added to a host group using the hostgroup-add-member command. This command can add both hosts as group members and other groups as group members.
The syntax of the hostgroup-add-member command requires only the group name and a comma-separated list of hosts to add:
For example, this adds three hosts to the caligroup group:
$ ipa hostgroup-add-member caligroup --hosts=ipaserver.example.com,client1.example.com,client2.example.com
Group name: caligroup
Description: for machines in california
GID: 387115842
Member hosts: ipaserver.example.com,client1.example.com,client2.example.com
-------------------------
Number of members added 3
-------------------------
Likewise, other groups can be added as members, which creates nested groups:
$ ipa hostgroup-add-member caligroup --groups=mountainview,sandiego
Group name: caligroup
Description: for machines in california
GID: 387115842
Member groups: mountainview,sandiego
-------------------------
Number of members added 2
-------------------------
6.10. Troubleshooting Host Problems
6.10.1. Certificate Not Found/Serial Number Not Found Errors
The IPA information is stored in a separate LDAP directory than the certificate information, and these two LDAP databases are replicated separately. It is possible for a replication agreement to be broken for one directory and working for another, which can cause problems with managing clients.
Specifically, if the replication agreement between the two CA databases is broken, then a server may not be able to find certificate information about a valid IPA client, causing certificate errors:
Certificate operation cannot be completed: EXCEPTION (Certificate serial number 0x2d not found)
For example, an IPA server and replica have a function replication agreement between their IPA databases, but the replication agreement between their CA databases is broken. If a host is created on the server, the host entry is replicated over to the replica — but the certificate for that host is not replicated. The replica is aware of the client, but any management operations for that client will fail because the replica doesn't have a copy of its certificate.
6.10.2. Debugging Client Connection Problems
Client connection problems are apparent immediately. This can mean that users cannot log into a machine or attempts to access user and group information fails (for example, getent passwd admin).
Authentication in IPA is managed with the SSSD daemon, which is described in the Red Hat Enterprise Linux Deployment Guide. If there are problems with client authentication, then check the SSSD information.
First, check the SSSD logs in /var/log/sssd/. There is a specific log file for the DNS domain, such as sssd_example.com.log. If there is not enough information in the logs at the default logging level, then increase the log level.
To increase the log level:
Open the sssd.conf file.
vim /etc/sssd/sssd.conf
In the [domain/example.com] section, set debug_level.
debug_level = 9
Restart the sssd daemon.
service sssd restart
Check the /var/log/sssd/sssd_example.com.log file for the debug messages.
Chapter 7. Identity: Integrating with Microsoft Active Directory
Identity Management uses active synchronization to integrate user data stored in an Active Directory domain and the user data stored in the IPA domain. Critical user attributes, including passwords, are synchronized between the services.
The capability to sync Active Directory and IPA domains is inherent when an IPA server is first installed. The synchronization process is configured by creating agreements between the IPA server and the Active Directory domain controller.
This chapter describes how to configure synchronization, how to configure Active Directory for integration with IPA, and how to configure Windows systems within the Active Directory domain to be aware of the IPA domain.
7.1. About Active Directory and Identity Management
Within the IPA domain, information is shared among servers and replicas by copying that information, reliably and predictably, between the data masters (servers) and other data masters. This process is replication.
A similar process can be used to share data between the IPA domain and a Microsoft Active Directory domain. This is synchronization.
7.1.1. About Active Directory Synchronization
Synchronization is the process of copying data back and forth between Active Directory and Identity Management.
Synchronization is defined in an agreement between an IPA server and an Active Directory domain controller. The sync agreement defines all of the information required to identify sync-able user entries (like the subtree to synchronize and requisite object classes in the user entries) as well as defining how account attributes are handled. The sync agreements are created with default values which can be tweaked to meet the needs of a specific domain. When two servers are involved in synchronization, they are called peers.
Synchronization is most commonly bi-directional. Information is sent back and forth between the IPA domain and the Windows domain in a process that is very similar to how IPA servers and replicas share information among themselves. It is possible to configure synchronization — or certain data areas — to only sync one way. That is uni-directional synchronization.
To prevent the risk of data conflicts, synchronization is configured between one Identity Management server and one Active Directory domain controller. The Identity Management server propagates changes back to the IPA domain, while the domain controller propagates changes back to the Windows domain.
There are some key features to IPA synchronization:
A synchronization operation runs every five minutes.
Synchronization can only be configured with one Active Directory domain. Multiple domains are not supported.
Synchronization can only be configured with one Active Directory domain controller. However, it is possible to have a list of failover Active Directory domain controllers. Likewise, there can be a list of failover IPA servers to keep synchronization uninterrupted.
Only user information is synchronized.
Both user attributes and passwords can be synchronized.
While modifications are bi-directional (going both from Active Directory to IPA and from IPA to Active Directory), new accounts are only uni-directional. New accounts created in Active Directory are synchronized over to IPA. However, user accounts created in IPA must also be added in Active Directory before they will be synchronized.
Account lock information is synchronized by default, so a user account which is disabled in one domain is disabled in the other.
Password synchronization changes take effect immediately.
When Active Directory users are synchronized over to IPA, certain attributes (including Kerberos and POSIX attributes) will have IPA attributes are automatically added to the user entries. These attributes are used by IPA within its domain. They are not synchronized back over the corresponding Active Directory user entry.
Some of the data in synchronization can be modified as part of the synchronization process. For examples, certain attributes can be automatically added to Active Directory user accounts when they are synced over to the IPA domain. These attribute changes are defined as part of the synchronization agreement and are described in Section 7.3.3, “Changing the Behavior for Syncing User Account Attributes”.
7.1.2. Attributes Which Are Synchronized
Identity Management synchronizes a subset of user attributes between IPA and Active Directory user entries. Any other attributes present in the entry, either in Identity Management or in Active Directory, are ignored by synchronization.
NOTE
Most POSIX attributes are not synchronized.
Although there are significant schema differences between the Active Directory LDAP schema and the 389 Directory Server LDAP schema used by Identity Management, there are many attributes that are the same. These attributes are simply synchronized between the Active Directory and IPA user entries, with no changes to the attribute name or value format.
Table 7.1. User Schema That Are the Same in Identity Management and Windows Servers
[a]
The cn is treated differently than other synced attributes. It is mapped directly (cn to cn) when syncing from Identity Management to Active Directory. When syncing from Active Directory to Identity Management, however, cn is mapped from the name attribute on Windows to the cn attribute in Identity Management.
Some attributes have different names but still have direct parity between IPA (which uses 389 Directory Server) and Active Directory. These attributes are mapped by the synchronization process.
Table 7.2. User Schema Mapped between Identity Management and Active Directory
[a]
The cn is mapped directly (cn to cn) when syncing from Identity Management to Active Directory. When syncing from Active Directory cn is mapped from the name attribute in Active Directory to the cn attribute in Identity Management.
7.1.3. User Schema Differences between Identity Management and Active Directory
Even though attributes may be successfully synced between Active Directory and IPA, there may still be differences in how Active Directory and Identity Management define the underlying X.500 object classes. This could lead to differences in how the data are handled in the different LDAP services.
This section describes the differences in how Active Directory and Identity Management handle some of the attributes which can be synchronized between the two domains.
7.1.3.1. Values for cn Attributes
In 389 Directory Server, the cn attribute can be multi-valued, while in Active Directory this attribute must have only a single value. When the Identity Management cn attribute is synchronized, then, only one value is sent to the Active Directory peer.
What this means for synchronization is that,potentially, if a cn value is added to an Active Directory entry and that value is not one of the values for cn in Identity Management, then all of the Identity Management cn values are overwritten with the single Active Directory value.
One other important difference is that Active Directory uses the cn attribute attribute as its naming attribute, where Identity Management uses uid. This means that there is the potential to rename the entry entirely (and accidentally) if the cn attribute is edited in the Identity Management. If that cn change is written over to the Active Directory entry, then the entry is renamed, and the new named entry is written back over to Identity Management.
7.1.3.2. Values for street and streetAddress
Active Directory uses the attribute streetAddress for a user or group's postal address; this is the way that 389 Directory Server uses the street attribute. There are two important differences in the way that Active Directory and Identity Management use the streetAddress and street attributes, respectively:
In 389 Directory Server, streetAddress is an alias for street. Active Directory also has the street attribute, but it is a separate attribute that can hold an independent value, not an alias for streetAddress.
Active Directory defines both streetAddress and street as single-valued attributes, while 389 Directory Server defines street as a multi-valued attribute, as specified in RFC 4519.
Because of the different ways that 389 Directory Server and Active Directory handle streetAddress and street attributes, there are two rules to follow when setting address attributes in Active Directory and Identity Management:
The synchronization process maps streetAddress in the Active Directory entry to street in Identity Management. To avoid conflicts, the street attribute should not be used in Active Directory.
Only one Identity Management street attribute value is synced to Active Directory. If the streetAddress attribute is changed in Active Directory and the new value does not already exist in Identity Management, then all street attribute values in Identity Management are replaced with the new, single Active Directory value.
7.1.3.3. Constraints on the initials Attribute
For the initials attribute, Active Directory imposes a maximum length constraint of six characters, but 389 Directory Server does not have a length limit. If an initials attribute longer than six characters is added to Identity Management, the value is trimmed when it is synchronized with the Active Directory entry.
7.2. Setting up Active Directory for Synchronization
Synchronizing user accounts alone is enabled within IPA, so all that is necessary is to set up a sync agreement (Section 7.3.2, “Creating Synchronization Agreements”). On the Windows server, it is necessary to create the user that the IPA server will use to connect to the Active Directory domain.
Grant the sync user account Replicating directory changes rights to the synchronized Active Directory subtree. Replicator rights are required for the sync user to perform synchronization operations.
Add the sync user as a member of the Account Operator and Enterprise Read-Only Domain controller groups. It is not necessary for the user to belong to the full Domain Admin group.
7.3. Managing Synchronization Agreements
7.3.1. Trusting the Active Directory and IPA CA Certificates
Both Active Directory and Identity Management use certificates for server authentication. For the Active Directory and IPA SSL server certificates to be trusted by each other, both servers need to trust the CA certificate for the CA which issued those certificates. This means that the Active Directory CA certificate needs to be imported into the IPA database, and the IPA CA certificate needs to be imported into the Active Directory database.
Export the Active Directory CA certificate.
In My Network Places, open the CA distribution point. For example, the location on Windows Server 2003 is C:\WINDOWS\system32\certsrv\CertEnroll\.
Double-click the security certificate file (.crt file) to display the Certificate dialog box.
On the Details tab, click Copy to File to start the Certificate Export Wizard.
Click Next, and then select Base-64 encoded X.509 (.CER).
Specify a suitable directory and file name for the exported file. Click Next to export the certificate, and then click Finish.
Copy the Active Directory certificate over to the IPA server machine.
Download the IPA server's CA certificate from http://ipa.example.com/ipa/config/ca.crt.
Copy both the Active Directory CA certificate and the IPA CA certificate into the /etc/openldap/cacerts/ directory.
Update the hash symlinks for the certificates.
cacertdir_rehash /etc/openldap/cacerts/
Edit the /etc/openldap/ldap.conf file, and add the information to point to and use the certificates in the /etc/openldap/cacerts/ directory.
Synchronization agreements are created on the IPA server using the ipa-replica-manage connect command because it creates a connection to the Active Directory domain. The options to create the synchronization agreement are listed in Table 7.3, “Synchronization Agreement Options”.
Remove any existing Kerberos credentials on the IPA server.
$ kdestroy
Use the ipa-replica-manage command to create a Windows synchronization agreement. This requires the --winsync option. If passwords will be synchronized as well as user accounts, then also use the --passsync option and set a password to use for Password Sync.
The --binddn and--bindpwd options give the username and password of the system account on the Active Directory server that IPA will use to connect to the Active Directory server.
Gives the full user DN of the synchronization identity. This is the user DN that the IPA LDAP server uses to bind to Active Directory. This user must exist in the Active Directory domain and must have replicator, read, search, and write permissions on the Active Directory subtree.
--bindpw
Gives the password for the sync user.
--passsync
Gives the password for the Windows user account which is involved in synchronization.
Gives the DN of the Windows subtree containing the users to synchronize. The default value is cn=Users,$SUFFIX.
AD_server_name
Gives the hostname of the Active Directory domain controller.
7.3.3. Changing the Behavior for Syncing User Account Attributes
When the sync agreement is created, it has certain default behaviors defined for how the synchronization process handled the user account attributes during synchronization. The types of behaviors are things like how to handle lockout attributes or how to handle different DN formats. This behavior can be changed by editing the synchronization agreement. The list of attribute-related parameters are in Table 7.4, “Synced Attribute Settings”.
The sync agreement exists as a special plug-in entry in the LDAP server and each attribute behavior is set through an LDAP attribute. To change the sync behavior, use the ldapmodify command to modify the LDAP server entry directly.
For example, account lockout attributes are synchronized between IPA and Active Directory by default, but this can be disabled by editing the ipaWinSyncAcctDisable attribute. (Changing this means that if an account is disabled in Active Directory, it is still active in IPA and vice versa.)
Sets the search filter to use to find the entry which contains the list of object classes to add to new user entries.
The default is (cn=ipaConfig).
ipaWinSyncNewUserOCAttr
Sets the attribute in the configuration entry which actually contains the list of object classes to add to new user entries.
The default is ipauserobjectclasses.
ipaWinSyncHomeDirAttr
Identifies which attribute in the entry contains the default location of the POSIX home directory.
The default is ipaHomesRootDir.
ipaWinSyncUserAttr
Sets an additional attribute with a specific value to add to Active Directory users when they are synced over from the Active Directory domain. If the attribute is multi-valued, then it can be set multiple times, and the sync process adds all of the values to the entry.
NOTE
This only sets the attribute value if the entry does not already have that attribute present. If the attribute is present, then the entry's value is used when the Active Directory entry is synced over.
ipaWinSyncUserAttr: attributeName attributeValue
ipaWinSyncUserFlatten
Sets whether to normalize the DN of Active Directory entries to conform with the IPA directory structure. In IPA, all users are stored under the cn=users,cn=accounts,$SUFFIX entry, but Active Directory can have more branches in its directory, which can result in DNs like cn=John Smith,ou=Development,ou=Engineering,cn=users,dc=example,dc=com. Flattening the DN discards any additional intervening organizational units in the Active Directory DN and creating a simple DN on the IPA side.
Any ou attributes are stored in the IPA user entry.
true | false
ipaWinSyncForceSync
Sets whether to check existing IPA users which match an existing Active Directory user should be automatically edited so they can be synchronized. If an IPA user account has a uid parameter which is identical to the samAccountName in an existing Active Directory user, then that account is not synced by default. This attribute tells the sync service to add the ntUser and ntUserDomainId to the IPA user entries automatically, which allows them to be synchronized.
true | false
User Account Lock Parameters
ipaWinSyncAcctDisable
Sets which way to synchronize account lockout attributes. It is possible to control which account lockout settings are in effect. For example, to_ad means that when account lockout attribute is set in IPA, its value is synced over to Active Directory and overrides the local Active Directory value. By default, account lockout attributes are synced from both domains.
both (default)
to_ad
to_ds
none
ipaWinSyncInactivatedFilter
Sets the search filter to use to find the DN of the group used to hold inactivated (disabled) users. This does not need to be changed in most deployments.
The default is (&(cn=inactivated)(objectclass=groupOfNames)).
ipaWinSyncActivatedFilter
Sets the search filter to use to find the DN of the group used to hold activate users. This does not need to be changed in most deployments.
The default is (&(cn=activated)(objectclass=groupOfNames)).
Group Parameters
ipaWinSyncDefaultGroupAttr
Sets the attribute in the new user account to reference to see what the default group for the user is. The group name in the entry is then used to find the gidNumber for the user account.
The default is ipaDefaultPrimaryGroup.
ipaWinSyncDefaultGroupFilter
Sets the search filter to map the group name to the POSIX gidNumber.
The default is (&(gidNumber=*)(objectclass=posixGroup)(cn=groupAttr_value)).
Realm Parameters
ipaWinSyncRealmAttr
Sets the attribute which contains the realm name in the realm entry.
The default is cn.
ipaWinSyncRealmFilter
Sets the search filter to use to find the entry which contains the IPA realm name.
The default is (objectclass=krbRealmContainer).
7.3.4. Changing the Synchronized Windows Subtree
Creating a synchronization agreement automatically sets the two subtrees to use as the synchronized user database. In IPA, the default is cn=users,cn=accounts,$SUFFIX, and for Active Directory, the default is CN=Users,$SUFFIX.
The value for the Active Directory subtree can be set to a non-default value when the sync agreement is created by using the --win-subtree option. After the agreement is created, the Active Directory subtree can be changed by using the ldapmodify command to edit the nsds7WindowsReplicaSubtree value in the sync agreement entry.
Synchronization can be stopped by deleting the sync agreement which disconnects the IPA and Active Directory servers. In the inverse of creating a sync agreement, deleting a sync agreement uses the ipa-replica-manage disconnect command and then the hostname of the Active Directory server.
This can occur if the wrong Active Directory CA certificate was specified when the agreement was created. This creates duplicate certificates in the IPA LDAP database (in the /etc/dirsrv/slapd-DOMAIN/ directory) with the name Imported CA. This can be checked using certutil:
$ certutil -L -d /etc/dirsrv/slapd-DOMAIN/
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
CA certificate CTu,u,Cu
Imported CA CT,,C
Server-Cert u,u,u
Imported CA CT,,C
To resolve this issue, clear the certificate database:
This deletes the CA certificate from the LDAP database.
There are errors saying passwords aren't being synced because it says the entry exists
For some entries in the user database, there may be an informational error message that the password is not being reset because the entry already exists:
"Windows PassSync entry exists, not resetting password"
This is not an error. This message occurs when an exempt user, the Password Sync user, it not being changed. The Password Sync user is the operational user which is used by the service to change the passwords in IPA.
7.4. Managing Password Synchronization
Password synchronization is configured separately from Windows Synchronization.
7.4.1. Setting up the Windows Server for Password Synchronization
To synchronize passwords requires that Active Directory be running in SSL and that the Password Sync Service be installed on each Active Directory domain controller. The Password Sync Service records password changes and synchronizes them, over a secure connection, to the IPA entry.
TIP
Install the Microsoft Certificate System in Enterprise Root Mode. Active Directory will then automatically enroll to retrieve its SSL server certificate.
Make sure that the Active Directory password complexity policies are enabled so that the Password Sync service will run.
Run secpol.msc from the command line.
Select Security Settings.
Open Account Policies, and then open Password Policy.
Enable the Password must meet complexity requirements option and save.
If SSL is not already enabled, set up SSL on the Active Directory server. Setting up LDAPS is explained in more detail in the Microsoft knowledgebase at http://support.microsoft.com/kb/321051.
Install a certificate authority in the Windows Components section in Add/Remove Programs.
Select the Enterprise Root CA option.
Reboot the Active Directory server. If IIS web services are running, the CA certificate can be accessed by opening http://servername/certsrv.
Set up the Active Directory server to use the SSL server certificate.
Create a certificate request .inf, using the fully-qualified domain name of the Active Directory as the certificate subject. For example:
Submit the request to the Active Directory CA. For example:
certreq -submit request.req certnew.cer
NOTE
If the command-line tool returns an error message, then use the Web browser to access the CA and submit the certificate request. If IIS is running, then the CA URL is http://servername/certsrv.
Accept the certificate request. For example:
certreq -accept certnew.cer
Make sure that the server certificate is present on the Active Directory server.
In the File menu, click Add/Remove, then click Certificates and Personal>Certificates.
Import the CA certificate from Directory Server into Active Directory. Click Trusted Root CA, then Import, and browse for the Directory Server CA certificate.
Reboot the domain controller.
7.4.2. Setting up Password Synchronization
Install the Password Sync Service on every domain controller in the Active Directory domain in order to synchronize Windows passwords.
Download the PassSync.msi file from the Red Hat Enterprise Linux channels, and save it to the Active Directory machine.
NOTE
There are two PassSync packages available, one for 32-bit Windows servers and one for 64-bit. Make sure to select the appropriate packages for your Windows platform.
Double-click the PassSync.msi file to install it.
The Password Sync Setup window appears. Hit Next to begin installing.
Fill in the information to establish the connection to the IPA server.
The IPA server connection information, including the hostname and secure port number
The username of the system user which Active Directory will use to connect to the IPA machine; this is always uid=passsync,cn=systemaccounts,cn=etc,dc=example,dc=com.
The password set in the --passsync option when the sync agreement was created
The search base for the people subtree, such as ou=People,dc=example,dc=com
Hit Next, then Finish to install Password Sync.
Import the IPA server's CA certificate into the Active Directory certificate store.
Download the IPA server's CA certificate from http://ipa.example.com/ipa/config/ca.crt.
Copy the IPA CA certificate to the Active Directory server.
Install the IPA CA certificate in the Password Sync database. For example:
cd "C:\Program Files\389 Directory Password Synchronization"
certutil.exe -d . -A -n "IPA.EXAMPLE.COM IPA CA" -t CT,, -a -i ipaca.crt
Reboot the Windows machine to start Password Sync.
NOTE
The Windows machine must be rebooted. Without the rebooting, PasswordHook.dll is not enabled, and password synchronization will not function.
The first attempt to synchronize passwords, which happened when the Password Sync application is installed, will always fail because of the SSL connection between the Directory Server and Active Directory sync peers. The tools to create the certificate and key databases is installed with the .msi.
7.4.3. Exempting Active Directory Users from Password Synchronization
The passwords in password change operations are still subject to the password policy settings, such as password expiration times. For example, in IPA every password change requires an immediate password reset. While normal user passwords need to be subject to password policies, administrative passwords should be exempt from any password rules. A list of user DNs can be set in the password synchronization configuration that are exempted from the password policy.
NOTE
The Directory Manager password is always exempt from password policy.
Edit the password synchronization entry, cn=ipa_pwd_extop,cn=plugins,cn=config, and add the passSyncManagersDNs attribute with the name of the user. This attribute is multi-valued. For example:
If the IPA server was installed with DNS configured, then all of the DNS entries for the domain — host entries, locations, records — can be managed using the IPA tools.
8.1. About DNS in IPA
DNS is one of the services that can be configured and maintained by the IPA domain. DNS is critical to the performance of the IPA domain; DNS is used for the Kerberos services and SSL connections for all servers and clients and for connections to domain services like LDAP.
While IPA can use an external DNS service, there is a lot more flexibility and control over IPA — DNS interactions when the DNS service is configured within the domain. For example, DNS records and zones can be managed within the domain using IPA tools, and clients can update their own DNS records dynamically. When a host is added to IPA, a DNS record is automatically created in IPA's DNS service for that host machine.
IPA stores all DNS information as LDAP entries. Every resource record for each machine is stored for the domain. For example, the client1 resource has three IPv4 (A) records and one IPv6 (AAAA) record:
The schema used to define the DNS entries is in the /usr/share/ipa/60basev2.ldif schema file[1].
The BIND service communicates with the Directory Server using the system bind-dyndb-ldap plug-in. When Identity Management is configured to manage DNS (Section 8.2, “Configuring DNS in Identity Management”), IPA creates a dynamic-db configuration section in the /etc/named.conf file for the BIND service. This configures the bind-dyndb-ldap plug-in for the BIND (named) service.
When this plug-in is properly configured, it delivers the DNS records from the Directory Server to the named service. The configuration can be changed to adapt the behavior of the plug-in and, therefore, the LDAP-BIND interactions.
The ipa command has several subcommands to manage the DNS service.
Table 8.1. DNS Management Tools
Command
Description
dns-resolve
Resolves a hostname to see if it exists within the IPA domain.
dnsrecord-add, dnsrecord-mod, and dnsrecord-del
Adds, edits, and deletes DNS records.
dnsrecord-find and dnsrecord-show
Finds and displays DNS records.
dnszone-add and dnszone-del
Adds and deletes DNS SOA records.
dnszone-enable and dnszone-disable
Enables and disables DNS zones. These tools control whether a DNS zone is active and available without deleting the configuration entries in the LDAP directory.
dnszone-find and dnszone-show
Finds and displays DNS zone configuration.
8.2. Configuring DNS in Identity Management
DNS can be configured as part of the IPA server installation, simply by using the --setup-dns option. If DNS is not configured then, it can be configured later using the ipa-dns-install command. For example:
-p gives the password for the Directory Manager user in the 389 Directory Server. All of the DNS entries are stored in the LDAP directory, so this directory must be accessed to add the DNS configuration.
--ip-address gives the IP address for the master DNS server.
--no-forwarders means that there are no forwarders used with the DNS service, only root servers. Alternatively, a comma-separated list of forwarders can be given, using the --forwarder option.
Reverse DNS is configured automatically. It is possible to disable reverse DNS by using the --no-reverse option.
The IPA server can actively check to see when new DNS zones are added and to update its DNS server accordingly. If no value is explicitly given, the zone refresh period is 30 seconds. The refresh interval can be set to another value using the --zone-refresh option, which sets the polling interval in seconds.
8.3. Configuring the bind-dyndb-ldap Plug-in
The bind-dyndb-ldap system plug-in contains a DNS record cache for zones and a history of successful DNS resolutions. Maintaining the cache improves lookup performance in the Directory Server because it is not necessary to query the directory services every time there is a new DNS request.
When this plug-in is installed and IPA is configured to manage DNS, then a new configuration section is added to the plug-in configuration.
This configuration uses implied default values for other plug-in behaviors, like how long it maintains the cache. The assumed, default configuration can be changed by adding arguments to the dynamic-db "ipa" entry.
Both cache updates and new zone detection can be forced by reloading the name server:
# rndc reload
To improve DNS performance, it may be necessary to change the cache setting. By default, DNS records are kept in cache and considered valid for 120 seconds. This means that if a DNS record changes, it will not (necessarily) be propagated to the name server for up to 120 seconds. If the Directory Server has a high traffic volume or if records do not change frequently, then the cache time can be increased to improve performance by adding the cache_ttl parameter.
dynamic-db "ipa" {
...
arg "cache_ttl 1800";
};
The other configurable behavior defines how the BIND service receives updates about new zones. The DNS service receives its information through the bind-dyndb-ldap plug-in. The plug-in resolves only zones that were configured and enabled in the Directory Server when the name server started. When the name service restarts, the plug-in reloads its configuration and identifies any new zones. However, the plug-in can be used to search for zone changes actively either by refreshing the zone data on a schedule.
Periodically checking for new zones is the same as refreshing the zone configuration. This is set in the zone_refresh argument.
Checks the DNS configuration in the Directory Server for new zones.
120 (seconds); this is defined in the bind-dyndb-ldap plug-in.
zone_refresh
Checks frequency, in seconds, that the server checks the DNS configuration in the Directory Server for new zones.
60 (seconds); this is configured by ipa-dns-install. If this is not set in the /etc/named.conf file, the bind-dyndb-ldap plug-in sets this value to zero (0), which disables zone refresh.
8.4. Changing Recursive Queries Against Forwarders
The ipa-client-install script sets a configuration statement in the /etc/named.conf file that allows name resolution against hosts that are outside the IPA DNS domain. (This requires that the IPA server be set up with DNS configured and with forwarders configured.) What this means is that any host is permitted to issue recursive queries against configured forwarders.
This behavior can be changed by changed the allow-recursion statement.
Open the /etc/named.conf file.
Reset the allow-recursion statement. This is set to any by default, which allows all hosts to resolve names against all forwarders.
The name server documentation has more details on editing configuration statements.
8.5. Adding DNS Zones
8.5.1. Adding DNS Zones from the Web UI
Open the Identity tab, and select the DNS subtab.
Click the Add link at the top of the list of DNS zones.
Fill in the information about the new DNS zone. The Zone Name is required; this is the actual domain name. The other information about the administrator email and the authoritative name server are optional.
The ipa dnszone-add command add a new zone to the DNS domain. At a minimum, this requires the name of the new subdomain:
$ ipa dnszone-add domainName
If the name is not given, the script prompts for it. Other command-line options can also be passed with the ipa dnszone-add command; these are described in .
To make new zone records immediately resolvable without restarting the name service, enable persistent searches with the named service or configure the BIND service to poll the Directory Server automatically for zone changes. See Section 8.3, “Configuring the bind-dyndb-ldap Plug-in”.
8.6. Modifying DNS Zones
A zone is created with a certain amount of configuration, set to default values.
All of the possible zone settings are listed in Table 8.3, “Zone Attributes”. Along with setting the actual information for the zone, the settings define how the DNS server handles the start of authority (SOA) record entries and how it updates its records from the DNS name server.
Table 8.3. Zone Attributes
Attribute
Command-Line Option
Description
Zone name
--name
Sets the name of the zone.
Authoritative nameserver
--name-server
Sets the fully-qualified domain name of the DNS name server.
Administrator e-mail address
--admin-email
Sets the email address to use for the zone administrator. This defaults to the root account on the host.
SOA serial
--serial
Sets a version number for the SOA record file.
SOA refresh
--refresh
Sets the interval, in seconds, for a secondary DNS server to wait before requesting updates from the primary DNS server.
SOA retry
--retry
Sets the time, in seconds, to wait before retrying a failed refresh operation.
SOA expire
--expire
Sets the time, in seconds, that a secondary DNS server will try to perform a refresh update before ending the operation attempt.
SOA minimum
--minimum
Sets the minimum amount of time, in seconds, that data are kept in cache.
SOA time to live
--ttl
Sets the maximum time, in seconds, that information is kept in the data cache.
SOA class
--class
Sets the type of record. This is almost always IN, which stands for Internet.
BIND update policy
--update-policy
Sets the permissions allowed to clients in the DNS zone.
Enables dynamic updates to DNS records for clients.
Name server
--ip-address
Adds the DNS name server by its IP address.
8.6.1. Editing the Zone Configuration in the Web UI
Open the Identity tab, and select the DNS subtab.
Click the name of the DNS zone to edit.
Open the Settings tab.
Change any of the DNS zone settings. The full list of attributes is described in Table 8.3, “Zone Attributes”. There are some common attributes to change:
Authoritative name server, the fully-qualified domain name of the DNS name server.
Dynamic update, to enable dynamic updates to DNS records for clients.
IPORTANT
Dynamic updates are enabled by default when a zone is created. This allows IPA clients to update their own DNS entries.
However, when a DNS zone entry is edited, the Dynamic update is set to false. This must be manually set to true every time the zone is modified to continue to allow clients to update their DNS entries.
SOA refresh, the interval, in seconds, for a secondary DNS server to wait before requesting updates from the primary DNS server.
Click the Update link at the top of the settings page.
8.6.2. Editing the Zone Configuration in the Command Line
The zone can be created with additional attributes and values different from the default by passing additional options with the dnszone-add command. Likewise, attributes can be added or modified in the zone entry by passing the same attribute options with the dnszone-mod command. These are listed in Table 8.3, “Zone Attributes”.
If an attribute does not exist in the DNS zone entry, than the dnszone-mod command adds the attribute. If the attribute exists, then it overwrites the current value with the specified value.
For example, to set a time to live for SOA records:
Dynamic updates are enabled by default when a zone is created. This allows IPA clients to update their own DNS entries.
However, when a DNS zone entry is edited, the dynamic update setting is set to false. This --allow-dynupdate option must be specified every time the zone is modified to continue to allow clients to update their DNS entries.
Dynamic DNS updates are not enabled by default for new DNS zones in IPA. If dynamic updates are not allowed, then it may not be possible for the ipa-client-install script to join a client to the domain because it cannot add a DNS record pointing to the new client.
8.7.1. Enabling Dynamic DNS Updates in the Web UI
Open the Identity tab, and select the DNS subtab.
Click the name of the DNS zone to edit.
Open the Settings tab.
Scroll down to the Dynamic update field, and set the value to TRUE.
Click the Update link at the top of the settings page.
8.7.2. Enabling Dynamic DNS Updates in the Command Line
To allow dynamic updates to the DNS zones, set the --allow-dynupdate option.
Active zones can have clients added to them, are available for lookups, and are used by IPA services like Kerberos. Deleting a DNS zone removes the zone entry and all the associated configuration.
There can be situations when it is necessary to remove a zone from activity without permanently removing the zone. This is done by disabling the zone.
8.8.1. Disabling Zones in the Web UI
Open the Identity tab, and select the DNS subtab.
Click the name of the DNS zone to edit.
Open the Settings tab.
Scroll down to the Active zone field. To disable the zone, set the value to FALSE.
Click the Update link at the top of the settings page.
8.8.2. Disabling Zones in the Command Line
Disabling a zone is done by using the dnszone-disable command.
For example:
$ ipa dnszone-disable server.example.com
When the zone needs to be brought back online, it can be re-enabled using the dnszone-enable command.
8.9.1. Adding DNS Resource Records from the Web UI
Open the Identity tab, and select the DNS subtab.
Click the name of the DNS zone to which to add records.
In the DNS Resource Records tab, click the Add link.
Select the type of record to create in the Record Type drop-down menu. The type of record affects the information that is required in the Record Name and Data fields.
Although IPA supports many different record types, there are four frequent record types that are used:
IPv4. This is a basic map for a hostname and an ordinary IPv4 address. The Record Name is a hostname, such as www. The Data is a standard IPv4 address, such as 192.168.1.2.
IPv6. This is a basic map for a hostname and an IPv6 address. The Record Name is a hostname, such as www. The Data is a standard hexadecimal IPv6 address, such as fe80::20c:29ff:fe02:a1b3.
More information about AAAA records is in RFC 3596.
SRV. Service (SRV) resource records map service names to the DNS name of the server that is providing that particular service. The Record Name has the format _service._protocol, such as _ldap._tcp. The Data value sets the priority, weight, port number, and hostname for the target service. For example, 0 100 389 ldap.example.com.
More information about SRV records is in RFC 2782.
PTR. A pointer record type (PTR) record adds a reverse DNS record, which maps an IP address to a domain name. In this case, the Record Name is the record ID number for the DNS entry of the resource and the Data value is the hostname with a terminal period, such as server.example.com..
More information about PTR records is in RFC 1035.
Click the Add button to save the new resource record.
8.9.2. Adding DNS Resource Records from the Command Line
The ipa dnsrecord-add command adds records to DNS zones, based on the type. Adding a record has the same basic command format:
$ ipa dnsrecord-add domainName recordName --recordType--rec record
The recordType is an identifier, such as a for A or IPv4 records. The record value is the actual entry, which has a value corresponding to the record type.
NOTE
The ipa dnsrecord-add command only creates forward entries, not reverse entries.
Example 8.3. IPv4 Record
Type A resource records map hostnames to IPv4 addresses. The record value for these commands, then, is a standard IPv4 address. The URL label is usually www.
Type AAAA resource records (quad-A records) map hostnames to IPv6 addresses. The record value for these commands is an IPv6 address. As with Type A records, the URL label is usually www.
This creates the record www.example.com with the IP address fe80::20c:29ff:fe02:a1b3. More information about AAAA records is in RFC 3596.
Example 8.5. SRV Record
Service (SRV) resource records map service names to the DNS name of the server that is providing that particular service. For example, this record type can map a service like an LDAP directory to the DNS server which manages it.
As with Type A and Type AAAA records, SRV records specify a way to connect to and identify the service, but the record format is different.
The recordName identifies the service type and the connection protocol, in the format _service._protocol.
The record information has the format "priority weight port target".
More information about SRV records is in RFC 2782.
Example 8.6. PTR Record
A pointer record type (PTR) record adds a reverse DNS record, which maps an IP address to a domain name, rather than the other way around.
All reverse DNS lookups for IPv4 addresses use reverse entries that are defined in the in-addr.arpa. domain. The reverse address, in human-readable form, is the exact reverse of the regular IP address, with the in-addr.arpa. domain appended to it. For example, for the IP address 192.0.1.2, the reverse address is 2.1.0.192.in-addr.arpa.
When adding the reverse DNS record, the format of the dnsrecord-add command is also reverse, compared to the usage for adding regular DNS entries:
More information about PTR records is in RFC 1035.
NOTE
Reverse zones can also be configured for IPv6 addresses, with zones in the .ip6.arpa. domain. For more information about IPv6 reverse zones, see RFC 3596.
8.10. Deleting Records from DNS Zones
8.10.1. Deleting Records with the Web UI
To delete only a specific record from the resource record:
Open the Identity tab, and select the DNS subtab.
Click the name of the DNS zone.
In the DNS Resource Records tab, click the name of the resource record.
Click the Delete link by the name of the record type to delete. This deletes only that record type while leaving the other configuration intact.
Alternatively, delete all of the records for the resource in the zone:
Open the Identity tab, and select the DNS subtab.
Click the name of the DNS zone.
In the DNS Resource Records tab, select the checkbox by the name of the resource record to delete. This deletes the entire record.
Click the Delete link at the top of the zone records page.
8.10.2. Deleting Records with the Command Line
Records are removed from the zone using the ipa dnsrecord-del command. As with adding records, records are deleted using an option that specifies the type of record (--recordType-rec) and the record value.
If you run the ipa dnsrecord-del command without any options, the command prompts for information about the record to delete.
Alternatively, using the --del-all option removes all associated records for the zone.
8.11. Resolving Hostnames in the IPA Domain
It is possible to check the DNS entries for IPA domain members using the dns-resolve command. If the record exists and is properly formatted in the DNS configuration, then the command returns the DNS record. If not, the command returns an error, that the hostname is not recognized within the DNS service.
$ipa dns-resolve server1.example.com
This can be helpful with troubleshooting connection problems between servers, clients, and services.
8.12. Changing Load Balancing for IPA Servers and Replicas
As Section 1.3.1, “About IPA Servers and Replicas” touches on, IPA servers and replicas in the domain automatically share the load among instances to maintain performance. The load balancing is defined first by the priority set for the server or replica in its SRV entry, and then by the weight of that instance for servers/replicas with the same priority. Clients contact servers/replicas with the highest priority and then work their way down.
Load balancing is done automatically by servers, replicas, and clients. The configuration used for load balancing can be altered by changing the priority and the weight given to a server or replica.
(All replicas are initially created with the same priority.)
For example, this gives server1 a higher priority than server 2, meaning it will be contacted first:
Automount is a way of making directories on different servers available, automatically, when requested by a user. This works exceptionally well within an IPA domain since it allows directories on clients within the domain to be shared easily. This is especially important with user home directories (Section 5.1, “Setting up User Home Directories”).
In IPA, automount works with the internal LDAP directory and, if it is configured, DNS services.
9.1. About Automount and IPA
Automount is a way to manage, organize, and access directories across multiple systems. Automount automatically mounts a directory whenever that resource is requested. Automount also provides a coherent structure to the way that these directories are organized. Every single directory, or mount point is called a key. Multiple keys that are grouped together are a map, and maps are associated according to their physical or conceptual location.
The base configuration file for autofs is the auto.master file in the /etc/ directory. There can be multiple auto.master configuration files in separate server locations, if necessary.
When autofs is configured on a server and that server is a client in an IPA domain, then all of the configuration information for automount is stored in the IPA directory. Rather than being stored in separate text files, the autofs configuration — maps, locations, and keys — are stored as LDAP entries. For example, the default map file, auto.master, is stored as:
dn: automountmapname=auto.master,cn=default,cn=automount,dc=example,dc=com
objectClass: automountMap
objectClass: top
automountMapName: auto.master
IMPORTANT
Identity Management does not set up or configure autofs. That must be done separately. Identity Management works with an existing autofs deployment.
Each new location is added as a container entry under cn=automount,dc=example,dc=com, and each map and each key are stored beneath that location.
As with other IPA domain services, automount works with IPA natively. The automount configuration can be managed by IPA tools:
Locations, using ipa automountlocation* commands
Both direct and indirect maps, using ipa automountmap* commands
Identity Management does not set up or configure autofs. That must be done separately, as described in these procedures. Identity Management works with an existing autofs deployment.
TIP
Test that the /home directory can be mounted from the command line successfully before changing the automount configuration. Making sure that NFS is already working properly makes it easier to troubleshoot any potential IPA automount configuration errors later.
9.2.1. Configuring autofs on Red Hat Enterprise Linux
Edit the /etc/sysconfig/autofs file to specify the schema attributes that autofs searches for:
#
# Other common LDAP naming
#
MAP_OBJECT_CLASS="automountMap"
ENTRY_OBJECT_CLASS="automount"
MAP_ATTRIBUTE="automountMapName"
ENTRY_ATTRIBUTE="automountKey"
VALUE_ATTRIBUTE="automountInformation"
Specify the LDAP configuration. There are two ways to do this. The simplest is to let the automount service discover the LDAP server and locations on its own:
LDAP_URI="ldap:///dc=example,dc=com"
Alternatively, explicitly set which LDAP server to use and the base DN for LDAP searches:
The default value for location is default. If additional locations are added (Section 9.4, “Configuring Locations”), then the client can be pointed to use those locations, instead.
Edit the /etc/autofs_ldap_auth.conf file so that autofs allows client authentication with the IPA LDAP server. Change authrequired to yes and set the principal to the Kerberos host principal:
If necessary, run klist -k to get the exact host principal information.
Check the /etc/nssswitch.conf file, so that LDAP is listed as a source for automount configuration:
automount: files ldap
Restart autofs:
# service autofs restart
Test the configuration by listing a user's /home directory:
# ls /home/userName
If this does not mount the remote file system, check the /var/log/messages file for errors. If necessary, increase the debug level in the /etc/sysconfig/autofs file by setting the LOGGING parameter to debug.
TIP
If there are problems with automount, then cross-reference the automount attempts with the 389 Directory Server access logs for the IPA instance, which will show the attempted access, user, and search base.
It is also simple to run automount in the foreground with debug logging on.
automount -f -d
This prints the debug log information directly, without having to cross-check the LDAP access log with automount's log.
9.2.2. Configuring Automount on Solaris
NOTE
Solaris uses a different schema for autofs configuration than the schema used by Identity Management. Identity Management uses the 2307bis-style automount schema which is defined for 389 Directory Server (and used in IPA's internal Directory Server instance).
If the NFS server is running on Red Hat Enterprise Linux, specify on the Solaris machine that NFSv3 is the maximum supported version. Edit the /etc/default/nfs file and set the following parameter:
NFS_CLIENT_VERSMAX=3
Use the ldapclient command to configure the host to use LDAP:
ldapclient -v manual -a authenticationMethod=none
-a defaultSearchBase=dc=example,dc=com
-a defaultServerList=ipa.example.com
-a serviceSearchDescriptor=passwd:cn=users,cn=accounts,dc=example,dc=com
-a serviceSearchDescriptor=group:cn=groups,cn=compat,dc=example,dc=com
-a serviceSearchDescriptor=auto_master:automountMapName=auto.master,cn=location,cn=automount,dc=example,dc=com?one
-a serviceSearchDescriptor=auto_home:automountMapName=auto_home,cn=location,cn=automount,dc=example,dc=com?one
-a objectClassMap=shadow:shadowAccount=posixAccount
-a searchTimelimit=15
-a bindTimeLimit=5
Edit the krb5.conf file to allow weak crypto. This is required for every NFS client if any client in the domain will use older encryption options like DES.
# vim /etc/krb5.conf
allow_weak_crypto = true
Edit the NFS server configuration to use NFSv4 security.
# vim /etc/default/nfs-kernel-server
NEED_SVCGSSD=yes
Edit the NFS common configuration to enable the domain and UID/GID mapping.
# vim /etc/default/nfs-common
NEED_IDMAPD=yes
NEED_GSSD=yes
Configure the NFS domain.
# vim /etc/idmapd.conf
Domain = example.com
Configure the mount locations in the /etc/fstab. For example, using the /export directory:
As with the NFS server, if the NFS client machine has not been added as a client to the IPA domain, then create the host entry. See Section 6.2, “Adding Host Entries”.
Edit the krb5.conf file to allow weak crypto. This is required for every client if any client in the domain will use older encryption options like DES.
# vim /etc/krb5.conf
allow_weak_crypto = true
Edit the NFS common configuration to enable the domain and UID/GID mapping.
# vim /etc/default/nfs-common
NEED_IDMAPD=yes
NEED_GSSD=yes
Edit the NFS common configuration to enable the domain and UID/GID mapping.
# vim /etc/default/nfs-common
NEED_IDMAPD=yes
NEED_GSSD=yes
Configure the NFS domain. The idmapd.conf must be the same on the NFS client as it is on the NFS server.
# vim /etc/idmapd.conf
Domain = example.com
Start the GSS and name mapping daemons.
# service gssd start
# service idmapd start
Mount the directory.
# echo "$NFSSERVER:/this /mnt/this nfs4 sec=krb5i,rw,proto=tcp,port=2049" >>/etc/fstab
# mount -av
9.4. Configuring Locations
A location is a set of maps, which are all stored in auto.master, and a location can store multiple maps. The location entry only works as a container for map entries; it is not an automount configuration in and of itself.
IMPORTANT
Identity Management does not set up or configure autofs. That must be done separately. Identity Management works with an existing autofs deployment.
9.4.1. Configuring Locations through the Web UI
Click the Policy tab.
Click the Automount subtab.
Click the Add link at the top of the list of automount locations.
When a new location is created, two maps are automatically created for it, auto.master and auto.direct. auto.master is the root map for all automount maps for the location. auto.direct is the default map for direct mounts and is mounted on /-.
To view all of the maps configured for a location as if they were deployed on a filesystem, use the automountlocation-tofiles command:
Configuring maps not only creates the maps, it associates mount points through the keys and it assigns mount options that should be used when the directory is accessed. IPA supports both direct and indirect maps.
NOTE
Different clients can use different map sets. Map sets use a tree structure, so maps cannot be shared between locations.
IMPORTANT
Identity Management does not set up or configure autofs. That must be done separately. Identity Management works with an existing autofs deployment.
9.5.1. Configuring Direct Maps
Direct maps define exact locations, meaning absolute paths, to the file mount. In the location entry, a direct map is identified by the preceding forward slash:
Click name of the automount location to which to add the map.
In the Automount Maps tab, click the + Add link to create a new map.
In pop-up window, select the Direct radio button and enter the name of the new map.
In the Automount Keys tab, click the + Add link to create a new key for the map.
Enter the mount point. The key defines the actual mount point in the key name. The Info field sets the network location of the directory, as well as any mount options to use.
Click the Add button to save the new key.
9.5.1.2. Configuring Direct Maps from the Command Line
The key defines the actual mount point (in the key name) and any options. A map is a direct or indirect map based on the format of its key.
Each location is created with an auto.direct item. The simplest configuration is to define a direct mapping by adding an automount key the existing direct map entry. It is also possible to create different direct map entries.
Add the key for the direct map to the location's auto.direct file. The --key option identifies the mount point, and --info gives the network location of the directory, as well as any mount options to use. For example:
On Solaris, add the direct map and key using the ldapclient command to add the LDAP entry directly:
ldapclient -a serviceSearchDescriptor=auto_direct:automountMapName=auto.direct,cn=location,cn=automount,dc=example,dc=com?one
9.5.2. Configuring Indirect Maps
An indirect map essentially specifies a relative path for maps. A parent entry sets the base directory for all of the indirect maps. The indirect map key sets a sub directory; whenever the indirect map location is loaded, the key is appended to that base directory. For example, if the base directory is /docs and the key is man, then the map is /docs/man.
9.5.2.1. Configuring Indirect Maps from the Web UI
Click the Policy tab.
Click the Automount subtab.
Click name of the automount location to which to add the map.
In the Automount Maps tab, click the + Add link to create a new map.
In pop-up window, select the Indirect radio button and enter the required information for the indirect map:
The name of the new map
The mount point. The Mount field sets the base directory to use for all the indirect map keys.
Optionally, a parent map. The default parent is auto.master, but if another map exists which should be used, that can be specified in the Parent Map field.
Click the Add button to save the new key.
9.5.2.2. Configuring Indirect Maps from the Command Line
The primary difference between a direct map and an indirect map is that there is no forward slash in front of an indirect key.
---------------------------
/etc/auto.share:
man ipa.example.com:/docs/man
---------------------------
Create an indirect map to set the base entry using the automountmap-add-indirect command. The --mount option sets the base directory to use for all the indirect map keys. The default parent entry is auto.master, but if another map exists which should be used, that can be specified using the --parentmap option.
The only required information is the IPA automount location and the full path and name of the map file. The --continuous option tells the automountlocation-import command to continue through the map file, even if the command encounters errors.
Network information service (NIS) is one of the most common ways to manage identities and authentication on Unix networks. It is simple and easy to use, but it also has inherent security risks and a lack of flexibility that can make administering NIS domains problematic.
Identity Management supplies a way to integrate netgroups and other NIS data into the IPA domain, which incorporates the stronger security structure of IPA over the NIS configuration. Alternatively, administrators can simply migrate user and host identities from a NIS domain into the IPA domain.
10.1. About NIS and Identity Management
Network information service (NIS) centrally manages authentication and identity information such as users and passwords, hosts and IP addresses, and POSIX groups. This was originally called Yellow Pages (abbreviated YP) because of its simple focus on identity and authentication lookups.
NIS is considered too insecure for most modern network environments because it provides no host authentication mechanisms and it transmits all of its information over the network unencrypted, including password hashes. Still, while NIS has been falling out of favor with administrators, it is still actively used by many system clients. There are ways to work around those insecurities by integrating NIS with other protocols which offer enhanced security.
In Identity Management, NIS objects are integrated into IPA using the underlying LDAP directory. LDAP services offer support for NIS objects (as defined in RFC 2307), which Identity Management customizes to provide better integration with other domain identities. The NIS object is created inside the LDAP service and then a module like nss_ldap or SSSD fetches the object using an encrypted LDAP connection.
NIS entities are stored in netgroups. A netgroup allows nesting (groups inside groups), which standard Unix groups don't support. Also, netgroups provide a way to group hosts, which is also missing in Unix group.
NIS groups work by defining users and hosts as members of a larger domain. A netgroup sets a trio of information — host, user, domain. This is called a triple.
host,user,domain
A netgroup triple associates the user or the host with the domain; it does not associate the user and the host with each other. Therefore, a triple usually defines a host or a user for better clarity and management.
NIS distributes more than just netgroup data. It stores information about users and passwords, groups, network data, and hosts, among other information. Identity Management can use a NIS listener to map passwords, groups, and netgroups to IPA entries.
In IPA LDAP entries, the users in a netgroup can be a single user or a group; both are identified by the memberUser parameter. Likewise, hosts can be either a single host or a host group; both are identified by the memberHost attribute.
In Identity Management, these netgroup entries are handled using the netgroup-* commands, which show the basic LDAP entry:
# ipa netgroup-show netgroup1
Netgroup name: netgroup1
Description: my netgroup
NIS domain name: nisdomain
Member User: jsmith
Member User: bjensen
Member User: Engineering
Member Host: host1.example.com
Member Host: VirtGuests
When a client attempts to access the NIS netgroup, then Identity Management translates the LDAP entry into a traditional NIS map and sends it to a client over the NIS protocol (using a NIS plug-in) or it translates it into an LDAP format that is compliant with RFC 2307 or RFC 2307bis (using a compatibility plug-in).
All netgroups in Identity Management are essentially static groups, meaning that the members of the group are manually and explicitly added to the group. Tangentially, IPA allows nested groups, where a group is a member of another group. In that case, all of the group members of the member group automatically belong to the parent group, as well.
Netgroups are added in two steps: the group itself is created, and then members are added to it.
10.2.1. Adding Netgroups
10.2.1.1. With the Web UI
Open the Identity tab, and select the Netgroups subtab.
Click the Add link at the top of the netgroups list.
Enter both a unique name and a description for the netgroup. Both the name and description are required.
The group name is the identifier used for the netgroup in the IPA domain, and it cannot be changed after it is created. The name cannot contain spaces, but other separators like an underscore (_) are allowed.
Click the Add and Edit button to go immediately to the netgroup's edit pages.
Optionally, set the NIS domain for the netgroup. This defaults to the IPA domain, but it can be changed.
Click the Settings tab.
Enter the name of the alternate NIS domain in the NIS domain name field.
The NIS domain name field sets the domain that appears in the netgroup triple. It does not affect which NIS domain the Identity Management listener responds to.
New netgroups are added using the netgroup-add command. This adds only the group; members are added separately. Two attributes are always required: the group name and the group description. If those attributes are not given as arguments, then the script prompts for them. There is also an option to set the NIS domain name to use for the group; this defaults to the IPA domain, but it can be set to something different, depending on the network configuration.
The --nisdomain option sets the domain that appears in the netgroup triple. It does not affect which NIS domain the Identity Management listener responds to.
10.2.2. Adding Netgroup Members
NOTE
Netgroups can contain user groups, host groups, and other netgroups as their members. These are nested groups.
It can take up to several minutes for the members of the child group to show up as members of the parent group. This is especially true on virtual machines where the nested groups have more than 500 members.
When creating nested groups, be careful not to create recursive groups. For example, if GroupA is a member of GroupB, do not add GroupB as a member of GroupA. Recursive groups are not supported and can cause unpredictable behavior.
10.2.2.1. With the Web UI
Open the Identity tab, and select the Netgroups subtab.
Click the name of the netgroup to which to add members.
Select the tab for the type of netgroup member to add. Netgroups can have users, user groups, hosts, host groups, and other netgroups as members.
Click the Enroll link at the top of the task area.
Click the checkbox by the names of the users to add, and click the right arrows button, >>, to move the names to the selection box.
Click the Enroll button.
10.2.2.2. With the Command Line
Once the group is configured, begin adding netgroup members with the netgroup-add-member command. Users, groups, hosts, host groups, and other netgroups can all be added to the netgroup entry. The entry name of the NIS group being edited usually comes at the end of the command:
When the NIS service is enabled on a system, the IPA server is automatically configured to set the NIS domain to the IPA domain's name, and to include IPA users, groups, and netgroups as passwd, group, and netgroup maps in the NIS domain.
If any automount maps are already defined, these maps need to be manually added to the NIS configuration in Identity Management for them to be exposed to NIS clients. The NIS server is managed by a special plug-in entry in the IPA LDAP directory; this is a container entry, and each NIS domain and map used by the NIS server is configured as a child entry beneath that container. The NIS domain entry in the must have the name of the NIS domain, the name of the NIS map, how to find the directory entries to use as the NIS map's contents, and which attributes to use as the NIS map's key and value. Most of these settings will be the same for every map.
The IPA server stores the automount maps, grouped by automount location, in the cn=automount branch of the IPA directory tree.
The NIS domain and map is added using LDAP tools, like ldapadd, and editing the directory directly. For example, this adds an automount map that is named auto.example in a location named default and for a server named nisserver:
A similar add operation needs to be run for every map that is configured.
10.4. Migrating from NIS to IPA
There is no direct migration path from NIS to Identity Management. This is a manual process with three major steps: setting up netgroup entries in IPA, exporting the existing data from NIS, and importing that data into IPA. There are several options for how to set up the IPA environment and how to export data; the best option depends on the type of data and the overall network environment that you have.
10.4.1. Preparing Netgroup Entries in IPA
The first step is to identify what kinds of identities are being managed by NIS. Frequently, a NIS server is used for either user entries or host entries, but not for both, which can simplify the data migration process.
For user entries
Determine what applications are using the user information in the NIS server. While some clients (like sudo) require NIS netgroups, many clients can use Unix groups instead. If no netgroups are required, then simply create corresponding user accounts in IPA and delete the netgroups entirely. Otherwise, create the user entries in IPA and then create an IPA-managed netgroup and add those users as members. This is described in Section 10.2, “Creating Netgroups”.
For host entries
Whenever a host group is created in IPA, a corresponding shadow NIS group is automatically created. These netgroups can then be managed using the ipa-host-net-manage command.
For a direct conversion
It may be necessary to have an exact conversion, with every NIS user and host having an exact corresponding entry in IPA. In that case, each entry can be created using the original NIS names:
Create an entry for every user referenced in a netgroup.
Create an entry for every host referenced in a netgroup.
Create a netgroup with the same name as the original netgroup.
Add the users and hosts as direct members of the netgroup. Alternatively, put add the users and hosts into IPA groups or other netgroups, and then add those groups as members to the netgroup.
10.4.2. Enabling the NIS Listener in Identity Management
The IPA Directory Server can function as a limited NIS server. The slapi-nis plug-in sets up a special NIS listener that receives incoming NIS requests and manages the NIS maps within the Directory Server. Identity Management uses three NIS maps:
passwd
group
netgroup
Using IPA as an interim NIS server offers a reasonable way to handle NIS requests while migrating NIS clients and data.
The slapi-nis plug-in is not enabled by default. To set up the NIS listeners for Identity Management:
Enable the required schema:
# ipa-compat-manage enable
Enable the NIS listener:
# ipa-nis-manage enable
Restart the DNS and Directory Server service:
# service restart rpcbind
# service restart dirsrv
10.4.3. Exporting the Existing NIS Data
There are three main approaches that can be used to obtain the information from the NIS domain:
Export an LDIF file from the NIS server.
Dump the netgroups from the source into an LDIF file.
Convert the entries in the source file so that they use the native IPA NIS schema. The IPA schema elements are defined in /etc/dirsrv/slapd-REALM/schema/60basev2.ldif.
Import the edited LDIF file into IPA using the ldapmodify command.
Use scripts to obtain the information and automatically create the corresponding IPA entries.
Create a script to retrieve data from the source. There are several ways to access this information, such as parsing an LDIF file or connecting to the NIS server and listing the information.
Create a second script that runs through the IPA command-line utilities to create all of the entries, using the NIS information as inputs.
Manually create the required netgroups, users, and hosts.
All users must have a password which they use to authenticate to the Kerberos domain. Identity Management defines and enforces rules about password complexity, password histories, and account lockouts in order to maintain security.
NOTE
IPA, by default, does not expose passwords to clients, even hashed passwords, for system security.
11.1. About Password Policies and Policy Attributes
A password policy sets certain standards for passwords, such as the password complexity and the rules for changing passwords. A password policy minimizes the inherent risk of using passwords by ensuring that they meet adequate complexity standards to thwart brute force attacks and they are changed frequently enough to mitigate the risk of someone revealing or discovering a password.
There are three main configuration areas that are defined within the password policy:
Strength or complexity requirements
History
Account lockout
The IPA password policy is enforced jointly by the KDC and the LDAP server. While the password policy is set in the LDAP directory and is based on 389 Directory Server password policy attributes, the policy is ultimately constrained by the KDC password policy framework. The KDC policy is less flexible than the 389 Directory Server policy framework, so the IPA password policy can only implement password policy elements supported in the KDC. Any other policy settings made within the 389 Directory Server are not visible or enforced in Identity Management.
Password policies are assigned either globally or to groups in IPA, not to individual users. The password policy is assigned a weight, so that if a user belongs to multiple groups with different password policies, the policy with the highest priority will take precedence.
Sets the minimum period of time, in hours, that a user's password must be in effect before the user can change it. This can prevent a user from changing a password and then immediately changing it to the original value. The default value is one hour.
Maximum Password Lifetime
--maxlife
Sets the maximum period of time, in days, that a user's password can be in effect before it must be changed. The default value is 90 days.
Minimum Number of Character Classes
--minclasses
Sets the minimum number of different classes, or types, of character that must exist in a password before it is considered valid. For example, setting this value to 3 requires that any password must have characters from at least three categories in order to be approved. The default value is zero (0), meaning there are no required classes.
There are six character classes:
Upper-case characters
Lower-case characters
Digits
Special characters (for example, punctuation)
8-bit characters (characters whose decimal code starts at 128 or below)
Number of repeated characters
This weights in the opposite direction, so that if you have too many repeated characters you will not meet the quorum to satisfy the "level" expressed by krbPwdMinDiffChars.
Minimum Length of Password
--minlength
Sets the minimum number of characters for a password. The default value is eight characters.
Password History
--history
Sets the number of previous passwords that are stored and which a user is prevented from using. For example, if this is set to ten, IPA prevents a user from reusing any of their previous ten passwords. The default value is zero (0), which disables password history.
NOTE
Even with the password history set to zero, users cannot reuse a current password.
Options for the CLI only
Priority
--priority
Sets the priority which determines which policy is in effect. The lower the number, the higher priority.
Although this priority is required when the policy is first created in the UI, it cannot be reset in the UI. It can only be reset using the CLI.
Maximum Consecutive Failures
--maxfail
Specifies the maximum number of consecutive failures to input the correct password before the user's account is locked.
Fail Interval
--failinterval
Specifies the period (in seconds) after which the failure count will be reset.
Lockout Time
--lockouttime
Specifies the period (in seconds) for which a lockout is enforced.
11.2. Viewing Password Policies
There can be multiple password policies configured in IPA. There is always a global policy, which is created with the server. Additional policies can be created for groups in IPA.
The UI lists all of the group password policies and the global policy on the Password Policies page.
Using the CLI, both global and group-level password policies can be viewed using the pwpolicy-show command. The CLI can also display the password policy in effect for a user.
11.2.1. Viewing the Global Password Policy
The global password policy is created with the server. This applies to every user until a group-level password policy supersedes it.
Click the Policy tab, and then click the Password Policies subtab.
All of the policies in the UI are listed by group. The global password policy is defined by the global_policy group. Click the group link.
The global policy is displayed.
11.2.1.2. With the Command Line
To view the global policy, simply run the pwpolicy-show command with no arguments:
$ ipa pwpolicy-show
Group: global_policy
Max lifetime (days): 90
Min lifetime (hours): 1
History size: 0
Character classes: 0
Min length: 8
Max failures: 6
Failure reset interval: 60
Lockout duration: 600
11.2.2. Viewing Group-Level Password Policies
11.2.2.1. With the Web UI
Click the Policy tab, and then click the Password Policies subtab.
All of the policies in the UI are listed by group. Click the name of the group which is assigned the policy.
The group policy is displayed.
11.2.2.2. With the Command Line
For a group-level password policy, specify the group name with the command:
$ ipa pwpolicy-show examplegroup
Group: global_policy
Max lifetime (days): 90
Min lifetime (hours): 1
History size: 3
Character classes: 4
Min length: 8
Max failures: 3
Failure reset interval: 15
Lockout duration: 150
11.2.3. Viewing the Password Policy in Effect for a User
A user may belong to multiple groups, each with their own separate password policies. These policies are not additive. Only one policy is in effect at a time and it applies to all password policy attributes. To see which policy is in effect for a specific user, the pwpolicy-show command can be run for a specific user. The results also show which group policy is in effect for that user.
$ ipa pwpolicy-show --user=jsmith
Group: admins
Max lifetime (days): 90
Min lifetime (hours): 1
History size: 0
Character classes: 0
Min length: 8
Max failures: 6
Failure reset interval: 60
Lockout duration: 600
11.3. Editing the Global Password Policy
A password policy can be selective; it may only define certain elements. A global password policy sets defaults that are used for every user entry, unless a group policy takes priority.
A global policy always exists, so there is no reason to add a global password policy.
11.3.1. With the UI
Click the Policy tab, and then click the Password Policies subtab.
All of the policies in the UI are listed by group. The global password policy is defined by the global_policy group. Click the group link.
The group policy is displayed.
Change the policy fields. Leaving a field blank removes that attribute from the password policy configuration.
Max lifetime sets the maximum amount of time, in days, that a password is valid before a user must reset it.
Min lifetime sets the minimum amount of time, in hours, that a password must remain in effect before a user is permitted to change it. This prevents a user from attempting to change a password back immediately to an older password or from cycling through the password history.
History size sets how many previous passwords are stored. A user cannot re-use a password that is still in the password history.
Character classes sets the different categories of character that must be used in the password. For example, a character class can be a number, special character, or capital; the complete list of categories is in Table 11.1, “Password Policy Settings”. This is part of setting the complexity requirements.
Min length sets how many characters must be in a password. This is part of setting the complexity requirements.
11.3.2. With the Command Line
To edit the global password policy, use the pwpolicy-mod command with the attributes to change:
Group-level policies override the global policies and offer specific policies that only apply to group members. Password policies are not cumulative. Either a group policy or the global policy is in effect for a user or group, but not both simultaneously.
Group-level policies do not exist by default, so they must be created manually.
NOTE
It is not possible to set a password policy for a non-existent group.
11.4.1. With the Web UI
Click the Policy tab, and then click the Password Policies subtab.
All of the policies in the UI are listed by group. The global password policy is defined by the global_policy group. Click the group link.
Click the Add link at the top.
In the pop-up box, select the group for which to create the password policy.
Set the priority of the policy. The higher the number, the lower the priority.
Only one password policy is in effect for a user, and that is the highest priority policy.
NOTE
The priority cannot be changed in the UI once the policy is created.
Click the Add and Edit button so that the policy form immediately opens.
Set the policy fields. Leaving a field blank means that attribute is not added the password policy configuration.
Max lifetime sets the maximum amount of time, in days, that a password is valid before a user must reset it.
Min lifetime sets the minimum amount of time, in hours, that a password must remain in effect before a user is permitted to change it. This prevents a user from attempting to change a password back immediately to an older password or from cycling through the password history.
History size sets how many previous passwords are stored. A user cannot re-use a password that is still in the password history.
Character classes sets the different categories of character that must be used in the password. For example, a character class can be a number, special character, or capital; the complete list of categories is in Table 11.1, “Password Policy Settings”. This is part of setting the complexity requirements.
Min length sets how many characters must be in a password. This is part of setting the complexity requirements.
11.4.2. With the Command Line
Password policies are added with the pwpolicy-add command.
$ ipa pwpolicy-add groupName --attribute-value
For example:
$ ipa pwpolicy-add examplegroup --minlife=7 --maxlife=49 --history= --priority=1
Group: examplegroup
Max lifetime (days): 49
Min lifetime (hours): 7
Priority: 1
TIP
Setting an attribute to a blank value effectively removes that attribute from the password policy.
11.5. Changing the Priority of Group Password Policies
A user may belong to multiple groups, each with different password policies. Since only one policy can be in effect for a user, there has to be a method to assign precedence to policies. That is done through priority.
The highest priority is zero (0). The lower the number, the higher the priority.
This is set initially when the password policy is created. It can be modified after the policy is created by resetting the --priority option.
$ ipa pwpolicy-mod examplegroup --priority=10
When a user belongs to multiple groups, the group password policy with the lowest number has the priority.
NOTE
The password policy priority cannot be changed in the UI after it is created.
11.6. Setting Account Lockout Policies
A brute force attack occurs when a malefactor attempts to guess a password by simply slamming the server with multiple login attempts. An account lockout policy prevents brute force attacks by blocking an account from logging into the system after a certain number of login failures — even if the correct password is subsequently entered.
There are three parts to the account lockout policy:
The number of failed login attempts before the account is locked (--maxfail).
How long an account is locked after the max number of failures is reached (--lockouttime). This is in seconds.
The time after a failed login attempt before the counter resets (--failinterval). Since mistakes do happen honestly, the count of failed attempts is not kept forever; it naturally lapses after a certain amount of time. This is in seconds.
These can all be set when a password policy is created with pwpolicy-add or added later using pwpolicy-mod. For example:
The account lockout policy priority cannot be set or modified in the UI.
11.7. Enabling a Password Change Dialog
There may be situations when a user exists in Identity Management but does not have a valid Kerberos ticket, meaning he cannot authenticate to the IPA domain. This is possible for new users or for users whose domain passwords have expired. Much like enabling password authentication in the web UI, it is possible to enable password-based authentication to the client. This opens up a password change dialog box to allow the user to reset the expired password.
The password change dialog is enabled by using OpenSSH's challenge-response authentication.
The challenge-response dialog is optional. In many environments, it is not necessary because SSSD can handle changing expired passwords by invoking the required PAM modules. However, using the challenge-response option in OpenSSH makes it possible to do password changes directly in PAM and to support full PAM conversations.
This is not enabled by default, but it can be enabled by editing the OpenSSH configuration.
Kerberos authentication is the core of authentication within the IPA domain. The IPA server actually runs a Kerberos server within it, and this Kerberos server can be configured for custom policies for managing tickets and keytabs.
Identity Management has its own command-line tools to use to manage Kerberos policies. Do not use kadmin or kadmin.local to manage IPA Kerberos settings.
12.1. About Kerberos
Kerberos provides an authentication layer between services and users. Kerberos centralizes authentication into a single location; a user authenticates to the Kerberos server, and then when that user attempts to access any resource on the network, that resource can check the key distribution center (KDC) for the stored user credentials. This allows users to access multiple resources without having to supply credentials separately to each and every one.
All of the users and services, combined, and all of the KDCs and Kerberos servers that are aware of each other constitute a realm. Each user, machine, and service within the realm is identified by a unique name called the principal. The user or service uses the principal and a verifying credential (usually a password) to authenticate to the KDC. The credential that is shared with the KDC is a key and it is stored in a file called a key table or keytab.
When the KDC verifies the user's identity, it issues a ticket. The ticket is a long-term pass to any service and machine on the realm. The KDC issues the user a special kind of ticket called a ticket-granting ticket (TGT). Whenever the user tries to access a resource within the Kerberos realm, the resource sends a request for a ticket specifically for it. The TGT is used to issue a resource-specific ticket that the resource then uses to authenticate the user and grant access.
NOTE
When an IPA client is first configured, the host principal is automatically retrieved by the setup script and stored in the /etc/krb5.keytab file. This host principal is stored within the host record so that local service commands cannot be used with this principal. This prepares the client to function in the IPA realm.
12.1.1. About Principal Names
The principal identifies not only the user or service, but also the realm that that entity belongs to. A principal name has two parts, the identifier and the realm:
identifier@REALM
For a user, the identifier is only the Kerberos username. For a service, the identifier is a combination of the service name and the hostname of the machine it runs on:
service/FQDN@REALM
The service name is a case-sensitive string that is specific to the service type, like host, ldap, http, and dns. Not all services have obvious principal identifiers; the sshd daemon, for example, uses the host service principal.
The host principal is usually stored in /etc/krb5.keytab.
When Kerberos requests a ticket, it always resolves the domain name aliases (DNS CNAME records) to the corresponding DNS address (A or AAAA records). The hostname from the address record is then used when service or host principals are created.
For example:
www.example.com CNAME web-01.example.com
web-01.example.com A 192.0.2.145
A service attempts to connect to the host using its CNAME alias:
$ ssh www.example.com
The Kerberos server requests a ticket for the resolved hostname, web-01.example.com@EXAMPLE.COM, so the host principal must be host/web-01.example.com@EXAMPLE.COM.
12.1.2. About Protecting Keytabs
To protect keytab files, reset the permissions and ownership to restrict access to the files to only the keytab owner. : For example, set the owner of the Apache keytab (/etc/httpd/conf/ipa.keytab) to httpd and the mode to 0600.
12.2. Setting Kerberos Ticket Policies
The Kerberos ticket policy sets basic restrictions on managing tickets within the Kerberos realm, such as the maximum ticket lifetime and the maximum renewal age (the period during which the ticket is renewable).
The Kerberos ticket policy is set globally so that it applies to every ticket issued within the realm. IPA also has the ability to set user-level ticket policies which override the global policies. This can be used, for example, to set extended expiration times for administrators or to set shorter expiration times for some employees.
12.2.1. Setting Global Ticket Policies
12.2.1.1. From the Web UI
Click the Policy tab, and then click the Kerberos Ticket Policy subtab.
Change the ticket lifetime policies.
Max renew sets the period after a ticket expires that it can be renewed.
Max life sets the active period (lifetime) of a Kerberos ticket.
Click the Update link at the top of the policy page.
Restart the KDC.
# service krb5kdc restart
IMPORTANT
Any change to the global Kerberos ticket policy requires a restart of the KDC for the changes to take effect.
12.2.1.2. From the Command Line
The ipa krbtpolicy-mod command modifies the policy, while the ipa krbtpolicy-reset command resets the policy to the default values.
For example:
# ipa krbtpolicy-mod --maxlife=3600 --maxrenew=18000
Max life: 3600
Max renew: 18000
IMPORTANT
Any change to the global Kerberos ticket policy requires a restart of the KDC for the changes to take effect. Restart the KDC:
# service krb5kdc restart
12.2.2. Setting User-Level Ticket Policies
User-level Kerberos ticket policies are set using the same commands as global policies, but the user is specified in the command.
For example:
# ipa krbtpolicy-mod jsmith --maxlife=3600
Max life: 3600
IMPORTANT
User-level policies take effect immediately on the next requested ticket (such as running kinit), without having to restart the KDC service.
12.3. Refreshing Kerberos Tickets
Kerberos keys are analogous to passwords. Like passwords, security policies may require that Kerberos tickets are manually refreshed after a specified interval.
The version of the key is shown in its key version number (KVNO). Refreshing (also called rotating) the principal's key increments the KVNO in the keytab entry. When a key is refreshed, a new entry is added to the keytab with a higher KVNO. The original key remains in the keytab but is no longer used to issue tickets.
Each keytab for the IPA realm has an entry in the IPA LDAP server, which includes its last change time. The principals which need to be refreshed can be regenerated using the ipa-getkeytab command.
NOTE
The ipa-getkeytab command does not delete the old keytab in case it already exists in the file.
Find all keytabs issued before the requisite date. For example, this looks for any principals created between midnight on January 1, 2010, and 11:59 PM on December 31, 2010:
Host (machine) principals are stored under the cn=computers,cn=accounts,dc=example,dc=com subtree.
Service principals are stored under the cn=services,cn=accounts,dc=example,dc=com subtree.
Filter by the last change date (krblastpwdchange).
Limit the search result information to only the entry name and principal by specifying the dn krbprincipalname attributes.
Dates are expressed in YYYYMMDD format, and times in HHMMSS format (GMT).
Retrieve a new keytab for the principal using the ipa-getkeytab command. This requires the location of the original keytab for the service or host (-k), the principal (-p), and the IPA server hostname (-s).
For example, this refreshes the host principal with a keytab in the default location of /etc/krb5.keytab:
Regenerate the keytab using ipa-getkeytab for every service.
The klist command displays the new key version number for the refreshed keytab. The original keytab still exists in the database, and it is listed with the previous KVNO.
Tickets issued against the old keytab continue to work, while new tickets are issued using the key with the highest KVNO. This avoids any disruption to system operations.
IMPORTANT
Some services, such as NFSv4, only support a limited set of encryption types. Pass the appropriate arguments to the ipa-getkeytab command to configure the keytab properly.
12.4. Caching Kerberos Passwords
A machine may not always be on the same network as the IPA domain; for example, a machine may need to be logged into a VPN before it can access the IPA domain. If a user logs into a system when it is offline and then later attempts to connect to IPA services, then the user is blocked because there is no IPA Kerberos ticket for that user. IPA works around that limitation by using SSSD to store the Kerberos passwords in the SSSD cache.
This is configured by default by the ipa-client-install script. A configuration parameter is added to the /etc/sssd/sssd.conf file which specifically instructs SSSD to store those Kerberos passwords for the IPA domain:
This default behavior can be disabled during the client installation by using the --no-krb5-offline-passwords option.
This behavior can also be disabled by editing the /etc/sssd/sssd.conf file and removing the krb5_store_password_if_offline line or changing its value to false.
Refreshing Kerberos tickets adds a new key to the keytab, but it does not clear the keytab. If a host is being unenrolled and re-added to the IPA domain or if there are Kerberos connection errors, then it may be necessary to remove the keytab and create a new keytab.
This is done using the ipa-rmkeytab command. To remove all principals on the host, specify the realm with the -r option:
# ipa-rmkeytab -r EXAMPLE.COM -k /etc/krb5.keytab
To remove the keytab for a specific service, use the -p option to specify the service principal:
Kerberos errors frequently become apparent when trying to connect to the realm using kinit or a similar client. For information related to Kerberos, first check the Kerberos manpages, help files, and other resources.
IMPORTANT
Identity Management has its own command-line tools to use to manage Kerberos policies. Do not use kadmin or kadmin.local to manage IPA Kerberos settings.
There are several places to look for Kerberos error log information:
For kinit problems or other Kerberos server problems, look at the KDC log in /var/log/krb5kdc.log.
For IPA-specific errors, look in /var/log/httpd/error_log.
Problems making connections with SSH when using GSS-API
If there are bad reverse DNS entries in the DNS configuration, then it may not be possible to log into IPA resources using SSH. When SSH attempts to connect to a resource using GSS-API as its security method, GSS-API first checks the DNS records. The bad records prevent SSH from locating the resource.
It is possible to disable reverse DNS lookups in the SSH configuration. Rather than using reverse DNS records, SSH passes the given username directly to GSS-API.
To disable reverse DNS lookups with SSH, add or edit the GSSAPITrustDNS directive and set the value to no.
# vim /etc/ssh/ssh_config
GSSAPITrustDNS no
There are problems connecting to an NFS server after changing a keytab
Clients attempting to mount NFS exports rely on the existence of a valid principal and secret key on both the NFS server and the client host. Clients themselves should not have access to the NFS keytab. The ticket for the NFS connection will be given to clients from the KDC.
Failure to export an updated keytab can cause problems that are difficult to isolate. For example, existing service connections may continue to function, but no new connections may be possible.
Identity Management provides a mechanism for predictably and consistently apply sudo policies across the IPA domain. The sudo policies apply to domain users and domain hosts.
13.1. About sudo and IPA
The sudo command allows a system administrator to delegate authority to specific users to run specific commands as root ro another specified user. sudo provides an audit trail of the commands and their arguments, so access can be tracked.
13.1.1. General sudo Configuration in Identity Management
sudo uses a local configuration file, /etc/sudoers, which defines the commands and users with sudo access. While this file can be shared among machines, there's no native way to distribute sudo configuration files among machines.
Identity Management uses its centralized LDAP database to contain the sudo configuration, which makes it globally available to all domain hosts. Identity Management also has a specialized LDAP schema for sudo entries that allows a lot more flexible and simpler configuration. This schema adds two key features:
The Identity Management schema supports host groups in addition to netgroups for sudo, while sudo only supports netgroups.
For every host group, Identity Management also creates a corresponding shadow netgroup. This allows IPA administrators to create sudo rules that reference host groups, while the local sudo command uses the corresponding netgroup.
Identity Management introduces the concept of a sudo command group. The group contains multiple commands, and then the command group can be referenced in the sudo configuration.
Because sudo does not support host groups and command groups, Identity Management translates the IPA sudo configuration into native sudo configuration when the sudo rules are created.
Because the sudo information is not available anonymously over LDAP by default, Identity Management defines a default sudo user, uid=sudo,cn=sysaccounts,cn=etc,$SUFFIX, which can be set in the LDAP/sudo configuration file, /etc/nslcd.conf. (The /etc/nslcd.conf file is created by the nss-pam-ldapd package. However, if nss-pam-ldapd is not installed, then the /etc/nslcd.conf file can be created manually.)
Both sudo and Identity Management support user groups as part of the sudo configuration. User groups can be either Unix or non-POSIX groups. Creating non-POSIX groups can create some access issues because any users in the group inherit non-POSIX rights from the group. Having the choice between Unix and non-POSIX groups allows administrators the choice in group formatting and to avoid problems with inherited permissions or GID information.
13.1.2. sudo and Netgroups
As Section 13.1.1, “General sudo Configuration in Identity Management” mentions, the LDAP schema used for sudo entries in Identity Management supports host group-style groups in addition to netgroups. Really, Identity Management creates two groups, a visible host group and a shadow netgroup. sudo itself only supports NIS-style netgroups for group formats.
One important thing to consider is that even though sudo uses NIS netgroups, it is not necessary to have a NIS server installed or a NIS client configured. When any group is created for sudo, the NIS object is created in the Directory Server instance, and then the information is retrieved by NSS_LDAP or by SSSD. The client (in this case, sudo) then extracts the required NIS information from the information provided by Identity Management's Directory Server.
In short, sudo configuration required NIS-formatted netgroups. It does not require NIS.
The Identity Management Directory Server instance uses the standard LDAP schema for NIS objects, defined in RFC 2307.
Just as in regular sudo configuration, any command which will be governed by sudo access must be listed in the configuration. Identity Management adds an extra control measure with sudo command groups, which allow a group of commands to be defined and then applied to the sudo configuration as one.
Adding a command or a command group makes it available to IPA to be defined in a sudo rule; simply adding a command does not automatically include it in a sudo rule.
13.2.1. Adding sudo Commands
13.2.1.1. Adding sudo Commands with the Web UI
Click the Policy tab.
Click the Sudo subtab, and then select the Sudo Commands link.
Click the Add link at the top of the list of commands.
Enter the full system path and name of the command and, optionally, a description.
Click the Add and Edit button to go immediately to the edit pages for the command.
In the Sudo Command Groups tab, click the Enroll button to add the sudo command to a command group.
Click the checkbox by the groups for the command to join, and click the right arrows button, >>, to move the group to the selection box.
Click the Enroll button.
13.2.1.2. Adding sudo Commands with the Command Line
To add a single command, use the sudocmd-add command. This requires the full, local path to the command executable and a description of the command:
Add the command, using its full directory location as its name, to the command group using the sudocmdgroup-add-member command:
$ ipa sudocmdgroup-add-member --sudocmds '/usr/bin/vim' files
sudo Command Group: files
Description: File editing commands
Member sudo commands: /usr/bin/vim
-------------------------
Number of members added 1
-------------------------
13.3. Defining sudo Rules
sudo rules are in a sense similar to access control rules: they define users who are granted access, the commands which are within the scope of the rule, and then the target hosts to which the rule applies. In IPA, additional information can be configured in the rule, such as sudoers options and run-as settings, but the basic elements always define who, what (services), and where (hosts).
13.3.1. Defining sudo Rules in the Web UI
Click the Policy tab.
Click the Sudo subtab, and then select the Sudo Rules link.
Click the Add link at the top of the list of sudo rules.
Enter the name for the rule.
Click the Add and Edit button to go immediately to set the configuration for the rule.
There are a number of configuration areas for the rule. The most basic elements are set in the Who, Access This Host, and Run Commands areas; the others are optional and are used to refine the rule.
Click the + Add link at the right of the options list.
Enter the sudoers option.
Click Add.
In the Who area, select the users or user groups to which the sudo rule is applied.
Click the + Add link at the right of the users list.
Click the checkbox by the users to add to the rule, and click the right arrows button, >>, to move the users to the selection box.
Click Add.
In the Access This Host area, select the hosts on which the sudo rule is in effect.
Click the + Add link at the right of the hosts list.
Click the checkbox by the hosts to include with the rule, and click the right arrows button, >>, to move the hosts to the selection box.
Click Add.
In the Run Commands area, select the commands which are included in the sudo rule. The sudo rule can grant access or deny access to commands, and it can grant allow access to one command and also deny access to another.
In the Allow/Deny area, click the + Add link at the right of the commands list.
Click the checkbox by the commands or command groups to include with the rule, and click the right arrows button, >>, to move the commands to the selection box.
Click Add.
Optional. The sudo rule can be configured to run the given commands as a specific, non-root user.
In the As Whom area, click the + Add link at the right of the users list.
Click the checkbox by the users to run the command as, and click the right arrows button, >>, to move the users to the selection box.
Click Add.
13.3.2. Defining sudo Rules in the Command Line
Each element is added to the rule command using a different command (listed in Table 13.1, “sudo Commands”).
The basic outline of a sudo rule command is:
$ ipa sudorule-add* options ruleName
Example 13.1. Creating Basic sudo Rules
In the most basic case, the sudo configuration is going to grant the right to one user for one command on one host.
Next, add the commands to grant access to. This can be a single command, using --sudocmd, or a group of commands, using --sudocmdgroups.
$ ipa sudorule-add-allow-command --sudocmd "/usr/bin/vim" files-commands
Rule name: files-commands
Enabled: TRUE
sudo Commands: /usr/bin/vim
-------------------------
Number of members added 1
-------------------------
Add a host or a host group to the rule.
$ ipa sudorule-add-host --host server.example.com files-commands
Rule name: files-commands
Enabled: TRUE
Hosts: server.example.com
sudo Commands: /usr/bin/vim
-------------------------
Number of members added 1
-------------------------
Last, add the user or group to the rule. This is the user who is allowed to use sudo as defined in the rule; if no "run-as" user is given, then this user will run the sudo commands as root.
$ ipa sudorule-add-user --user jsmith files-commands
Rule name: files-commands
Enabled: TRUE
Users: jsmith
Hosts: server.example.com
sudo Commands: /usr/bin/vim"
-------------------------
Number of members added 1
-------------------------
Example 13.2. Allowing and Denying Commands
The sudo rule can grant access or deny access to commands. For example, this rule would allow read access to files but prevent editing:
The sudoers file has a lot of potential flags that can be set to control the behavior of sudo users, like requiring (or not requiring) passwords to offer a user to authenticate to sudo or using fully-qualified domain names in the sudoers file. The complete list of options is in the sudoers manpage and at http://www.gratisoft.us/sudo/sudoers.man.html#sudoers_options.
Any of these options can be set for the IPA sudo rule using the sudorule-add-option command. When the command is run, it prompts for the option to add:
The sudo rule also has the option of specifying a non-root user or group to run the commands as. The initial rule has the user or group specified using the --sudorule-add-runasuser or --sudorule-add-runasgroup command, respectively.
When creating a rule, the sudorule-add-runasuser or sudorule-add-runasgroup command can only set specific users or groups. However, when editing a rule, it is possible to run sudo as all users or all groups by using the --runasusercat or --runasgroupcat option. For example:
$ ipa sudorule-mod --runasgroupcat=all ruleName
NOTE
The --sudorule-add-runasuser and --sudorule-add-runasgroup commands do not support an all option, only specific user or group names. Specifying all users or all groups can only be used with options with the sudorule-mod command.
Table 13.1. sudo Commands
Command
Description
sudorule-add
Adds a sudo rule entry.
sudorule-add-user
Adds a user or a user group to the sudo rule. This user (or every member of the group) is then entitled to sudo any of the commands in the rule.
sudorule-add-host
Adds a target host for the rule. These are the hosts where the users are granted sudo permissions.
sudorule-add-runasgroup
Sets a group to run the sudo commands as. This must be a specific user; to specify all users, modify the rule using sudo-rule.
sudorule-add-runasuser
Sets a user to run the sudo commands as. This must be a specific user; to specify all users, modify the rule using sudo-rule.
sudorule-add-allow-command
Adds a command that users in the rule have sudo permission to run.
sudorule-add-deny-command
Adds a command that users in the rule are explicitly denied sudo permission to run.
sudorule-add-option
Adds a sudoers flag to the sudo rule.
13.4. An Example of Configuring sudo
Implementing sudo requires setting up the command configuration on the IPA server and then configuring the local sudo client to look for the appropriate configuration.
Set up a bind user by setting a password for the default IPA sudo bind user.
A password operation must occur over a secure connection. To use TLS/SSL, first export the location of the certificate to use to establish the secure connection:
$ export LDAPTLS_CACERT=/etc/ipa/ca.crt
Using the LDAP tools, set the password for the sudo user, uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com:
$ ldappasswd -x -S -W -h ipaserver.ipadocs.org -ZZ -D "cn=Directory Manager" uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com
New password:
Re-enter new password:
Enter LDAP Password:
This example specifically configures a Red Hat Enterprise Linux 6 client for sudo rules. The configuration file in step 3 is different, depending on the platform.
Configure sudo to look to LDAP for the sudoers file.
vim /etc/nsswitch.conf
sudoers: files ldap
sudoers_debug: 1
Leaving the files option in place allows sudo to check its local configuration before checking the LDAP-based IPA configuration.
TIP
Adding the sudoers_debug parameter helps with troubleshooting. Valid values for this parameter are 0, 1, and 2. The sudo documentation at http://www.gratisoft.us/sudo/readme_ldap.html has more information on debugging the process.
Configure SSSD to look for NIS netgroups.
Add the following line immediately after the ipa_server entry in the /etc/sssd/sssd.conf file:
Multiple LDAP servers can be configured in a space-separated list, and other options (like SSL and non-standard ports) can be used with the LDAP URL. The sudo LDAP configuration is covered in the sudo manpages, http://www.sudo.ws/sudo/man/1.8.2/sudoers.ldap.man.html.
IMPORTANT
The uri directive must give the fully-qualified domain name of the LDAP server, not an IP address. Otherwise, sudo fails to connect to the LDAP server.
NOTE
The /etc/nslcd.conf file is created by the nss-pam-ldapd package. However, if nss-pam-ldapd is not installed, then the /etc/nslcd.conf file can be created manually and the sudo configuration works fine.
Set a name for the NIS domain in the sudo configuration. sudo uses NIS netgroups, so the NIS domain name must be set in the system configuration for sudo to be able to find the host groups used in the IPA sudo configuration:
# nisdomainname example.com
IMPORTANT
Even though sudo uses NIS-style netgroups, it is not necessary to have a NIS server installed. Netgroups require that a NIS domain be named in their configuration, so sudo requires that a NIS domain be named for netgroups. However, that NIS domain does not actually need to exist.
Chapter 14. Policy: Configuring Host-Based Access Control
IPA can control access to both machines and the services on those machines within the IPA domain. The rules define who can access what within the domain, not the level of access (which are defined by system or application settings). These access control rules grant access, with all other users and hosts implicitly denied.
This is called host-based access control because the rule defines what hosts (source) are allowed to access other hosts (targets) within the domain. This access can be further broken down to users and services.
NOTE
Using host-based access control requires SSSD to be installed and configured on the IPA client machine.
14.1. About Host-Based Access Control
Host-based access control rules (which are described in Chapter 14, Policy: Configuring Host-Based Access Control) can be applied to individual hosts. However, using host groups allows centralized, and potentially simplified, access control management because an access control rule only needs to be defined once and then it is applied immediately and consistently to all the hosts within the group.
Figure 14.1. Host Groups and Host-Based Access Control
NOTE
While access must be explicitly granted to users and hosts within the IPA domain, IPA servers are configured by default with an allow all access control rule which allows access for every host within the domain to every host within the domain.
To create an IPA server without the default allow all rule, run ipa-server-install with the --no_hbac_allow option.
The rule first defines things that can be accessed, and there are two types of entities:
Hosts, or target hosts, within the IPA domain.
Services on the target hosts. Multiple services can be combined into service groups. The service group can be modified without having to edit the access control rule itself.
The rule also sets who can have access (the IPA domain user) and what they can use to access the targets (the source host).
TIP
It is possible to use categories for users, source hosts, and target hosts instead of adding each one individually to the access control rule. The only supported category is all.
The entities in host-based access control rules follow the Kerberos principal entries: users, hosts (machines), and services. Users, source hosts, and target hosts can be added directly to host-based access control rules. However, services must be flagged first and then added to the access control rules.
14.2. Creating Host-Based Access Control Entries for Services and Service Groups
Any PAM service can be identified as to the host-based access control (HBAC) system in IPA. The service entries used in host-based access control are separate from adding a service to the IPA domain. Adding a service to the domain makes it a recognized resource which is available to other resources. Adding a domain resource to the host-based access control configuration allows administrators to exert defined control over what domain users and what domain clients can access that service.
Some common services are already configured as HBAC services, so they can be used in host-based access control rules. Additional services can be added, and services can be added into service groups for simpler management.
14.2.1. Adding HBAC Services
14.2.1.1. Adding HBAC Services in the Web UI
Click the Policy tab.
Click the Host-Based Access Control subtab, and then select the HBAC Services link.
Click the Add link at the top of the list of services.
The service is added to the access control system using the hbacsvc-add command, specifying the service by the name that PAM uses to evaluate the service.
Once the individual service is added, it can be added to the access control rule. However, if there a large number of services, then it can require frequent updates to the access control rules as services change. Identity Management also allows groups of services to added to access control rules. This makes it much easier to manage access control, because the members of the service group can be changed without having to edit the rule itself.
14.2.2.1. Adding Service Groups in the Web UI
Click the Policy tab.
Click the Host-Based Access Control subtab, and then select the HBAC Service Groups link.
Click the Add link at the top of the list of service groups.
Enter the service group name and a description.
Click the Add and Edit button to go immediately to the service configuration page.
At the top of the HBAC Services tab, click the Add link.
Click the checkbox by the names of the services to add, and click the right arrows button, >>, to move the command to the selection box.
Click the Enroll button to save the group membership.
14.2.2.2. Adding Service Groups in the Command Line
First create the service group entry, then create the service, and then add that service to the service group as a member. For example:
$ ipa hbacsvcgroup-add --desc="login services" login
--------------------------------
Added HBAC service group "login"
--------------------------------
Service group name: login
Description: login services
$ ipa hbacsvc-add --desc="SSHD service" sshd
-------------------------
Added HBAC service "sshd"
-------------------------
$ ipa hbacsvcgroup-add-member --hbacsvcs=sshd login
Service group name: login
Description: login services
-------------------------
Number of members added 1
-------------------------
NOTE
IPA defines two default service groups: SUDO for sudo services and FTP for services which provide FTP access.
14.3. Defining Host-Based Access Control Rules
Access controls, at a high level, define who has access to what. The who can be either a user or a host (the source host), and the what can be either a host (target host), service, or service group, or a combination of the three.
14.3.1. Setting Host-Based Access Control Rules in the Web UI
Click the Policy tab.
Click the Host-Based Access Control subtab, and then select the HBAC Rules link.
Click the Add link at the top of the list of host-based access control rules.
Enter the name for the rule.
Click the Add and Edit button to go immediately to set the configuration for the rule.
There are a number of configuration areas for the rule. The four basic elements are who the rule applies to, what hosts users can use to access resources (the source), what hosts allow access (the target), and, optionally, what services can be accessed.
In the Who area, select the users or user groups to which the access control rule is applied.
To apply the rule to all IPA users, select the Anyone radio button.
To apply the rule to a specific set of users or user groups:
Select the Specified Users and Groups radio button.
Click the + Add link at the right of the users list.
Click the checkbox by the users to add to the rule, and click the right arrows button, >>, to move the users to the selection box.
Click Add.
In the Accessing area, select the target hosts which can be accessed through this access control rule.
To apply the rule to all IPA hosts, select the Any Host radio button.
To apply the rule to a specific set of hosts or host groups:
Select the Specified Hosts and Groups radio button.
Click the + Add link at the right of the hosts list.
Click the checkbox by the hosts to include with the rule, and click the right arrows button, >>, to move the hosts to the selection box.
Click Add.
In the Via Service area, select specific services on the target hosts which the users are allowed to use to access target machines.
To apply the rule to all IPA hosts, select the Any Service radio button.
To apply the rule to a specific set of hosts or host groups:
Select the Specified Services and Groups radio button.
Click the + Add link at the right of the commands list.
Click the checkbox by the services or groups to include with the rule, and click the right arrows button, >>, to move the services to the selection box.
Click Add.
In the From area, select the source hosts, from which users can access the target hosts.
To apply the rule to all IPA hosts, select the Any Host radio button.
To apply the rule to a specific set of hosts or host groups:
Select the Specified Hosts and Groups radio button.
Click the + Add link at the right of the hosts list.
Click the checkbox by the hosts to include with the rule, and click the right arrows button, >>, to move the hosts to the selection box.
Click Add.
14.3.2. Setting Host-Based Access Control Rules in the Command Line
Access control rules are created using the hbacrule-* commands (listed in Table 14.1, “Host-Based Access Control Command and Options”). The first step is to create a container entry; from there, users, hosts, and services can be added to the access control entry.
The basic outline of all the access control commands is:
$ ipa hbacrule-add* options ruleName
TIP
To set every user, every host as a source host, or every host as a target, use the category options, such as --usercat=all.
Example 14.1. Granting All Access to One Host
One simple rule is to grant every user and every source host access to a single server. The first command creates the entry and uses the category options to apply every user and every host as a source host.
$ ipa hbacrule-add --usercat=all --srchostcat=all allGroup
--------------------------
Added HBAC rule "allGroup"
--------------------------
Rule name: allGroup
User category: all
Source host category: all
Enabled: TRUE
The second rule adds the target host, using the hbacrule-add-host command:
$ ipa hbacrule-add-host --hosts=server.example.com allGroup
Rule name: allGroup
User category: all
Source host category: all
Enabled: TRUE
Successful hosts/hostgroups:
member host: server.example.com
-------------------------
Number of members added 1
-------------------------
Example 14.2. Adding Control for a Single User to a Service
Another access control method is to specify which services users are allowed to use to access the target hosts.
First, for the user to have access to every machine, every host must be added as both a host and target. This can be done using the category options:
Then, the service is added to the access control rule. (The service should have already been added to the access control system using the hbacsvc-add command.) This is the service that the user can use to connect to the machine.
While a single service can be added to a rule, it is also possible to add an entire service group. Like a single service, this uses the hbacrule-add-service command, only with the --hbacsvcgroups option that specifies the group name.
Table 14.1. Host-Based Access Control Command and Options
Command
Description
Arguments
Source or Target Entry
hbacrule-add
Adds a new host-based access control rule.
--usercat=all, which applies the rule to every user
--hostcat=all, which sets every host as an allowed target server
--srchostcat=all, which sets every host as an allowed source server
--servicecat=all, which sets every configured service as an allowed target service
ruleName, which is the required unique identifier for the new rule
hbacrule-add-host
Adds a target host to the access control rule. A target host can be accessed by other servers and users in the domain.
--hosts, which adds an individual server or command-separated list of servers as an allowed target server
--hostgroups, which adds a host group to the rule and every host within the host group is an allowed target server
ruleName, which is the rule to which to add the target server
Target
hbacrule-add-service
Adds a service type to the rule.
--hbacsvcs, which adds an individual service type or a comma-separated list of service type as an allowed target service
--hbacsvcgroups, which adds a service group to the rule and every service within the service group is an allowed target service
ruleName, which is the rule to which to add the target service
Target
hbacrule-add-sourcehost
Adds a server to the list of servers that can be used to access domain services and target servers.
--hosts, which adds an individual server or command-separated list of servers as an allowed source server
--hostgroups, which adds a host group to the rule and every host within the host group is an allowed source server
ruleName, which is the rule to which to add the source server
Source
hbacrule-add-user
Adds a user to the access control rule. The user is then able to access any allowed target host or service within the domain, from any configured source host.
--users, which adds an individual user or command-separated list of users to the rule
--groups, which adds a user group to the rule and, thus, every user within the group
ruleName, which is the rule to which to add the user
Source
hbacrule-disable | hbacrule-enable
Disables or enables a host-based access control rule. Rules can be disabled if their behavior needs to be evaluated (for troubleshooting or to test a new rule).
ruleName, which is the rule to disable or enable
14.4. Testing Host-Based Access Control Rules
Implementing host-based access controls effectively can be tricky because it requires that all of the hosts be properly configured and the access is properly applied to users and services.
The hbactest command can test different host-based access control scenarios to make sure that the rules are working as expected.
14.4.1. The Limits of Host-Based Access Control Configuration
When a request is made to one of the domain services, the identifier of the source host is sent to a PAM interface for the login application (like OpenSSH, telnet, or rlogin) which is used to access SSSD on the target host machine. This identifier can be the hostname, the IP address, or even the alias of the source host.
This is essentially a long chain, from the source host to the target host to the service. The access control mechanism uses the identifier that is sent to the SSSD service on the target machine to verify that the source host has proper authorization granted in an access control rule.
However, if the identifier sent to SSSD cannot be traced back to the source host, then authorization fails. This can happen if any part of the host information does not match the access control rule configuration:
The source host uses an alias which is not listed in the rule.
The domain service on the target host sends an IP address instead of the hostname.
DNS is misconfigured and does not return the proper information for the DNS lookup or reverse lookup.
The client sends a malformed string to SSSD.
The name that is sent by the client must match the name in the rule, otherwise host-based access control fails.
The access control configuration should always be tested before it is implemented to prevent authorization failures.
14.4.2. Test Scenarios for Host-Based Access Control
Host-based access control rules depend on a lot of interactions — between hosts, services, DNS lookups, and users. If any element is misconfigured, then the rule can behave in unexpected ways.
Identity Management includes a testing tool to verify that access control rules are behaving in the expected way by testing the access in a defined scenario. There are several situations where this testing is useful:
A new rule needs to be tested before it is implemented.
There are problems with the existing rules, and the testing tool can identify what rule is behaving badly.
A subset of existing rules can be tested to see how they are performing.
The hbactest command tests configured host-based access control rules in very specific situations. A test run defines:
The user to run the operation as to test the rule performance for that user (--user).
From the source host X (--srchost).
Using the login client Y (--service).
To target host Z (--host).
The rule to test (--rules); if this is not used, then all enabled rules are tested.
Optional The hbactest returns detailed information about which rules were matched, not matched, or invalid. This detailed rule output can be disabled using --nodetail, so the test simply runs and returns whether access was granted.
NOTE
The hbactest script does not actually connect to the target host. Instead, it uses the rules within the IPA database to simulate how those rules would be applied in a specific situation as if an SSSD client were connecting to the IPA server.
More briefly, it performs a simulated test run based on the given information and configuration, but it does not actually attempt a service request against the target host.
Example 14.4. Testing All Active Rules
The most basic command checks all active rules. It requires a specific connection scenario, so the user, login service, source host, and target host have to be given, and the testing tool checks the connection.
Example 14.6. Testing Specific Rules Plus All Enabled
The --rules option lists specific rules to test, but it may be useful to test the specified rules against all of the enabled rules in the domain. This can be done by adding the --enabled option, which includes the (unspecified) enabled rules along with the specified rules.
It is possible to run a similar comparison against disabled rules by using the --disable option. With the --rules option, the specified rule plus all of the disabled rules are checked. With the --disabled option, all disabled rules are checked.
Chapter 15. Configuration: Defining Access Control within IPA
Access control is a security system which defines who can access certain resources — from machines to services to entries — and what kinds of operations they are allowed to perform. Identity Management provides several access control areas to make it very clear what kind of access is being granted and to whom it is granted. As part of this, Identity Management draws a distinction between access controls to resources within the domain and access control to the IPA configuration itself.
This chapter details the different internal access control mechanisms that are available for users within IPA to the IPA server and other IPA users.
15.1. About Access Controls for IPA Entries
Access control defines the rights or permissions users have been granted to perform operations on other users or objects.
15.1.1. A Brief Look at Access Control Concepts
The Identity Management access control structure is based on standard LDAP access controls. Access within the IPA server is based on the IPA users (who are stored in the backend Directory Server instance) who are allowed to access other IPA entities (which are also stored as LDAP entries in the Directory Server instance).
An access control rule has three parts:
Who can perform the operation. This is the entity who is being granted permission to do something; this is the actor. In LDAP access control models, this is called the bind rule because it defines who the user is (based on their bind information) and can optionally require other limits on the bind attempt, such as restricting attempts to a certain time of day or a certain machine.
What can be accessed. This defines the entry which the actor is allowed to perform operations on. This is the target of the access control rule.
What type of operation can be performed. The last part is determining what kinds of actions the user is allowed to perform. The most common operations are add, delete, write, read, and search. In Identity Management, all users are implicitly granted read and search rights to all entries in the IPA domain, with restrictions only for sensitive attributes like passwords and Kerberos keys. (Anonymous users are restricted from seeing security-related configuration, like sudo rules and host-based access control.)
The only rights which can be granted are add, delete, and write — the permissions required to modify an entry.
NOTE
Identity Management does not provide a way to grant read access explicitly, and this is an important distinction from standard LDAP access control rules. In LDAP, all operations, including read, are implicitly denied and must be explicitly granted. In IPA, read and search access are implicitly granted to any authenticated user.
Because read access is already granted, there is no way through the UI to grant read access. However, there is an option in the CLI tools to grant read access for special cases where there may be a broad deny rule set but read access should be granted to specific attributes. For example, read access is blocked to password attributes, but could be allowed by a special read permission.
When any operation is attempted, the first thing that the IPA client does is send user credentials as part of the bind operation. The backend Directory Server checks those user credentials and then checks the user account to see if the user has permission to perform the requested operation.
15.1.2. Access Control Methods in Identity Management
To make access control rules simple and clear to implement, Identity Management divides access control definitions into three categories:
Self-service rules, which define what operations a user can perform on his own personal entry. The access control type only allows write permissions to attributes within the entry; it does not allow add or delete operations for the entry itself.
Delegation rules, which allow a specific user group to perform write (edit) operations on specific attributes for users in another user group. Like self-service rules, this form of access control rule is limited to editing the values of specific attributes; it does not grant the ability to add or remove whole entries or control over unspecified attributes.
Role-based access control, which creates special access control groups which are then granted much broader authority over all types of entities in the IPA domain. Roles can be granted edit, add, and delete rights, meaning they can be granted complete control over entire entries, not just selected attributes.
Some roles are already created and available within Identity Management. Special roles can be created to manage any type of entry in specific ways, such as hosts, automount configuration, netgroups, DNS settings, and IPA configuration.
15.2. Defining Self-Service Settings
Self-service access control rules define the operations that an entity can perform on itself. These rules define only what attributes a user (or other IPA entity) can edit on their personal entries.
Two self-service rules exist by default:
A rule for editing some general attributes in the personal entry, including given name and surname, phone numbers, and addresses.
A rule to edit user passwords, including two Samba passwords, the Kerberos password, and the general user password.
15.2.1. Creating Self-Service Rules from the Web UI
Open the IPA Server tab in the top menu, and select the Self Service Permissions subtab.
Click the Add link at the top of the list of self-service ACIs.
Enter the name of the rule in the pop-up window. Spaces are allowed.
Select the checkboxes by the attributes which this ACI will permit users to edit.
Click the Add button to save the new self-service ACI.
15.2.2. Creating Self-Service Rules from the Command Line
A new self-service rule can be added using the selfservice-add command. There are two required options, --permissions to set whether the ACI grants write, add, or delete permission and --attrs to give the full list of attributes which this ACI grants permission to.
$ ipa selfservice-add "Users can manage their own name details" --permissions=write --attrs=givenname,displayname,title,initials
-----------------------------------------------------------
Added selfservice "Users can manage their own name details"
-----------------------------------------------------------
Self-service name: Users can manage their own name details
Permissions: write
Attributes: givenname, displayname, title, initials
15.2.3. Editing Self-Service Rules
In the self-service entry in the web UI, the only element that can be edited is the list of attributes that are included in the ACI. The checkboxes can be selected or deselected.
Figure 15.1. Self-Service Edit Page
With the command line, self-service rules are edited using the ipa selfservice-mod command. The --attrs option overwrites whatever the previous list of supported attributes was, so always include the complete list of attributes along with any new attributes.
$ ipa selfservice-mod "Users can manage their own name details" --attrs=givenname,displayname,title,initials,surname
--------------------------------------------------------------
Modified selfservice "Users can manage their own name details"
--------------------------------------------------------------
Self-service name: Users can manage their own name details
Permissions: write
Attributes: givenname, displayname, title, initials
IMPORTANT
Include all of the attributes when modifying a self-service rule, including existing ones.
15.3. Delegating Permissions over Users
Delegation is very similar to roles in that one group of users is assigned permission to manage the entries for another group of users. However, the delegated authority is much more similar to self-service rules in that complete access is granted but only to specific user attributes, not to the entire entry. Also, the groups in delegated authority are existing IPA user groups instead of roles specifically created for access controls.
15.3.1. Delegating Access to User Groups in the Web UI
Open the IPA Server tab in the top menu, and select the Delegations subtab.
Click the Add link at the top of the list of delegation ACIs.
Name the new delegation ACI.
In the User group drop-down menu, select the group whose entries can be edited by members of the delegation group.
In the Member user group drop-down menu, select the group who is being granted permissions to the entries of users in the user group.
In the attributes box, select the checkboxes by the attributes to which the member user group is being granted permission.
Click the Add button to save the new delegation ACI.
15.3.2. Delegating Access to User Groups in the Command Line
A new delegation access control rule is added using the delegation-add command. There are three required arguments:
--group, the group who is being granted permissions to the entries of users in the user group.
--membergroup, the group whose entries can be edited by members of the delegation group.
--attrs, the attributes which users in the member group are allowed to edit.
Delegation rules are edited using the delegation-mod command. The --attrs option overwrites whatever the previous list of supported attributes was, so always include the complete list of attributes along with any new attributes.
Include all of the attributes when modifying a delegation rule, including existing ones.
15.4. Defining Role-Based Access Controls
Role-based access control grants a very different kind of authority to users compared to self-service and delegation access controls. Role-based access controls are fundamentally administrative, with the potential to add, delete, and significantly modify entries.
There are three parts to role-based access controls:
The permission. The permission defines a specific operation or set of operations (write, add, or delete) and the target entries within the IPA LDAP directory to which those operations apply. Permissions are building blocks; they can be assigned to multiple privileges as needed.
The privileges available to a role. A privilege is essentially a group of permissions. Permissions are not applied directly to a role. Permissions are added to a privilege so that the privilege creates a coherent and complete picture of a set of access control rules. For example, a permission can be created to add, edit, and delete automount locations. Then that permission can be combined with another permission relating to managing FTP services, and they can be used to create a single privilege that relates to managing filesystems.
The role. This is the list of IPA users who are able to perform the actions defined in the privileges.
It is possible to create entirely new permissions, as well as to create new privileges based on existing permissions or new permissions. A list of the default privileges and their associated permissions are in Table 15.1, “Privileges and Permissions in IPA”.
NOTE
Identity Management does not provide a way to grant read access explicitly, and this is an important distinction from standard LDAP access control rules. In LDAP, all operations, including read, are implicitly denied and must be explicitly granted. In IPA, read and search access are implicitly granted to any authenticated user.
Because read access is already granted, there is no way through the UI to grant read access. However, there is an option in the CLI tools to grant read access for special cases where there may be a broad deny rule set but read access should be granted to specific attributes. For example, read access is blocked to password attributes, but could be allowed by a special read permission.
[a]
This permission can only be granted to servers, not to users.
15.4.1. Creating Roles
15.4.1.1. Creating Roles in the Web UI
Open the IPA Server tab in the top menu, and select the Role Based Access Control subtab.
Click the Add link at the top of the list of role-based ACIs.
Enter the role name and a description.
Click the Add and Edit button to save the new role and go to the configuration page.
Open the Privileges tab in the role configuration page.
Click the Enroll link at the top of the list of privileges to add a new privilege.
Enter the role name and a description.
15.4.1.2. Creating Roles in the Command Line
Add the new role:
# ipa role-add --desc="User Administrator" useradmin
------------------------
Added role "useradmin"
------------------------
Role name: useradmin
Description: User Administrator
Add the required privileges to the role:
# ipa role-add-privilege --privileges="User Administrators" useradmin
Role name: useradmin
Description: User Administrator
Privileges: user administrators
----------------------------
Number of privileges added 1
----------------------------
Add the required groups to the role. In this case, we are adding only a single group, useradmin, which already exists.
# ipa role-add-member --groups=useradmins useradmin
Role name: useradmin
Description: User Administrator
Member groups: useradmins
Privileges: user administrators
-------------------------
Number of members added 1
-------------------------
15.4.2. Creating New Permissions
NOTE
Identity Management does not provide a way to grant read access explicitly, and this is an important distinction from standard LDAP access control rules. In LDAP, all operations, including read, are implicitly denied and must be explicitly granted. In IPA, read and search access are implicitly granted to any authenticated user.
Because read access is already granted, there is no way through the UI to grant read access. However, there is an option in the CLI tools to grant read access for special cases where there may be a broad deny rule set but read access should be granted to specific attributes. For example, read access is blocked to password attributes, but could be allowed by a special read permission.
15.4.2.1. Creating New Permissions from the Web UI
Open the IPA Server tab in the top menu, and select the Role Based Access Control subtab.
Select the Permissions task link.
Click the Add link at the top of the list of permissions.
Enter the name of the new permission.
Select the checkboxes next to the allowed operations for this permission.
Select the method to use to identify the target entries from the Target drop-down menu. There are four different methods:
Type looks for an entry type like user, host, or service and then provides a list of all possible attributes for that entry type. The attributes which will be accessible through this ACI are selected from the list.
Filter uses an LDAP filter to identify which entries the permission applies to. All attributes within the matching entries can be modified.
Subtree targets every entry beneath the specified subtree entry. All attributes within the matching entries can be modified.
Target group specifies a user group, and all the user entries within that group are available through the ACI. All attributes within the matching entries can be modified.
Fill in the required information to identify the target entries, depending on the selected type.
Click the Add button to save the permission.
15.4.2.2. Creating New Permissions from the Command Line
A new permission is added using the permission-add command. All permissions require a list of allowed actions (--permissions), but the way that the target entries for the ACI are selected can be different. There are four options:
--type looks for an entry type like user, host, or service and then provides a list of all possible attributes for that entry type. The attributes which will be accessible through this ACI are selected from the list.
--filter uses an LDAP filter to identify which entries the permission applies to. All attributes within the matching entries can be modified.
--subtree targets every entry beneath the specified subtree entry. All attributes within the matching entries can be modified.
--targetgroup specifies a user group, and all the user entries within that group are available through the ACI. All attributes within the matching entries can be modified.
Example 15.1. Adding a Permission with a Filter
A filter can be any valid LDAP filter.
$ ipa permission-add "manage Windows groups" --filter="posixGroup=false" --permissions=write
NOTE
The permission-add command does not validate the given LDAP filter. Verify that the filter returns the expected results before configuring the permission.
Example 15.2. Adding a Permission for a Subtree
All a subtree filter requires is a DN within the directory. Since IPA uses a simplified, flat directory tree structure, this can be used to target some types of entries, like automount locations, which are containers or parent entries for other configuration.
Example 15.3. Adding a Permission Based on Object Type
There seven object types that can be used to form a permission:
user
group
host
service
hostgroup
netgroup
dnsrecord
Each type has its own set of allowed attributes, and the attributes which are managed by this permission are set with the --attrs option, in a comma-separated list.
The attributes (--attrs) must exist and be allowed attributes for the given object type, or the permission operation fails with schema syntax errors.
15.4.3. Creating New Privileges
15.4.3.1. Creating New Privileges from the Web UI
Open the IPA Server tab in the top menu, and select the Role Based Access Control subtab.
Select the Privileges task link.
Click the Add link at the top of the list of privileges.
Enter the name and a description of the privilege.
Click the Add and Edit button to go to the privilege configuration page to add permissions.
Select the Permissions tab.
Click the Enroll link at the top of the list of permissions to add permission to the privilege.
Click the checkbox by the names of the permissions to add, and click the right arrows button, >>, to move the permissions to the selection box.
Click the Enroll button.
15.4.3.2. Creating New Privileges from the Command Line
Privilege entries are created using the privilege-add command, and then permissions are added to the privilege group using the privilege-add-permission command.
The IPA servers and backend services are configured with default settings that are applicable in most environments.
There are some configuration areas where the IPA server configuration can be tweaked to improve security or performance in certain situations.
This chapter covers information about the IPA configuration, including files and logs used by the IPA server, and procedures for updating the IPA server configuration itself.
16.1. Identity Management Files and Logs
Identity Management is a unifying framework that combines disparate Linux services into a single management context. However, the underlying technologies — such as Kerberos, DNS, 389 Directory Server, and Dogtag Certificate System — retain their own configuration files and log files. Identity Management directly manages each of these elements through their own configuration files and tools.
This section covers the directories, files, and logs used specifically by IPA. For more information about the configuration files or logs for a specific server used within IPA, see the product documentation.
16.1.1. A Reference of IPA Server Configuration Files and Directories
Table 16.1. IPA Server Configuration Files and Directories
Directory or File
Description
Server Configuration
/etc/ipa
The main IPA configuration directory.
/etc/ipa/default.conf
The primary configuration file for IPA.
/etc/ipa/ca.crt
The CA certificate issued by the IPA server's CA.
~/.ipa/
A user-specific IPA directory that is created on the local system in the system user's home directory the first time the user runs an IPA command.
IPA Logs
~/.ipa/log/cli.log
The log file for all XML-RPC calls and responses by the IPA command-line tools. This is created in the home directory for the system user who runs the tools, who may have a different name than the IPA user.
/var/log/ipaclient-install.log
The installation log for the client service.
/var/log/ipaserver-install.log
The installation log for the IPA server.
System Services
/etc/rc.d/init.d/ipa
The IPA server init script.
/etc/rc.d/init.d/ipa_kpasswd
The init script for the IPA control daemon for Kerberos passwords.
/var/run/ipa_kpasswd.pid
The PID file for the Kerberos password daemon used by the IPA service.
Web UI
/etc/ipa/html
A symlink directory in the main configuration directory for the HTML files used by the IPA web UI.
/etc/httpd/conf.d/ipa.conf
/etc/httpd/conf.d/ipa-rewrite.conf
The configuration files used by the Apache host for the web UI application.
/etc/httpd/conf/ipa.keytab
The keytab file used by the web UI service.
/usr/share/ipa
The main directory for all of the HTML files, scripts, and stylesheets used by the web UI.
/usr/share/ipa/ipa-rewrite.conf
/usr/share/ipa/ipa.conf
The configuration files used by the Apache host for the web UI application.
/usr/share/ipa/updates
Contains any updated files, schema, and other elements for Identity Management.
/usr/share/ipa/html
Contains the HTML files, JavaScript files, and stylesheets used by the web UI.
/usr/share/ipa/ipaclient
Contains the JavaScript files used to access Firefox's autoconfiguration feature and set up the Firefox browser to work in the IPA Kerberos realm.
/usr/share/ipa/migration
Contains HTML pages, stylesheets, and Python scripts used for running the IPA server in migration mode.
/usr/share/ipa/ui
Contains all of the scripts used by the UI to perform IPA operations.
/var/log/httpd
The log files for the Apache web server.
Kerberos
/etc/krb5.conf
The Kerberos service configuration file.
SSSD
/etc/sssd/sssd.api.d/sssd-ipa.conf
The configuration file used to identify the IPA server, IPA Directory Server, and other IPA services used by SSSD.
/var/log/sssd
The log files for SSSD.
389 Directory Server
/var/lib/dirsrv/slapd-REALM_NAME
All of the schema, configuration, and database files associated with the Directory Server instance used by the IPA server.
/var/log/dirsrv/slapd-REALM_NAME
Log files associated with the Directory Server instance used by the IPA server.
Dogtag Certificate System
/etc/pki-ca
The main directory for the IPA CA instance.
/etc/pki-ca/conf/CS.cfg
The main configuration file for the IPA CA instance.
/var/lib/dirsrv/slapd-PKI-IPA/
All of the schema, configuration, and database files associated with the Directory Server instance used by the IPA CA.
/var/log/dirsrv/slapd-PKI-IPA/
Log files associated with the Directory Server instance used by the IPA CA.
Cache Files
/var/cache/ipa
Cache files for the IPA server and the IPA Kerberos password daemon.
System Backups
/var/lib/ipa/sysrestore
Contains backups of all of the system files and scripts that were reconfigured when the IPA server was installed. These include the original .conf files for NSS, Kerberos (both krb5.conf and kdc.conf), and NTP.
/var/lib/ipa-client/sysrestore
Contains backups of all of the system files and scripts that were reconfigured when the IPA client was installed. Commonly, this is the sssd.conf file for SSSD authentication services.
16.1.2. About default.conf and Context Configuration Files
Certain global defaults — like the realm information, the LDAP configuration, and the CA settings — are stored in the default.conf file. This configuration file is referenced when the IPA client and servers start and every time the ipa command is run to supply information as operations are performed.
The parameters in the default.conf file are simple attribute=value pairs. The attributes are case-insensitive and order-insensitive.
When adding more configuration attributes or overriding the global values, users can create additional context configuration files. A server.conf and cli.conf file can be created to create different options when the IPA server is started or when the ipa command is run, respectively. The IPA server checks the server.conf and cli.conf files first, and then checks the default.conf file.
Any configuration files in the /etc/ipa directory apply to all users for the system. Users can set individual overrides by creating default.conf, server.conf, or cli.conf files in their local IPA directory, ~/.ipa/. This optional file is merged with default.conf and used by the local IPA services.
16.1.3. Checking IPA Server Logs
Identity Management unifies several different Linux services, so it relies on those services' native logs for tracking and debugging those services.
The other services (Apache, 389 Directory Server, and Dogtag Certificate System) all have detailed logs and log levels. See the specific server documentation for more information on return codes, log formats, and log levels.
Table 16.2. IPA Log Files
Service
Log File
Description
Additional Information
IPA server
/var/log/ipaserver-install.log
Server installation log
IPA server
~/.ipa/log/cli.log
Command-line tool log
IPA client
/var/log/ipaclient-install.log
Client installation log
Apache server
/var/log/httpd/access
/var/log/httpd/error
These are standard access and error logs for Apache servers. Both the web UI and the XML-RPC command-line interface use Apache, so some IPA-specific messages will be recorded in the error log along with the Apache messages.
The access and error logs both contain detailed information about attempted access and operations for the domain Directory Server instance. The error log setting can be changed to provide very detailed output.
The access log is buffered, so the server only writes to the log every 30 seconds, by default.
This directory server instance is used by the IPA CA to store certificate information. Most operational data here will be related to server-replica interactions.
The access log is buffered, so the server only writes to the log every 30 seconds, by default.
This is the primary log file for Kerberos connections.
This location is configured in the krb5.conf file, so it could be different on some systems.
Kerberos
/var/log/krb5kdc.log
This is the primary log file for the Kerberos KDC server.
This location is configured in the krb5.conf file, so it could be different on some systems.
Kerberos
/var/log/kadmind.log
This is the primary log file for the Kerberos administration server.
This location is configured in the krb5.conf file, so it could be different on some systems.
DNS
/var/log/messages
DNS error messages are included with other system messages.
DNS logging is not enabled by default. DNS logging is enabled by running the querylog command:
/usr/sbin/rndc querylog
This begins writing log messages to the system's /var/log/messages file. To turn off logging, run the querylog command again.
16.1.3.1. Enabling Server Debug Logging
Debug logging for the IPA server is set in the server.conf file.
NOTE
Editing the defaults.conf configuration file affects all IPA components, not only the IPA server.
Edit or create the server.conf file.
vim server.conf
Add the debug line and set its value to true.
[global]
debug=True
Restart the Apache daemon to load the changes.
service httpd restart
16.1.3.2. Debugging Command-Line Operations
Any command-line operation with the ipa command can return debug information by using the -v option. For example:
$ ipa -v user-show admin
ipa: INFO: trying https://ipaserver.example.com/ipa/xml
First name: John
Last name: Smythe
User login [jsmythe]:
ipa: INFO: Forwarding 'user_add' to server u'https://ipaserver.example.com/ipa/xml'
--------------------
Added user "jsmythe"
--------------------
User login: jsmythe
First name: John
Last name: Smythe
Full name: John Smythe
Display name: John Smythe
Initials: JS
Home directory: /home/jsmythe
GECOS field: John Smythe
Login shell: /bin/sh
Kerberos principal: jsmythe@EXAMPLE.COM
UID: 1966800003
GID: 1966800003
Keytab: False
Password: False
Using the option twice, -vv, displays the XML-RPC exchange:
$ ipa -vv user-add
ipa: INFO: trying https://ipaserver.example.com/ipa/xml
First name: Jane
Last name: Russell
User login [jrussell]:
ipa: INFO: Forwarding 'user_add' to server u'https://ipaserver.example.com/ipa/xml'
send: u'POST /ipa/xml HTTP/1.0\r\nHost: ipaserver.example.com\r\nAccept-Language: en-us\r\nAuthorization: negotiate YIIFgQYJKoZIhvcSAQICAQBuggVwMIIFbKADAgEFoQMCAQ6iBwMFACAAAACjggGHYYIBgzCCAX+gAwIBBaEZGxdSSFRTLkVORy5CT1MuUkVESEFULkNPTaI5MDegAwIBA6EwMC4bBEhUVFAbJmRlbGwtcGUxODUwLTAxLnJodHMuZW5nLmJvcy5yZWRoYXQuY29to4IBIDCCARygAwIBEqEDAgECooIBDgSCAQpV2YEWv03X+SENdUBfOhMFGc3Fvnd51nELV0rIB1tfGVjpNlkuQxXKSfFKVD3vyAUqkii255T0mnXyTwayE93W1U4sOshetmG50zeU4KDmhuupzQZSCb5xB0KPU4HMDvP1UnDFJUGCk9tcqDJiYE+lJrEcz8H+Vxvvl+nP6yIdUQKqoEuNhJaLWIiT8ieAzk8zvmDlDzpFYtInGWe9D5ko1Bb7Npu0SEpdVJB2gnB5vszCIdLlzHM4JUqX8p21AZV0UYA6QZOWX9OXhqHdElKcuHCN2s9FBRoFYK83gf1voS7xSFlzZaFsEGHNmdA0qXbzREKGqUr8fmWmNvBGpDiR2ILQep09lL56JqSCA8owggPGoAMCARKiggO9BIIDuarbB67zjmBu9Ax2K+0klSD99pNv97h9yxol8c6NGLB4CmE8Mo39rL4MMXHeOS0OCbn+TD97XVGLu+cgkfVcuIG4PMMBoajuSnPmIf7qDvfa8IYDFlDDnRB7I//IXtCc/Z4rBbaxk0SMIRLrsKf5wha7aWtN1JbizBMQw+J0UlN8JjsWxu0Ls75hBtIDbPf3fva3vwBf7kTBChBsheewSAlck9qUglyNxAODgFVvRrXbfkw51Uo++9qHnhh+zFSWepfv7US7RYK0KxOKFd+uauY1ES+xlnMvK18ap2pcy0odBkKu1kwJDND0JXUdSY08MxK2zb/UGWrVEf6GIsBgu122UGiHp6C+0fEu+nRrvtORY65Bgi8E1vm55fbb/9dQWNcQheL9m6QJWPw0rgc+E5SO99ON6x3Vv2+Zk17EmbZXinPd2tDe7fJ9cS9o/z7Qjw8z8vvSzHL4GX7FKi2HJdBST3nEgOC8PqO46UnAJcA8pf1ZkwCK9xDWH+5PSph6WnvpRqugqf/6cq+3jk3MEjCrx+JBJ8QL6AgN3oEB4kvjZpAC+FfTkdX59VLDwfL/r0gMw3ZNk0nLLCLkiiYUMTEHZBzJw9kFbsX3LmS8qQQA6rQ2L782DYisElywfZ/0Sax8JO/G62Zvy7BHy7SQSGIvcdAOafeNyfxaWM1vTpvSh0GrnllYfs3FhZAKnVcLYrlPTapR23uLgRMv+0c9wAbwuUDfKgOOl5vAd1j55VUyapgDEzi/URsLdVdcF4zigt4KrTByCwU2/pI6FmEPqB2tsjM2A8JmqA+9Nt8bjaNdNwCOWE0dF50zeL9P8oodWGkbRZLk4DLIurpCW1d6IyTBhPQ5qZqHJWeoGiFa5y94zBpp27goMPmE0BskXT0JQmveYflOeKEMSzyiWPL2mwi7KEMtfgCpwTIGP2LRE/QxNvPGkwFfO+PDjZGVw+APKkMKqclVXxhtJA/2NmBrO1pZIIJ9R+41sR/QoACcXIUXJnhrTwwR1viKCB5Tec87gN+e0Cf0g+fmZuXNRscwJfhYQJYwJqdYzGtZW+h8jDWqa2EPcDwIQwyFAgXNQ/aMvh1yNTECpLEgrMhYmFAUDLQzI2BDnfbDftIs0rXjSC0oZn/Uaoqdr4F5syOrYAxH47bS6MW8CxyylreH8nT2qQXjenakLFHcNjt4M1nOc/igzNSeZ28qW9WSr4bCdkH+ra3BVpT/AF0WHWkxGF4vWr/iNHCjq8fLF+DsAEx0Zs696Rg0fWZy079A\r\nUser-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com)\r\nContent-Type: text/xml\r\nContent-Length: 1240\r\n\r\n'
send: "<?xml version='1.0' encoding='UTF-8'?>\n<methodCall>\n<methodName>user_add</methodName>\n<params>\n<param>\n<value><array><data>\n<value><string>jrussell</string></value>\n</data></array></value>\n</param>\n<param>\n<value><struct>\n<member>\n<name>all</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>displayname</name>\n<value><string>Jane Russell</string></value>\n</member>\n<member>\n<name>cn</name>\n<value><string>Jane Russell</string></value>\n</member>\n<member>\n<name>noprivate</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>uidnumber</name>\n<value><int>999</int></value>\n</member>\n<member>\n<name>raw</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>version</name>\n<value><string>2.11</string></value>\n</member>\n<member>\n<name>gecos</name>\n<value><string>Jane Russell</string></value>\n</member>\n<member>\n<name>sn</name>\n<value><string>Russell</string></value>\n</member>\n<member>\n<name>krbprincipalname</name>\n<value><string>jrussell@EXAMPLE.COM</string></value>\n</member>\n<member>\n<name>givenname</name>\n<value><string>Jane</string></value>\n</member>\n<member>\n<name>initials</name>\n<value><string>JR</string></value>\n</member>\n</struct></value>\n</param>\n</params>\n</methodCall>\n"
reply: 'HTTP/1.1 200 OK\r\n'
header: Date: Thu, 15 Sep 2011 00:50:39 GMT
header: Server: Apache/2.2.15 (Red Hat)
header: WWW-Authenticate: Negotiate YIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvVl5x6Zt9PbWNzvPEWkdu+3PTCq/ZVKjGHM+1zDBz81GL/f+/Pr75zTuveLYn9de0C3k27vz96fn2HQsy9qVH7sfqn0RWGQWzl+kDkuD6bJ/Dp/mpJvicW5gSkCSH6/UCNuE4I0xqwabLIz8MM/5o
header: Connection: close
header: Content-Type: text/xml; charset=utf-8
body: "<?xml version='1.0' encoding='UTF-8'?>\n<methodResponse>\n<params>\n<param>\n<value><struct>\n<member>\n<name>result</name>\n<value><struct>\n<member>\n<name>dn</name>\n<value><string>uid=jrussell,cn=users,cn=accounts,dc=example,dc=com</string></value>\n</member>\n<member>\n<name>has_keytab</name>\n<value><boolean>0</boolean></value>\n</member>\n<member>\n<name>displayname</name>\n<value><array><data>\n<value><string>Jane Russell</string></value>\n</data></array></value>\n</member>\n<member>\n<name>uid</name>\n<value><array><data>\n<value><string>jrussell</string></value>\n</data></array></value>\n</member>\n<member>\n<name>objectclass</name>\n<value><array><data>\n<value><string>top</string></value>\n<value><string>person</string></value>\n<value><string>organizationalperson</string></value>\n<value><string>inetorgperson</string></value>\n<value><string>inetuser</string></value>\n<value><string>posixaccount</string></value>\n<value><string>krbprincipalaux</string></value>\n<value><string>krbticketpolicyaux</string></value>\n<"
body: 'value><string>ipaobject</string></value>\n</data></array></value>\n</member>\n<member>\n<name>loginshell</name>\n<value><array><data>\n<value><string>/bin/sh</string></value>\n</data></array></value>\n</member>\n<member>\n<name>uidnumber</name>\n<value><array><data>\n<value><string>1966800004</string></value>\n</data></array></value>\n</member>\n<member>\n<name>initials</name>\n<value><array><data>\n<value><string>JR</string></value>\n</data></array></value>\n</member>\n<member>\n<name>gidnumber</name>\n<value><array><data>\n<value><string>1966800004</string></value>\n</data></array></value>\n</member>\n<member>\n<name>gecos</name>\n<value><array><data>\n<value><string>Jane Russell</string></value>\n</data></array></value>\n</member>\n<member>\n<name>sn</name>\n<value><array><data>\n<value><string>Russell</string></value>\n</data></array></value>\n</member>\n<member>\n<name>homedirectory</name>\n<value><array><data>\n<value><string>/home/jrussell</string></value>\n</data></array></value>\n</member>\n<member>\n<name>has_password</name>\n<value><boolean>0</'
body: 'boolean></value>\n</member>\n<member>\n<name>krbprincipalname</name>\n<value><array><data>\n<value><string>jrussell@EXAMPLE.COM</string></value>\n</data></array></value>\n</member>\n<member>\n<name>givenname</name>\n<value><array><data>\n<value><string>Jane</string></value>\n</data></array></value>\n</member>\n<member>\n<name>cn</name>\n<value><array><data>\n<value><string>Jane Russell</string></value>\n</data></array></value>\n</member>\n<member>\n<name>ipauniqueid</name>\n<value><array><data>\n<value><string>bba27e6e-df34-11e0-a5f4-001143d2c060</string></value>\n</data></array></value>\n</member>\n</struct></value>\n</member>\n<member>\n<name>value</name>\n<value><string>jrussell</string></value>\n</member>\n<member>\n<name>summary</name>\n<value><string>Added user "jrussell"</string></value>\n</member>\n</struct></value>\n</param>\n</params>\n</methodResponse>\n'
---------------------
Added user "jrussell"
---------------------
User login: jrussell
First name: Jane
Last name: Russell
Full name: Jane Russell
Display name: Jane Russell
Initials: JR
Home directory: /home/jrussell
GECOS field: Jane Russell
Login shell: /bin/sh
Kerberos principal: jrussell@EXAMPLE.COM
UID: 1966800004
GID: 1966800004
Keytab: False
Password: False
IMPORTANT
The -v and -vv options are global options and must be used before the subcommand when running ipa.
16.2. Disabling Anonymous Binds
Accessing domain resources and running client tools always require Kerberos authentication. However, the backend LDAP directory used by the IPA server allows anonymous binds by default. This potentially opens up all of the domain configuration to unauthorized users, including information about users, machines, groups, services, netgroups, and DNS configuration.
It is possible to disable anonymous binds on the 389 Directory Server instance by using LDAP tools to reset the nsslapd-allow-anonymous-access attribute.
Change the nsslapd-allow-anonymous-access attribute to off.
IPA creates a Dogtag Certificate System certificate authority (CA) during the server installation process. To use an external CA, it is possible to create the required server certificates and then import them into the 389 Directory Server and the HTTP server, which require IPA server certificates.
TIP
Save an ASCII copy of the CA certificate as /usr/share/ipa/html/ca.crt. This allows users to download the correct certificate when they configure their browsers.
Use the ipa-server-certinstall command to install the certificate.
A certificate is created with a validity period, meaning it has a point where it expires and is no longer valid. The expiration date is contained in the certificate itself, so a client always checks the validity period in the certificate to see if the certificate is still valid.
However, a certificate can also be revoked before its validity period is up, but this information is not contained in the certificate. A CA publishes a certificate revocation list (CRL), which contains a complete list of every certificate that was issued by that CA and subsequently revoked. A client can check the CRL to see if a certificate within its validity period has been revoked and is, therefore, invalid.
Validity checks are performed using the online certificate status protocol (OCSP), which sends a request to an OCSP responder. Each CA integrated with the IPA server uses an internal OCSP responder, and any client which runs a validity check can check the IPA CA's internal OCSP responder.
Every certificate issued by the IPA CA puts its OCSP responder service URL in the certificate. For example:
http://ipaserver.example.com:9180/ca/ocsp
NOTE
For the IPA OCSP responder to be available, port 9180 needs to be open in the firewall.
16.4.1. Using an OSCP Responder with SELinux
Clients can use the Identity Management OCSP responder to check certificate validity or to retrieve CRLs. A client can be a number of different service, but is most frequently an Apache server and the mod_revocator module (which handles CRL and OCSP operations).
The Identity Management CA has an OCSP responder listening over port 9180, which is also the port available for CRL retrieval. This port is protected by default SELinux policies to prevent unauthorized access. If an Apache server attempts to connect to the OCSP port, then it may be denied access by SELinux.
The Apache server, on the local machine, must be granted access to port 9180 for it to be able to connect to the Identity Management OCSP responder. There are two ways to work around this by changing the SELinux policies:
Edit the SELinux policy to allow Apache servers using the mod_revocator module to connect to port 9180:
semodule -i revoker.pp
Generate a new SELinux policy to allow access based on the SELinux error logs for the mod_revocator connection attempt.
audit2allow -a -M revoker
16.4.2. Changing the CRL Update Interval
The CRL file is automatically generated by the Dogtag Certificate System CA every four hours. This interval can be changed by editing the Dogtag Certificate System configuration.
Stop the CA server.
service pki-ca stop
Open the CS.cfg file.
vim /etc/pki-ca/CS.cfg
Change the ca.crl.MasterCRL.autoUpdateInterval to the new interval setting.
Restart the CA server.
service pki-ca start
16.4.3. Changing the OCSP Responder Location
Each IPA server generates its own CRL. Likewise, each IPA server uses its own OCSP responder, with its own OCSP responder URL in the certificates it issues.
A DNS CNAME can be used by IPA clients, and then from there be redirected to the appropriate IPA server OCSP responder.
Open the certificate profile.
vim /var/lib/pki-ca/profiles/ca/caIPAserviceCert.cfg
Change the policyset.serverCertSet.9.default.params.crlDistPointsPointName_0 parameter to the DNS CNAME hostname.
Restart the CA server.
service pki-ca restart
That change must be made on every IPA server, with the crlDistPointsPointName_0 parameter set to the same hostname.
16.5. Setting an IPA Server as an Apache Virtual Host
If a standard Apache instance is already running on port 80, then the IPA server can be configured to run on a secondary port, such as port 8089.
NOTE
In this configuration, IPA uses standard HTTP, not a secure connection using SSL.
NOTE
Do not use port 8080. This port is used by the IPA web UI.
Log in as the root user.
Edit the /etc/httpd/conf.d/ipa.conf file so that it is formatted as an Apache virtual host. Add three lines to the beginning of the file to set the new port number for the IPA web service and to create the root <VirtualHost> element.
Close the <VirtualHost> element by adding this line to the end of the file:
</VirtualHost>
Comment out the rewrite rules from the /etc/httpd/conf.d/ipa.conf file:
----------------------------------------------------------------------
# Redirect to the fully-qualified hostname. Not redirecting to secure
# port so configuration files can be retrieved without requiring SSL.
RewriteCond %{HTTP_HOST} !^host.foo.com$ [NC]
RewriteRule ^/(.*) http://host.foo.com/$1 [L,R=301]
# Redirect to the secure port if not displaying an error or retrieving
# configuration.
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/(errors|config|favicon.ico)
RewriteRule ^/(.*) https://host.foo.com/$1 [L,R=301,NC]
---------------------------------------------------------------------
Restart the httpd service.
# service httpd reload
16.6. Setting DNS Entries for Multi-Homed Servers
Some server machines may support multiple network interface cards (NICs). Multi-homed machines typically have multiple IPs, all assigned to the same hostname. This works fine in IPA most of the time because it listens on all available interfaces, except localhost. For a server to be available through any NIC, edit the DNS zone file and add entries for each IP address. For example:
ipaserver IN A 192.168.1.100
ipaserver IN A 192.168.1.101
ipaserver IN A 192.168.1.102
16.7. Managing Replication Agreements Between IPA Servers
Information is shared between the IPA servers and replicas using multi-master replication. What this means is that servers and replicas all receive updates and, therefore, are data masters. The domain information is copied between the servers and replicas using replication.
As replicas are added to the domain, mutual replication agreements are automatically created between the replica and the server it is based on. Additional replication agreements can be created between other replicas and servers or the configuration of the replication agreement can be changed using the ipa-replica-manage command.
When a replica is created, the replica install script creates two replication agreements: one going from the master server to the replica and one going from the replica to the master server.
Figure 16.1. Server and Replica Agreements
As more replicas and servers are added to the domain, there can be replicas and servers that have replication agreements to other servers and replicas but not between each other. For example, the first IPA server is Server A. Then, the admin creates Replica B, and the install script creates a Server A => Replica B replication agreement and a Replica B => Server A replication agreement. Next, the admin creates Replica C based on Server A. The install script creates a Server A => Replica C replication agreement and a Replica C => Server A replication agreement. Replica B and Replica C both have replication agreements with Server A — but they do not have agreements with each other. For data availability, consistency, failover tolerance, and performance, it can be beneficial to create a pair of replication agreements between Replica B and Replica C, even though their data will eventually be replicated over to each other through replication with Server A.
16.7.1. Listing Replication Agreements
The ipa-replica-manage command can list all of the servers and replicas in the replication topology, using the list command:
# ipa-replica-manage list
srv1.example.com
srv2.example.com
srv3.example.com
srv4.example.com
After getting the server/replica list, then it is possible to list the replication agreements for the server. These are the other servers/replicas to which the specified server sends updates.
# ipa-replica-manage list srv1.example.com
srv2.example.com
srv3.example.com
16.7.2. Creating and Removing Replication Agreements
Replication agreements are created by connecting one server to another server.
ipa-replica-manage server1 server2
If only one server is given, the replication agreements are created between the local host and the specified server.
Replication occurs over standard LDAP; to enable SSL, then include the CA certificate for the local host (or the specified server1). The CA certificate is then installed in the remote server's certificate database to enable TLS/SSL connections. For example:
Using the disconnect command removes that one replication agreement but leaves both the server/replica instances in the overall replication topology. To remove a server entirely from the IPA replication topology, with all its data, (and, functionally, removing it from the IPA domain as a server), use the del server:
# ipa replica-manage del srv2.example.com
16.7.3. Forcing Replication
Replication between servers and replicas occurs on a schedule. Although replication is frequent, there can be times when it is necessary to initiate the replication operation manually. For example, if a server is being taken offline for maintenance, it is necessary to flush all of the queued replication changes out of its changelog before taking it down.
To initiate a replication update manually, use the force-sync command. The server which receives the update is the local server; the server which sends the updates is specified in the --from option.
When a replica is first created, the database of the master server is copied, completely, over to the replica database. This process is called initialization. If a server/replica is offline for a long period of time or there is some kind of corruption in its database, then the server can be re-initialized, with a fresh and updated set of data.
This is done using the re-initialize command. The target server being initialized is the local host. The server or replica from which to pull the data to initialize the local database is specified in the --from option:
The only difference between a replica and the master server is that the master owns the master CA in the PKI hierarchy. The replica database is cloned (or copied) from that master database.
This means that it is possible to change a replica server to a master server by changing its CA configuration and promoting the cloned database to be a master database.
16.8.1. Promoting a Replica with a Dogtag Certificate System CA
On the replica server, stop the CA server.
service pki-ca stop
Open the CA's configuration directory.
cd /var/lib/pki-ca/conf
Edit the CS.cfg file to configure the replica's CA as a master.
Delete each line which begins with the ca.crl. prefix.
Copy each line beginning with the ca.crl. prefix from the CA CS.cfg file on the master server into the replica server's CA CS.cfg file.
Enable control of the database maintenance thread; the default value for a master CA is 600.
ca.certStatusUpdateInterval=600
Enable monitoring database replication:
ca.listenToCloneModifications=true
Enable maintenance of the CRL cache:
ca.crl.IssuingPointId.enableCRLCache=true
Enable CRL generation:
ca.crl.IssuingPointId.enableCRLUpdates=true
Disable the redirect settings for CRL generation requests:
master.ca.agent.host=hostname
master.ca.agent.port=port number
Start the CA server.
service pki-ca start
16.8.2. Promoting a Replica with a Self-Signed CA
Copy the /var/lib/ipa/ca_serialno file from the master server to the replica.
Import the CA certificate into the replica 389 Directory Server NSS database:
# cd /etc/dirsrv/slapd-REALM
# pk12util -i /path/to/cacert.p12 -d .
The password on the PKCS#12 file is stored as /etc/dirsrv/slapd-REALM/pwdfile.txt on the original server.
Delete the existing replication agreements between the replica and master server:
# ipa-replica-manage del master.example.com
This results in two identical IPA servers which are unaware of one another. The old master server can be shut down and replaced with the other server without affecting the domain.
16.9. Testing Before Upgrading the IPA Server
It can be beneficial, and safer, to test newer versions of Identity Management before upgrading production systems. There is a relatively simple way to do this by creating a sacrificial replica (which is a read-write server) and testing on that system.
Set up a replica based on one of the production servers, with the same version of IPA as is running in production, as described in Section 2.5, “Setting up IPA Replicas”. For this example, this is called Test Replica. Make sure that Test Replica can successfully connect to the production server and domain.
After verifying that Test Replica has been successfully added to the production domain, disconnect Test Replica from the network.
Remove the replication agreements for Test Replica from the original IPA server and from Test Replica.
Reconnect Test Replica to the network.
Upgrade the packages on Test Replica using yum or whatever package update tool is appropriate for your system. For example:
# yum update ipa*
Test common things on Test Replica, like getting Kerberos credentials, opening the server UI, and running commands.
Chapter 17. Migrating from an LDAP Directory to IPA
When an infrastructure has previously deployed an LDAP server for authentication and identity lookups, it is possible to migrate the user data, including passwords, to a new Identity Management instance, without losing user or password data.
Identity Management has migration tools to help move directory data and only requires minimal updates to clients. However, the migration process assumes a simple deployment scenario (one LDAP namespace to one IPA namespace). For more complex environments, such as ones with multiple namespaces or custom schema, contact Red Hat support services for assistance.
17.1. An Overview of LDAP to IPA Migration
The actual migration part of moving from an LDAP server to Identity Management — the process of moving the data from one server to the other — is fairly straightforward. The process is simple: move data, move passwords, and move clients.
The crucial part of migration is not data migration; it is deciding how clients are going to be configured to use Identity Management. For each client in the infrastructure, you need to decide what services (such as Kerberos and SSSD) are being used and what services can be used in the final, IPA deployment.
A secondary, but significant, consideration is planning how to migrate passwords. Identity Management requires Kerberos hashes for every user account in addition to passwords. Some of the considerations and migration paths for passwords are covered in Section 17.1.2, “Planning Password Migration”.
17.1.1. Planning the Client Configuration
Identity Management can support a number of different client configurations, with varying degrees of functionality, flexibility, and security. Decide which configuration is best for each individual client based on its operating system, functional area (such as development machines, production servers, or user laptops), and your IT maintenance priorities.
IMPORTANT
The different client configurations are not mutually exclusive. Most environments will have a mix of different ways that clients use to connect to the IPA domain. Administrators must decide which scenario is best for each individual client.
Before deciding where you want to go with the client configuration in Identity Management, first establish where you are before the migration.
The initial state for almost all LDAP deployments that will be migrated is that there is an LDAP service providing identity and authentication services.
Figure 17.1. Basic LDAP Directory and Client Configuration
Linux and Unix clients use PAM_LDAP and NSS_LDAP libraries to connect directly to the LDAP services. These libraries allow clients to retrieve user information from the LDAP directory as if the data were stored in /etc/passwd or /etc/shadow. (In real life, the infrastructure may be more complex if a client uses LDAP for identity lookups and Kerberos for authentication or other configurations.)
There are structural differences between an LDAP directory and an IPA server, particularly in schema support and the structure of the directory tree. (For more background on those differences, see Section 1.1, “IPA v. LDAP: A More Focused Type of Service”.) While those differences may impact data (especially with the directory tree, which affects entry names), they have little impact on the client configuration, so it really has little impact on migrating clients to Identity Management.
17.1.1.2. Recommended Configuration for Red Hat Enterprise Linux Clients
Red Hat Enterprise Linux has a service called the System Security Services Daemon (SSSD). SSSD uses special PAM and NSS libraries (pam_sss and nss_sss, respectively) which allow SSSD to be integrated very closely with Identity Management and leverage the full authentication and identity featurea in Identity Management. SSSD has a number of useful features, like caching identity information so that users can log in even if the connection is lost to the central server; these are described in the Red Hat Enterprise Linux Deployment Guide.
Unlike generic LDAP directory services (using pam_ldap and nss_ldap), SSSD establishes relationships between identity and authentication information by defining domains. A domain in SSSD defines four backend functions: authentication, identity lookups, access, and password changes. The SSSD domain is then configured to use an identity provider to supply the information for any one (or all) of those four functions.
SSSD can use Identity Management for all of its backend functions. This is the ideal configuration because it provides the full range of Identity Management functionality, unlike generic LDAP identity providers or Kerberos authentication. For example, during daily operation, SSSD enforces host-based access control rules and security features in Identity Management.
TIP
During the migration process from an LDAP directory to Identity Management, SSSD can seamlessly migrate user passwords without additional user interaction.
Figure 17.2. Clients and SSSD with an IPA Backend
The ipa-client-install script automatically configured SSSD to use IPA for all four of its backend services, so Red Hat Enterprise Linux clients are set up with the recommended configuration by default.
NOTE
This client configuration is only supported for Red Hat Enterprise Linux 6.1 and later and Red Hat Enterprise Linux 5.7 later, which support the latest versions of SSSD and ipa-client. Older versions of Red Hat Enterprise Linux can be configured as described in Section 17.1.1.3, “Alternative Supported Configuration”.
17.1.1.3. Alternative Supported Configuration
Unix and Linux systems such as Mac, Solaris, HP-UX, AIX, and Scientific Linux support all of the services that IPA manages but do not use SSSD. Likewise, older Red Hat Enterprise Linux versions (6.1 and 5.6) support SSSD but have an older version, which does not support IPA as an identity provider.
When it is not possible to use a modern version of SSSD on a system, then clients can be configured to connect to the IPA server as if it were an LDAP directory service for identity lookups (using nss_ldap) and to IPA as if it were a regular Kerberos KDC (using pam_krb5).
Figure 17.3. Clients and IPA with LDAP and Kerberos
If a Red Hat Enterprise Linux client is using an older version of SSSD, SSSD can still be configured to use the IPA server as its identity provider and its Kerbero authentication domain; this is described in the SSSD configuration section of the Red Hat Enterprise Linux Deployment Guide.
Any IPA domain client can be configured to use nss_ldap and pam_krb5 to connect to the IPA server. For some maintenance situations and IT structures, a scenario that fits the lowest common denominator may be required, using LDAP for both identity and authentication (nss_ldap and pam_ldap). However, it is generally best practice to use the most secure configuration possible for a client (meaning SSSD and Kerberos or LDAP and Kerberos).
17.1.2. Planning Password Migration
Probably the most visible issue that can impact LDAP-to-Identity Management migration is migrating user passwords.
Identity Management (by default) uses Kerberos for authentication and requires that each user have Kerberos hashes stored in the Identity Management Directory Server in addition to the standard user passwords. To generate these hashes, the user password needs to be available to the IPA server in cleartext. This is the case when the user is created in Identity Management. However, when the user is migrated from an LDAP directory, the associated user password is already hashed, so the corresponding Kerberos key cannot be generated.
IMPORTANT
Users cannot authenticate to the IPA domain or access IPA resources until they have Kerberos hashes.
If a user does not have a Kerberos hash[2], that user cannot log into the IPA domain even if he has a user account. There are three options for migrating passwords: forcing a password change, using a web page, and using SSSD.
Migrating users from an existing system provides a smoother transition but also requires parallel management of LDAP directory and IPA during the migration and transition process. If you do not preserve passwords, the migration can be performed more quickly but it requires more manual work by administrators and users.
Resetting Passwords and Forcing a Change
When passwords are changed in Identity Management, they will be created with the appropriate Kerberos hashes. So one alternative for administrators is to force users to change their passwords by resetting all user passwords when user accounts are migrated. (This can also be done simply by re-creating the LDAP directory accounts in IPA, which automatically creates accounts with the appropriate keys.) The new users are assigned a temporary password which they change at the first login. No passwords are migrated.
Using the Migration Web Page
When it is running in migration mode, Identity Management has a special web page in its web UI that will capture a cleartext password and create the appropriate Kerberos hash. Administrators could tell users to authenticate once to this web page, which would properly update their user accounts with their password and corresponding Kerberos hash, without requiring password changes.
Using SSSD
SSSD can work with IPA to mitigate the user impact on migrating by generating the required user keys. For deployments with a lot of users or where users shouldn't be burdened with password changes, this is the best scenario.
A user tries to log into a machine with SSSD.
SSSD attempts to perform Kerberos authentication against the IPA server.
Even though the user exists in the system, the authentication will fail with the error key type is not supported because the Kerberos hashes do not yet exist.
SSSD the performs a plaintext LDAP bind over a secure connection.
IPA intercepts this bind request. If the user has a Kerberos principal but no Kerberos hashes, then the IPA identity provider generates the hashes and stores them in the user entry.
If authentication is successful, SSSD disconnects from IPA and tries Kerberos authentication again. This time, the request succeeds because the hash exists in the entry.
That entire process is entirely transparent to the user; as far as users known, they simply log into a client service and it works as normal.
17.1.3. Migration Considerations and Requirements
As you are planning migrating from an LDAP server to Identity Management, make sure that your LDAP environment is able to work with the Identity Management migration script.
17.1.3.1. LDAP Servers Supported for Migration
The migration process from an LDAP server to Identity Management uses a special script, ipa migrate-ds, to perform the migration. This script has certain expectations about the structure of the LDAP directory and LDAP entries in order to work. Migration is supported only for LDAPv3-compliant directory services, which include several common directories:
SunONE Directory Server
Apache Directory Server
OpenLDAP
Migration from an LDAP server to Identity Management has been tested with Red Hat Directory Server.
NOTE
Migration using the migration script is not supported for Microsoft Active Directory because it is not an LDAPv3-compliant directory. For assistance with migrating from Active Directory, contact Red Hat Professional Services.
17.1.3.2. Migration Environment Requirements
There are many different possible configuration scenarios for both Red Hat Directory Server and Identity Management, and any of those scenarios may affect the migration process. For the example migration procedures in this chapter, these are the assumptions about the environment:
A single LDAP directory domain is being migrated to one IPA realm. No consolidation is involved.
User passwords are stored as a hash in the LDAP directory that the IPA Directory Server can support.
The LDAP directory instance is both the identity store and the authentication method. Client machines are configured to use pam_ldap or nss_ldap to connect to the LDAP server.
Entries use only standard LDAP schema. Custom attributes will not be migrated to Identity Management.
17.1.3.3. Migration Tools
Identity Management uses a specific command, ipa migrate-ds, to drive the migration process so that LDAP directory data are properly formatted and imported cleanly into the IPA server.
The Identity Management server must be configured to run in migration mode, and then the migration script can be used.
17.1.3.4. Migration Sequence
There are four major steps when migrating to Identity Management, but the order varies slightly depending on whether you want to migrate the server first or the clients first.
With a client-based migration, SSSD is used to change the client configuration while an IPA server is configured:
Deploy SSSD.
Reconfigure clients to connect to the current LDAP server and then fail over to IPA.
Install the IPA server.
Migrate the user data using the IPA ipa-migrate-ds script. This exports the data from the LDAP directory, formats for the IPA schema, and then imports it into IPA.
Take the LDAP server offline and allow clients to fail over to Identity Management transparently.
With a server migration, the LDAP to Identity Management migration comes first:
Install the IPA server.
Migrate the user data using the IPA ipa-migrate-ds script. This exports the data from the LDAP directory, formats it for the IPA schema, and then imports it into IPA.
Optional. Deploy SSSD.
Reconfigure clients to connect to IPA. It is not possible to simply replace the LDAP server. The IPA directory tree — and therefore user entry DNs — is different than the previous directory tree.
While it is required that clients be reconfigured, clients do not need to be reconfigured immediately. Updated clients can point to the IPA server while other clients point to the old LDAP directory, allowing a reasonable testing and transition phase after the data are migrated.
NOTE
Do not run both an LDAP directory service and the IPA server for very long in parallel. This introduces the risk of user data being inconsistent between the two services.
Both processes provide a general migration procedure, but it may not work in every environment. Set up a test LDAP environment and test the migration process before attempting to migrate the real LDAP environment.
17.2. Scenario 1: Using SSSD as Part of Migration
IMPORTANT
This is a general migration procedure, but it may not work in every environment.
It is strongly recommended that you set up a test LDAP environment and test the migration process before attempting to migrate the real LDAP environment.
Set up SSSD. Using SSSD allows the required Kerberos keys and server certificates to be delivered to the clients.
Install SSSD on every client machine:
# yum install sssd
Configure an LDAP identity provider in SSSD to use the existing Directory Server for all functions (authentication, identity lookups, access, and password changes). This ensures every client works properly with the existing directory service.
Install Identity Management, including any custom LDAP directory schema[3], on a different machine from the existing LDAP directory.
Enable the IPA server to allow migration:
# ipa config-mod --enable-migration=TRUE
Run the IPA migration script, ipa migrate-ds. At its most basic, this requires only the LDAP URL of the LDAP directory instance to migrate:
# ipa migrate-ds ldap://ldap.example.com:389
The ipa migrate-ds command connects to the LDAP directory and binds as the Directory Manager and extracts all entries with the person object class from the ou=People subtree, by default. A different subtree can be specified using the --user-container option.
This script also exports all entries from the ou=Groups subtree to maintain group memberships. The group can be changed using the --group-container option.
Once the information is exported, the script adds all required IPA object classes and attributes and coverts DNs in attributes to match the IPA directory tree.
Move clients that have SSSD installed from the LDAP backend to the Identity Management backend and enroll them as client with IPA. This downloads the required keys and certificates.
On Red Hat Enterprise Linux clients, this can be done using the ipa-client-install command. For example:
# ipa-client-install --enable-dns-updates
Have users log into a machine with SSSD and Identity Management backend. This generates the required Kerberos keys for the user.
To monitor the user migration process, query the existing LDAP directory to see which user accounts have a password but do not yet have a Kerberos principal key.
Include the quotes around the filter so that it is not interpreted by the shell.
Once users have been migrated over, configure non-SSSD clients to use the IPA domain, as required.
When the migration of all clients and users is complete, decommission the LDAP directory.
17.3. Scenario 2: Migrating an LDAP Server Directly to Identity Management
IMPORTANT
This is a general migration procedure, but it may not work in every environment.
It is strongly recommended that you set up a test LDAP environment and test the migration process before attempting to migrate the real LDAP environment.
Install the IPA server, including any custom LDAP directory schema[4], on a different machine from the existing LDAP directory.
Enable the IPA server to allow migration:
# ipa config-mod --enable-migration=TRUE
Run the IPA migration script, ipa migrate-ds. At its most basic, this requires only the LDAP URL of the LDAP directory instance to migrate:
# ipa migrate-ds ldap://ldap.example.com:389
The ipa migrate-ds command connects to the LDAP directory and binds as the Directory Manager and extracts all entries with the person object class from the ou=People subtree, by default. A different subtree can be specified using the --user-container option.
This script also exports all entries from the ou=Groups subtree to maintain group memberships. The group can be changed using the --group-container option.
Once the information is exported, the script adds all required IPA object classes and attributes and coverts DNs in attributes to match the IPA directory tree.
Run the ipa-client-install to configure SSSD and related services to use the IPA server for identity and Kerber authentication.
Instruct users to log into IPA using either SSSD client or the migration web page if SSSD is not available on the client. Both methods automatically migrate the user password into Identity Management.
Optional. Reconfigure non-SSSD clients to use Kerberos authentication (pam_krb5) instead of LDAP authentication (pam_ldap).
NOTE
Use PAM_LDAP modules until all of the users have been migrated; then it is possible to use PAM_KRB5.
When the migration of all clients and users is complete, decommission the LDAP directory.
[2]
It is possible to use LDAP authentication in Identity Management instead of Kerberos authentication, which means that Kerberos hashes are not required for users. However, this limits the capabilities of Identity Management and is not recommended.
[3]
There is limited support for custom user and group schema in Identity Management.
[4]
There is limited support for custom user and group schema in Identity Management.
Part of managing machine authentication is managing machine certificates. On clients, IPA manages the certificate lifecycle with the certmonger service, which works together with the certificate authority (CA) provided by IPA.
The certmonger daemon and its command-line clients simplify the process of generating public/private key pairs, creating certificate requests, and submitting requests to the CA for signing. As part of managing certificates, the certmonger daemon monitors certificates for expiration and can renew certificates that are about to expire. The certificates that certmonger monitors are tracked in files stored in a configurable directory. The default location is /var/lib/certmonger/requests.
certmonger uses the IPA getcert command to manage all certificates. As covered in Section 2.4.3.2, “Using Different CA Configurations”, an IPA server can be configured to use different types of certificate authorities. The most common (and recomended) configuration is to use a full CA server, but it is also possible to use a much more limited, self-signed CA. The exact getcert command used by certmonger to communicate with the IPA backend depends on which type of CA is used. The ipa-getcert command is used with a full CA, while the selfsign-getcert command is used with a self-signed CA.
NOTE
Because of general security issues, self-signed certificates are not typically used in production, but can be used for development and testing.
18.1. Requesting a Certificate with certmonger
With the IPA CA, certmonger uses the ipa-getcert command.
Certificates and keys are stored locally in plaintext files (.pem) or in an NSS database, identified by the certificate nickname. When requesting a certificate, then, the request should identify the location where the certificate will be stored and the nickname of the certificate. For example:
The /etc/pki/nssdb file is the global NSS database, and Server-Cert is the nickname of this certificate. The certificate nickname must be unique within this database.
When requesting a certificate to be used with an IPA service, the -K option is required to specify the service principal. Otherwise, certmonger assumes the certificate is for a host. The -N option must specify the certificate subject DN, and the subject base DN must match the base DN for the IPA server, or the request is rejected.
The options vary depending on whether you are using a self-signed certificate (selfsign-getcert) and the desired configuration for the final certificate, as well as other settings. In Example 18.1, “Using certmonger for a Service”, these are common options:
The -r option will automatically renew the certificate if the key pair already exists. This is used by default.
The -f option stores the certificate in the given file.
The -k option either stores the key in the given file or, if the key file already exists, uses the key in the file.
The -N option gives the subject name.
The -D option gives the DNS domain name.
The -U option sets the extended key usage flag.
18.2. Storing Certificates in NSS Databases
By default, certmonger uses plaintext files to store the key and the certificate, but these keys and certificates can also be stored in NSS databases. This is done using the -d option to set the security database location and -n to give the certificate nickname which is used for the certificate in the database. These options are used instead of the PEM files given in the -f and -k options.
certmonger can manage the entire certificate lifecycle. Along with generating requests, certmonger can track a certificate and automatically renew it when it expires at the end of its validity period.
This is done using the start-tracking command with the getcert command. The -I option creates the tracking entry, along with pointers to the key and certificate files, either in an NSS database (-d and -n) or in the PEM file (-f and -k). The -r option tells certmonger to renew the certificate.
The -r option can be passed with the request command, in Example 18.1, “Using certmonger for a Service”. In that case, the requested certificate is automatically tracked and renewed by certmonger. Then, it is not necessary to configure tracking manually.
A certificate can be untracked by certmonger by using the stop-tracking command.
Is it possible to change the IP address of the master server?
Yes. If you are only changing the IP address, it is sufficient to update the /etc/hosts file, the system configuration, and the DNS entry.
Why are there restrictions on the length of user and group names? How can I change this?
User and group name lengths are specified in the policy. The default maximum username length is 32 characters. The maximum configurable length for user or group names is 255 characters. This complements some supported client operating systems which limit the length of usernames.
The default settings can be changed in the IPA UI or using the ipa config-mod command. For example:
4 ipa config-mod --maxusername=50
What is the difference between a replica and a master server?
A master server maintains a certificate authority. A replica server has its certificate issued by the master CA.
Can I promote a replica to function as the master?
Why does the ipa-client-install script fail to find the IPA server on a network that uses Active Directory DNS?
Active Directory has its own SRV records for Kerberos and LDAP. The ipa-client-install script can retrieve those records instead of any that have been added for the IPA domain.
When running ipa-client-install, manually enter the server information to ensure that the script uses the IPA SRV records instead of Active Directory records. The ipa-client-install options are listed in Section B.6.1, “ipa-client-install”.
Can an administrator who is connected to "Server B" revoke a certificate issued by "Server A"?
Yes, assuming that Servers A and B contain non-cloned CAs which have their database information replicated to share revocation information only.
IPA Tools Reference
Identity Management provides a variety of command-line tools that can be used to manage IPA servers and clients, allowing an extensive range of functionality that can be managed remotely, scheduled, or scripted.
B.1. Using Special Characters
The IPA command-line tools are run as any other utilities in a shell. If there are special characters in the command — such as angle brackets (> and <), ampersands (&), asterisks (*), and pipes (|) — the characters must be escaped. Otherwise, the command fails because the shell cannot properly parse the unescaped characters.
B.2. ipa
The primary Identity Management command-line tool is the ipa command. This command has several dozen subcommands, grouped by configuration areas, to give specific control over different areas of the IPA domain configuration. These subcommands are really plug-ins, that are implemented and called through the ipa command.
One crucial feature of the ipa command is that it is pluggable. Custom behavior can be defined for the IPA domain through custom ipa subcommands.
All of the ipa are loosely organized in groups, based on the configuration area that they relate to. These groups are called topics, and the ipa help information can be called for each topic group.
$ ipa help topicName
For example, to view the description of how IPA handles automount and a list of all commands for managing automount configuration, view the help topic for automount:
$ ipa help automount
Topic
Description
automount
Adding and managing automount and NFS configuration.
cert
Managing certificate operations.
config
Managing the IPA server configuration.
delegation
Setting and controlling authorization delegated between groups.
dns
Creating and managing the DNS entries within the IPA DNS domain.
group
Creating groups of users.
hbac
Setting and testing host-based access controls.
host
Creating and managing client (host) entries within the IPA domain.
hostgroup
Creating and managing groups of hosts.
krbtpolicy
Managing the Kerberos ticket policy.
migration
Managing migration to IPA.
misc
Viewing current environment variables and plug-ins.
netgroup
Managing netgroups within the IPA domain.
passwd
Managing user passwords.
permission
Setting access control rules for users, groups, and roles within IPA to IPA resources.
privilege
Managing a group of permissions.
pwpolicy
Managing the IPA domain password policy.
role
Creating and managing user roles, as part of access control.
selfservice
Managing rights that users have to their own personal IPA entries.
service
Creating and managing system services that are managed as an IPA resource.
sudo
Creating and managing sudo rules and policies.
user
Creating and managing IPA user accounts.
B.2.4. Global Options
Global options are available to every subcommand.
Short Option
Long Option
Description
-h
--help
Prints the help for the command and exits.
-e key=value
Sets a given environment variable (key) to the specified value before running the command.
-c file
Loads the server configuration from a different file instead of default.conf.
-d
--debug
Uses debug logging when running the command.
-v
--verbose
Prints verbose messages to stdout when running the command. If two -v options are used, then the command returns the full XML-RPC request.
-a
--prompt-all
Prompts for every argument for the command, even optional ones.
-n
--no-prompt
Does not prompt for any argument, even required ones.
-f
--no-fallback
Uses only the server specified in the local default.conf and does not fallback to another server if that one is unavailable.
--all
For find and show commands. Returns all of the attributes for the entry, not just the ones related to the command or configuration area.
--raw
For find and show commands. Returns the raw, LDIF-formatted LDAP entry instead of the friendly-formatted versions.
--addattr=attribute=value
For add and mod commands. Adds a new attribute with the given value.
--setattr=attribute=value
For add and mod commands. Replaces the value of a given attribute with the new value.
B.2.5. Adding Attributes with --setattr and --addattr
For the most common attributes, the ipa use specified command-line arguments to set values. For example, adding a mail attribute to a user can be done with the --mail argument; enabling dynamic updates for a DNS zone can be done with the --allow-dynupdate option with zone commands; and a map key for an automount map is given in the --key option.
However, entries can also allow attributes that may not have command-line (or UI) options for setting them. Partially, this is because the underlying LDAP schema is very rich, particularly for user entries. Additionally, Identity Management allows limited schema extensions for users and groups, and those custom schema elements are not reflected in the UI or command-line tools.
Most ipa allow the --setattr and --addattr options to define attributes and values explicitly.
Both options have this format:
--setattr=attribute=value
The --setattr option sets one value for the given attribute; any existing values are overwritten, even for multi-valued attributes.
The --addattr option adds a new value for an attribute; for a multi-valued attribute, it adds the new value while preserving any existing values.
Both --setattr option and --addattr can be used multiple times in the same command invocation. For example:
$ ipa user-mod jsmith --addattr=mail=johnnys@me.com --addattr=mail=jsmith@example.com --setattr=description="backup IT manager for the east coast branch"
B.2.6. Return Codes
Return Code
Description
0
An error occurred.
1
The operation was successful.
2
A resource or object was not found.
B.2.7. Commands
Table B.1. dnsrecord* Commands
Command
Description
dnsrecord-add
Creates a new DNS zone in the IPA server.
dnsrecord-del
Deletes a DNS zone from the DNS domain maintained by the IPA server.
dnsrecord-find
Searches for a DNS zone which matches the filter.
dnsrecord-mod
Edits the configuration of an existing DNS domain.
dnsrecord-show
Lists the details for any or all DNS zones, depending on the filter
Table B.2. dnszone-* Commands
Command
Description
dnszone-add
Creates a new DNS zone in the IPA server.
dnszone-del
Deletes a DNS zone from the DNS domain maintained by the IPA server.
dnszone-find
Searches for a DNS zone which matches the filter.
dnszone-mod
Edits the configuration of an existing DNS domain.
dnszone-show
Lists the details for any or all DNS zones, depending on the filter
dnszone-disable
Disables a DNS zone, which removes it from being used but does not delete the zone or its configuration.
dnszone-enable
Enables an existing DNS zone, which restores it to the IPA domain with its previous configuration intact.
B.3. ipa DNS Commands
There are a collection of commands used to add and manage DNS zones and DNS records.
Sets the name of the host entry to create, based on the fully-qualified domain name of the host.
IMPORTANT
This must be a valid DNS name, which means only numbers, alphabetic characters, and hyphens (-) are allowed. Other characters, like underscores, in the hostname will cause DNS failures.
--desc="description"
Gives a text description of the host.
--locality="cityName"
Gives the geographical location, usually a city, where the host machine is.
--location="loction"
Gives the physical location, like a colocation facility, room number, or rack, where the host machine is.
--platform="hardware_description"
Gives a hardware description of the host machine.
--os="OS_version"
Gives the operating system type, such as "Red Hat Enterprise Linux 6".
--password="enrollment_password"
For a bulk enrollment, manually sets a password to use to proceed with the enrollment.
--random
For a bulk enrollment, randomly generates a password to use to proceed with the enrollment.
--certificate="base64_cert"
Contains the full base 64-encoded blob for a server certificate for the host.
--force
Forces the server to create a host entry with the given name, even if the hostname cannot be resolved in DNS.
--no-reverse
Skips DNS reverse lookups for the hostname.
--ip-address=IPaddress
Adds the host machine using its IP address, rather than the hostname.
B.5. Server Scripts
These are scripts that are used to manage the IPA server configuration. These scripts do not manage IPA domain entries; they manage the configuration of the server itself. This means that these scripts are run as system administrative users rather than domain administrative users.
B.5.1. ipa-replica-install
Uses a configuration file based on an existing IPA server to create a replica, or copy, of that server. Once the replica is created, it functions as an equal participant and mirror of the original IPA server within the IPA domain. Any changes made on the server or any other replica are automatically propagated over to the other replicas and server.
A replica is created using a file that contains all of the configuration for the IPA server. This initial file is created by running the ipa-replica-prepare on the IPA server. Then the file is copied over to the replica machine, and the ipa-replica-install script is run.
As with the server and client install scripts, any replica arguments which require a parameter value (such as the Directory Manager password) will be prompted for during installation, unless the argument is passed with the command. Parameters with Boolean values (like configuring DNS) will assume that the default value should be used unless the argument is passed with the command.
Gives the full path and filename of the replica initialization file that was created from the IPA server configuration.
-N
--no-ntp
Does not configure NTP on the replica system.
-d
--debug
Prints additional debug information.
-p
--password
Gives the Directory Manager password for the IPA domain.
-w
--admin-password
Gives the Kerberos password for the IPA admin user. This is used to check Kerberos and domain connectivity on the replica.
--setup-dns
Sets up DNS services on the replica machine to connect to the IPA DNS domain. If this is not used, then the default value is false, which does not enable DNS.
--forwarder
Gives a comma-separated list of IP addresses for DNS forwarders.
--no-forwarders
Disables DNS forwarder configuration and uses only domain root servers. If this is not used, then the default value is false, which prompts for DNS forwarder information.
--no-reverse
Disables reverse DNS configuration. If this is not used, then the default value is true, which assumes that reverse DNS should be configured.
--no-host-dns
Disables host DNS lookups during the replica installation process. If this is not used, then the default value is true, which performs the host DNS lookups.
--no-pkinit
Disables PKI (Dogtag Certificate System) configuration. If this is not used, then the default value is true, which assumes that a local Dogtag Certificate System CA should be configured.
--skip-conncheck
Disables checks for the replica's connection to the IPA domain. If this is not used, then the default value is true, which checks that the replica can connect to the Kerberos realm.
This can be useful if the replica is unable to reach the Directory Server or the CA used by the original IPA server, such as the server is offline or the server's firewall is blocking access on the required ports (Section 2.2.4.4, “System Ports”).
-U
--unattended
Disables user prompts so that the replica installation script runs without user interaction.
B.5.2. ipa-replica-prepare
Creates a file that can be used to create a copy, or replica, of the IPA server.
Each replica initialization file is unique to the replica machine because the configuration is based, in part, on the IP address and hostname of the replica machine. This host-specific configuration is especially critical for setting up services like Kerberos which use SSL because SSL certificates are created based on the hostname.
When the replica file is created, the prep script requires the hostname and, optionally, accepts the IP address.
Once the configuration file is created on the server using the ipa-replica-prepare command, then the replica file is copied over to the replica machine and the replica is configured using the ipa-replica-prepare command.
NOTE
If DNS is managed by IPA, then use either the --ip-address option or configure DNS forwarders and allow reverse DNS lookups.
Gives the full path and filename of a PKCS #12 file (.p12) which contains the Directory Server's SSL certificate.
--dirsrv_pin
Gives the password to access the Directory Server certificate file.
--http_pkcs12
Gives the full path and filename of a PKCS #12 file (.p12) which contains the Apache server's SSL certificate.
--http_pin
Gives the password to access the Apache certificate file.
--ip-address
Gives the IP address of the replica server. Using this option automatically adds A and PTR records for the replica host to the IPA DNS configuration.
B.5.3. ipa-server-install
Configures all of the services used by the IPA server for the IPA domain:
Dogtag Certificate System, for issuing server certificates
389 Directory Server, for storing all of the IPA information
The Kerberos KDC, with the LDAP backend
Apache, for the web-based services
NTP
The ipa_kpasswd service
Optionally, DNS
This script can be run interactively, which prompts for many of the server values, or information can be passed directly to the script so that the server can be configured without human intervention.
The IPA server configuration is very flexible. The setup script allows some customization to services like DNS, NTP, certificate issuance, and access control in IPA so that the server can be suited to the network environment.
The password for the IPA administrator. This is used for the admin user to authenticate to the Kerberos realm.
--hostname=hostname
The fully-qualified domain name of the IPA server machine.
IMPORTANT
This must be a valid DNS name, which means only numbers, alphabetic characters, and hyphens (-) are allowed. Other characters, like underscores, in the hostname will cause DNS failures.
-n domain_name
--domain=domain_name
The name of the LDAP server domain to use for the IPA domain. This is usually based on the IPA server's hostname.
-p directory_manager_password
--ds-password=directory_manager_password
The password for the superuser, cn=Directory Manager, for the LDAP service.
-r realm_name
--realm=realm_name
The name of the Kerberos realm to create for the IPA domain.
Certificate Authority Options
--external-ca
Instructs the installation script to generate a certificate request that can be submitted to an external or third-party CA.
--external_ca_file=CA_cert_chain_file
Points to the PKCS#10 file which contains the CA certificate chain of the external CA. This is required to validate the certificate issued by the CA for the IPA server. If an external CA is used, this is required in a second invocation of ipa-server-install to complete the setup process.
--external_cert_file=certificate_file
Points to the PKCS#10 file which contains the certificate that was generated by an external CA. If an external CA is used, this is required in a second invocation of ipa-server-install to complete the setup process.
--selfsign
Uses a self-signed certificate instead of a certificate issued by the internal Dogtag Certificate System or by an external CA. If this option is selected, then no Dogtag Certificate System instance is configured as part of the setup process, and the IPA server itself functionally serves as a CA for clients in the domain. This is not recommended for production environments, but can be used in test or development environments.
--subject=subject_DN
Sets the base element for the subject DN of the issued certificates. This defaults to O=realm.
DNS Options
--forwarder=forwarder
Gives a comma-separated list of DNS forwarders to use with the DNS service.
--no-forwarders
Uses root servers with the DNS service instead of forwarders.
--no-reverse
Uses root servers with the DNS service instead of forwarders.
--setup-dns
Tells the installation script to set up a DNS service within the IPA domain. Using an integrated DNS service is optional, so if this option is not passed with the installation script, then no DNS is configured.
--zone-refresh=seconds
Sets whether the IPA server should periodically check to see when new DNS zones are added and update its DNS server accordingly. The polling interval is set in seconds.
--zonemgr=email_address
Gives the email address to use for the DNS zone manager. If none is given, this defaults to root.
Kerberos Options
--ip-address=ip_address
Gives the IP address of the Kerberos master KDC. This can be used if there are multiple IPA servers in the same realm.
-P kerberos_master_password
--master-password=kerberos_master_password
The password for the KDC account. This is randomly generated if no value is given.
NTP Options
-N, --no-ntp
Does not configure the NTP service for the IPA server. This is normally done by default.
NOTE
If the IPA server is running as a virtual guest, it should not run an NTP service.
IPA Server Configuration Options
--idmax=number
Sets the upper bound for IDs which can be assigned by the IPA server. The default value is the ID start value plus 199999.
--idstart=number
Sets the lower bound (starting value) for IDs which can be assigned by the IPA server. The default value is randomly selected.
--no_hbac_allow
Disables the allow_all rule for host-based access control in the IPA domain.
Other Setup Options
--no-host-dns
Does not use DNS to look up the hostname of the IPA server machine during the installation process.
-U
--unattended
Runs the ipa-server-install command without any interactive prompts.
--uninstall
Uninstalls an existing IPA server.
General Tool Options
-d
--debug
Runs the ipa-server-install command in debug mode and outputs debugging information.
-h
--help
Prints the help information for the ipa-server-install command.
--version
Prints the version number of the ipa-server-install command.
[a]
The installation script will prompt for these options if they are not passed with the script.
B.6. Client Scripts
These tools are used to manage client machines.
B.6.1. ipa-client-install
Configures a client machine. This script uses the local SSSD service to connect to the IPA server during the setup process. It is also possible to connect to the server through PAM/NSS using LDAP.
This script is also used to uninstall clients, which removes them from the IPA domain and removes all IPA-related configuration.
This script is only available for Red Hat Enterprise Linux platforms.
Tells SSSD to update DNS with the IP address of this client.
-f
--force
Forces the script to apply the settings even if errors occur.
--hostname=clientHostname
Sets the fully-qualified domain name of the client server. If this is not given, the script uses the nodename given in uname.
IMPORTANT
This must be a valid DNS name, which means only numbers, alphabetic characters, and hyphens (-) are allowed. Other characters, like underscores, in the hostname will cause DNS failures.
--mkhomedir
Configures PAM to create a user's home directory if it does not exist.
-N
--no-ntp
Does not configure or enable NTP.
--no-krb5-offline-passwords
Prevents the SSSD services from storing Kerberos passwords in the SSSD cache. The cache is useful because a user may log into a system when a machine is offline and then attempt to access domain services after the machine is brought online. Using the cache stores the password, which can be referenced when the domain is accessed.
--ntp-server=NTP_server
Configures the local ntpd service to use the IPA NTP server.
--on-master
Indicates the client is being configured on an IPA server. This is not for a normal invocation of the setup script; this option is used by ipa-server-install when a server is configured.
-p
--principal
Passes an authorized Kerberos principal to use to join the IPA realm. This is used during an automated deployment, such as a kickstart process.
--permit
Configures SSSD to permit all access. If this is not set, then access to the client is controlled by the host-based access controls on the IPA server.
--realm=realmName
Gives the IPA realm name.
-S
--no-sssd
Tells the client to use nss_ldap for authentication instead of SSSD.
--server=IPA_server_fqdn
Gives the name of the IPA server to connect to. This must be a fully-qualified domain name.
IMPORTANT
This must be a valid DNS name, which means only numbers, alphabetic characters, and hyphens (-) are allowed. Other characters, like underscores, in the hostname will cause DNS failures.
-U
--unattended
Performs an unattended installation, with no user prompts.
--uninstall
Removes the IPA client software and configuration to restore the machine to a pre-IPA state.
-w password
--password=password
Gives the Kerberos password to use to access the IPA realm and join the machine. If only the password parameter is used, the script assumes this is a bulk enrollment and uses the machine name as the Kerberos principal. If the principal is given, the script binds as an IPA user.
In the context of access control, specify the level of access granted or denied. Access rights are related to the type of operation that can be performed on the directory. The following rights can be granted or denied: read, write, add, delete, search, compare, selfwrite, proxy and all.
account inactivation
Disables a user account, group of accounts, or an entire domain so that all authentication attempts are automatically rejected.
ACI
An instruction that grants or denies permissions to entries in the directory.
Replaced with the ID list scan limit in Directory Server version 7.1. A size limit which is globally applied to every index key managed by the server. When the size of an individual ID list reaches this limit, the server replaces that ID list with an All IDs token.
A mechanism which causes the server to assume that all directory entries match the index key. In effect, the All IDs token causes the server to behave as if no index was available for the search request.
anonymous access
When granted, allows anyone to access directory information without providing credentials, and regardless of the conditions of the bind.
approximate index
Allows for efficient approximate or "sounds-like" searches.
attribute
Holds descriptive information about an entry. Attributes have a label and a value. Each attribute also follows a standard syntax for the type of information that can be stored as the attribute value.
attribute list
A list of required and optional attributes for a given entry type or object class.
authenticating directory server
In pass-through authentication (PTA), the authenticating Directory Server is the Directory Server that contains the authentication credentials of the requesting client. The PTA-enabled host sends PTA requests it receives from clients to the host.
authentication
(1) Process of proving the identity of the client user to the Directory Server. Users must provide a bind DN and either the corresponding password or certificate in order to be granted access to the directory. Directory Server allows the user to perform functions or access files and directories based on the permissions granted to that user by the directory administrator.
(2) Allows a client to make sure they are connected to a secure server, preventing another computer from impersonating the server or attempting to appear secure when it is not.
authentication certificate
Digital file that is not transferable and not forgeable and is issued by a third party. Authentication certificates are sent from server to client or client to server in order to verify and authenticate the other party.
Distinguished name used to authenticate to Directory Server when performing an operation.
bind rule
In the context of access control, the bind rule specifies the credentials and conditions that a particular user or client must satisfy in order to get access to directory information.
branch entry
An entry that represents the top of a subtree in the directory.
browser
Software, such as Mozilla Firefox, used to request and view World Wide Web material stored as HTML files. The browser uses the HTTP protocol to communicate with the host server.
browsing index
Speeds up the display of entries in the Directory Server Console. Browsing indexes can be created on any branch point in the directory tree to improve display performance.
In a cascading replication scenario, one server, often called the hub supplier, acts both as a consumer and a supplier for a particular replica. It holds a read-only replica and maintains a changelog. It receives updates from the supplier server that holds the master copy of the data and in turn supplies those updates to the consumer.
certificate
A collection of data that associates the public keys of a network user with their DN in the directory. The certificate is stored in the directory as user object attributes.
Certificate Authority
Company or organization that sells and issues authentication certificates. You may purchase an authentication certificate from a Certification Authority that you trust. Also known as a CA.
CGI
Common Gateway Interface. An interface for external programs to communicate with the HTTP server. Programs written to use CGI are called CGI programs or CGI scripts and can be written in many of the common programming languages. CGI programs handle forms or perform output parsing that is not done by the server itself.
chaining
A method for relaying requests to another server. Results for the request are collected, compiled, and then returned to the client.
changelog
A changelog is a record that describes the modifications that have occurred on a replica. The supplier server then replays these modifications on the replicas stored on replica servers or on other masters, in the case of multi-master replication.
character type
Distinguishes alphabetic characters from numeric or other characters and the mapping of upper-case to lower-case letters.
ciphertext
Encrypted information that cannot be read by anyone without the proper key to decrypt the information.
class definition
Specifies the information needed to create an instance of a particular object and determines how the object works in relation to other objects in the directory.
An internal table used by a locale in the context of the internationalization plug-in that the operating system uses to relate keyboard keys to character font screen displays.
collation order
Provides language and cultural-specific information about how the characters of a given language are to be sorted. This information might include the sequence of letters in the alphabet or how to compare letters with accents to letters without accents.
consumer
Server containing replicated directory trees or subtrees from a supplier server.
consumer server
In the context of replication, a server that holds a replica that is copied from a different server is called a consumer for that replica.
CoS
A method for sharing attributes between entries in a way that is invisible to applications.
CoS definition entry
Identifies the type of CoS you are using. It is stored as an LDAP subentry below the branch it affects.
A background process on a Unix machine that is responsible for a particular system task. Daemon processes do not need human intervention to continue functioning.
DAP
Directory Access Protocol. The ISO X.500 standard protocol that provides client access to the directory.
data master
The server that is the master source of a particular piece of data.
database link
An implementation of chaining. The database link behaves like a database but has no persistent storage. Instead, it points to data stored remotely.
default index
One of a set of default indexes created per database instance. Default indexes can be modified, although care should be taken before removing them, as certain plug-ins may depend on them.
The privileged database administrator, comparable to the root user in UNIX. Access control does not apply to the Directory Manager.
directory service
A database application designed to manage descriptive, attribute-based information about people and resources within an organization.
directory tree
The logical representation of the information stored in the directory. It mirrors the tree model used by most filesystems, with the tree's root point appearing at the top of the hierarchy. Also known as DIT.
distinguished name
String representation of an entry's name and location in an LDAP directory.
Domain Name System. The system used by machines on a network to associate standard IP addresses (such as 198.93.93.10) with hostnames (such as www.example.com). Machines normally get the IP address for a hostname from a DNS server, or they look it up in tables maintained on their systems.
DNS alias
A DNS alias is a hostname that the DNS server knows points to a different hostspecifically a DNS CNAME record. Machines always have one real name, but they can have one or more aliases. For example, an alias such as www.yourdomain.domain might point to a real machine called realthing.yourdomain.domain where the server currently exists.
E
entry
A group of lines in the LDIF file that contains information about an object.
entry distribution
Method of distributing directory entries across more than one server in order to scale to support large numbers of entries.
entry ID list
Each index that the directory uses is composed of a table of index keys and matching entry ID lists. The entry ID list is used by the directory to build a list of candidate entries that may match the client application's search request.
equality index
Allows you to search efficiently for entries containing a specific attribute value.
F
file extension
The section of a filename after the period or dot (.) that typically defines the type of file (for example, .GIF and .HTML). In the filename index.html the file extension is html.
file type
The format of a given file. For example, graphics files are often saved in GIF format, while a text file is usually saved as ASCII text format. File types are usually identified by the file extension (for example, .GIF or .HTML).
filter
A constraint applied to a directory query that restricts the information returned.
filtered role
Allows you to assign entries to the role depending upon the attribute contained by each entry. You do this by specifying an LDAP filter. Entries that match the filter are said to possess the role.
G
general access
When granted, indicates that all authenticated users can access directory information.
GSS-API
Generic Security Services. The generic access protocol that is the native way for UNIX-based systems to access and authenticate Kerberos services; also supports session encryption.
H
hostname
A name for a machine in the form machine.domain.dom, which is translated into an IP address. For example, www.example.com is the machine www in the subdomain example and com domain.
HTML
Hypertext Markup Language. The formatting language used for documents on the World Wide Web. HTML files are plain text files with formatting codes that tell browsers such as the Mozilla Firefox how to display text, position graphics, and form items and to display links to other pages.
HTTP
Hypertext Transfer Protocol. The method for exchanging information between HTTP servers and clients.
HTTPD
An abbreviation for the HTTP daemon or service, a program that serves information using the HTTP protocol. The daemon or service is often called an httpd.
HTTPS
A secure version of HTTP, implemented using the Secure Sockets Layer, SSL.
hub
In the context of replication, a server that holds a replica that is copied from a different server, and, in turn, replicates it to a third server.
A size limit which is globally applied to any indexed search operation. When the size of an individual ID list reaches this limit, the server replaces that ID list with an all IDs token.
index key
Each index that the directory uses is composed of a table of index keys and matching entry ID lists.
indirect CoS
An indirect CoS identifies the template entry using the value of one of the target entry's attributes.
international index
Speeds up searches for information in international directories.
Also Internet Protocol address. A set of numbers, separated by dots, that specifies the actual location of a machine on the Internet (for example, 198.93.93.10). Directory Server supports both IPv4 and IPv6 IP addresses.
ISO
International Standards Organization.
K
knowledge reference
Pointers to directory information stored in different databases.
L
LDAP
Lightweight Directory Access Protocol. Directory service protocol designed to run over TCP/IP and across multiple platforms.
LDAP client
Software used to request and view LDAP entries from an LDAP Directory Server.
Provides the means of locating Directory Servers using DNS and then completing the query via LDAP. A sample LDAP URL is ldap://ldap.example.com.
LDAPv3
Version 3 of the LDAP protocol, upon which Directory Server bases its schema format.
LDBM database
A high-performance, disk-based database consisting of a set of large files that contain all of the data assigned to it. The primary data store in Directory Server.
LDIF
LDAP Data Interchange Format. Format used to represent Directory Server entries in text form.
leaf entry
An entry under which there are no other entries. A leaf entry cannot be a branch point in a directory tree.
Identifies the collation order, character type, monetary format and time / date format used to present data for users of a specific region, culture, and/or custom. This includes information on how data of a given language is interpreted, stored, or collated. The locale also indicates which code page should be used to represent a given language.
M
managed object
A standard value which the SNMP agent can access and send to the NMS. Each managed object is identified with an official name and a numeric identifier expressed in dot-notation.
managed role
Allows creation of an explicit enumerated list of members.
Provides guidelines for how the server compares strings during a search operation. In an international search, the matching rule tells the server what collation order and operator to use.
MD5
A message digest algorithm by RSA Data Security, Inc., which can be used to produce a short digest of data that is unique with high probability and is mathematically extremely hard to produce; a piece of data that will produce the same message digest.
MD5 signature
A message digest produced by the MD5 algorithm.
MIB
Management Information Base. All data, or any portion thereof, associated with the SNMP network. We can think of the MIB as a database which contains the definitions of all SNMP managed objects. The MIB has a tree-like hierarchy, where the top level contains the most general information about the network and lower levels deal with specific, separate network areas.
MIB namespace
Management Information Base namespace. The means for directory data to be named and referenced. Also called the directory tree.
monetary format
Specifies the monetary symbol used by specific region, whether the symbol goes before or after its value, and how monetary units are represented.
multi-master replication
An advanced replication scenario in which two servers each hold a copy of the same read-write replica. Each server maintains a changelog for the replica. Modifications made on one server are automatically replicated to the other server. In case of conflict, a time stamp is used to determine which server holds the most recent version.
multiplexor
The server containing the database link that communicates with the remote server.
N
n + 1 directory problem
The problem of managing multiple instances of the same information in different directories, resulting in increased hardware and personnel costs.
name collisions
Multiple entries with the same distinguished name.
nested role
Allows the creation of roles that contain other roles.
network management application
Network Management Station component that graphically displays information about SNMP managed devices, such as which device is up or down and which and how many error messages were received.
Network Information Service. A system of programs and data files that Unix machines use to collect, collate, and share specific information about machines, users, filesystems, and network parameters throughout a network of computers.
NMS
Powerful workstation with one or more network management applications installed. Also network management station.
ns-slapd
Red Hat's LDAP Directory Server daemon or service that is responsible for all actions of the Directory Server.
Defines an entry type in the directory by defining which attributes are contained in the entry.
object identifier
A string, usually of decimal numbers, that uniquely identifies a schema element, such as an object class or an attribute, in an object-oriented system. Object identifiers are assigned by ANSI, IETF or similar organizations.
Contains information used internally by the directory to keep track of modifications and subtree properties. Operational attributes are not returned in response to a search unless explicitly requested.
P
parent access
When granted, indicates that users have access to entries below their own in the directory tree if the bind DN is the parent of the targeted entry.
A file on Unix machines that stores Unix user login names, passwords, and user ID numbers. It is also known as /etc/passwd because of where it is kept.
password policy
A set of rules that governs how passwords are used in a given directory.
PDU
Encoded messages which form the basis of data exchanges between SNMP devices. Also protocol data unit.
permission
In the context of access control, permission states whether access to the directory information is granted or denied and the level of access that is granted or denied.
A special form of authentication where the user requesting access to the directory does not bind with its own DN but with a proxy DN.
proxy DN
Used with proxied authorization. The proxy DN is the DN of an entry that has access permissions to the target on which the client-application is attempting to perform an operation.
PTA
Mechanism by which one Directory Server consults another to check bind credentials. Also pass-through authentication.
PTA directory server
In pass-through authentication (PTA), the PTA Directory Server is the server that sends (passes through) bind requests it receives to the authenticating directory server.
PTA LDAP URL
In pass-through authentication, the URL that defines the authenticating directory server, pass-through subtree(s), and optional parameters.
R
RAM
Random access memory. The physical semiconductor-based memory in a computer. Information stored in RAM is lost when the computer is shut down.
rc.local
A file on Unix machines that describes programs that are run when the machine starts. It is also called /etc/rc.local because of its location.
RDN
The name of the actual entry itself, before the entry's ancestors have been appended to the string to form the full distinguished name. Also relative distinguished name.
read-only replica
A replica that refers all update operations to read-write replicas. A server can hold any number of read-only replicas.
read-write replica
A replica that contains a master copy of directory information and can be updated. A server can hold any number of read-write replicas.
referential integrity
Mechanism that ensures that relationships between related entries are maintained within the directory.
referral
(1) When a server receives a search or update request from an LDAP client that it cannot process, it usually sends back to the client a pointer to the LDAP sever that can process the request.
(2) In the context of replication, when a read-only replica receives an update request, it forwards it to the server that holds the corresponding read-write replica. This forwarding process is called a referral.
Replication configuration where replica servers, either hub or consumer servers, pull directory data from supplier servers. This method is available only for legacy replication.
replication
Act of copying directory trees or subtrees from supplier servers to replica servers.
replication agreement
Set of configuration parameters that are stored on the supplier server and identify the databases to replicate, the replica servers to which the data is pushed, the times during which replication can occur, the DN and credentials used by the supplier to bind to the consumer, and how the connection is secured.
RFC
Request for Comments. Procedures or standards documents submitted to the Internet community. People can send comments on the technologies before they become accepted standards.
role
An entry grouping mechanism. Each role has members, which are the entries that possess the role.
role-based attributes
Attributes that appear on an entry because it possesses a particular role within an associated CoS template.
root
The most privileged user available on Unix machines. The root user has complete access privileges to all files on the machine.
root suffix
The parent of one or more sub suffixes. A directory tree can contain more than one root suffix.
Definitions describing what types of information can be stored as entries in the directory. When information that does not match the schema is stored in the directory, clients attempting to access the directory may be unable to display the proper results.
schema checking
Ensures that entries added or modified in the directory conform to the defined schema. Schema checking is on by default, and users will receive an error if they try to save an entry that does not conform to the schema.
When granted, indicates that users have access to their own entries if the bind DN matches the targeted entry.
Server Console
Java-based application that allows you to perform administrative management of your Directory Server from a GUI.
server daemon
The server daemon is a process that, once running, listens for and accepts requests from clients.
Server Selector
Interface that allows you select and configure servers using a browser.
server service
A process on Windows that, once running, listens for and accepts requests from clients. It is the SMB server on Windows NT.
service
A background process on a Windows machine that is responsible for a particular system task. Service processes do not need human intervention to continue functioning.
SIE
Server Instance Entry. The ID assigned to an instance of Directory Server during installation.
The most basic replication scenario in which multiple servers, up to four, each hold a copy of the same read-write replicas to replica servers. In a single-master replication scenario, the supplier server maintains a changelog.
Used to monitor and manage application processes running on the servers by exchanging data about network activity. Also Simple Network Management Protocol.
SNMP master agent
Software that exchanges information between the various subagents and the NMS.
SNMP subagent
Software that gathers information about the managed device and passes the information to the master agent. Also called a subagent.
A software library establishing a secure connection between two parties (client and server) used to implement HTTPS, the secure version of HTTP. Also called Secure Sockets Layer.
standard index
An index maintained by default.
start of authority (SOA)
A record which contains the core information about a DNS zone.
Allows for efficient searching against substrings within entries. Substring indexes are limited to a minimum of two characters for each entry.
suffix
The name of the entry at the top of the directory tree, below which data is stored. Multiple suffixes are possible within the same directory. Each database only has one suffix.
superuser
The most privileged user available on Unix machines. The superuser has complete access privileges to all files on the machine. Also called root.
supplier
Server containing the master copy of directory trees or subtrees that are replicated to replica servers.
supplier server
In the context of replication, a server that holds a replica that is copied to a different server is called a supplier for that replica.
supplier-initiated replication
Replication configuration where supplier servers replicate directory data to any replica servers.
symmetric encryption
Encryption that uses the same key for both encrypting and decrypting. DES is an example of a symmetric encryption algorithm.
system index
Cannot be deleted or modified as it is essential to Directory Server operations.
T
target
In the context of access control, the target identifies the directory information to which a particular ACI applies.
target entry
The entries within the scope of a CoS.
TCP/IP
Transmission Control Protocol/Internet Protocol. The main network protocol for the Internet and for enterprise (company) networks.
A unique number associated with each user on a Unix system.
URL
Uniform Resource Locater. The addressing system used by the server and the client to request documents. It is often called a location. The format of a URL is protocol://machine:port/document. The port number is necessary only on selected servers, and it is often assigned by the server, freeing the user of having to place it in the URL.
V
virtual list view index
Speeds up the display of entries in the Directory Server Console. Virtual list view indexes can be created on any branch point in the directory tree to improve display performance.