Pluggable Authentication Modules (PAM) có vai trò như các thư viện chia sẻ ,các ứng dụng từ chi tiết của tài khoản lưu trữ dữ liệu, cơ chế sử dụng đến việc xác thực người dùng,quy trình cấp phép dịch vụ. PADL Software đã phát triển một module pam_ldap, được hỗ trợ trên FreeBSD, HP-UX, Linux, Mac OS 10.2, và Solaris. Module này cho phép bạn tận dụng lợi thế của LDAP trong
Các mô-đun pam_ldap cài đặt cấu hình của nó trong một tập tin văn bản. File này được đặt tên là ldap.conf ,mặc định và thường được lưu trữ trong thư mục / etc. Các thông số cấu hình bạn có thể đặt trong tập tin này được tóm tắt trong Bảng 6-1 Bảng 6-2, và Bảng 6-3
Các thông số cấu hình gồm có
Table 6-1. ldap.conf parameters shared by pam_ldap and nss_ldap
Parameter Description
host
The IP address (or hostname) of the LDAP server. The value must be resolvable without LDAP support. If a host is not specified, the nss_ldap library will attempt to locate an LDAP server by querying DNS for an SRV record for
_ldap._tcp.<domain>. The current version of the pam_ldap module (v157) will not perform this auto-lookup, but support is planned for a future release. Also refer to the uri parameter.
base The base DN to use in searches.
ldap_versionThe version of LDAP to use when querying the server. Legal values are 2 and 3. Version 3 is used by default if it is supported by the client libraries. binddn The DN to use when binding to the LDAP server. This is an optional parameter; it is necessary when access control on directory entries prohibits anonymous
searches.
bindpw The password used when binding to the LDAP server (if the binddn was defined). port The port to use when contacting the LDAP server. The default is port 389. Also refer to the uri parameter.
rootbinddn
This parameter allows you to map the effective UID 0 (i.e., the root UID) to a DN that is used to bind to the LDAP server. If enabled, the password for this DN is read from /etc/ldap.secret. This follows the convention that the root account should be able to access all information on the system.
ssl
This parameter defines the behavior of the PAM and NSS modules for negotiating SSL when binding to the server. By default, SSL is not used. The client can be configured to use LDAPS by setting this parameter to on, or to use the StartTLS Extended command by setting this parameter to start_tls.
scope The scope to use when searching the LDAP tree. The possible values are sub, one, and base. uri This option accepts an LDAP URI defining the host and port of the directory server.
Table 6-2. pam_ldap ldap.conf parameters
Parameter Description
pam_check_host_attr A Boolean parameter (defaults to no) that controls checking of the host attribute when authorizing a login.
pam_filter
A string that provides additional filter elements that are ANDed with (uid=%s) when attempting to validate a user. See the
pam_login_attribute parameter for related information. pam_login_attribute
The attribute that should be matched against the user's login name. This parameter lets you use something other than a simple username for authentication—for example, an email address.
pam_lookup_policy
A Boolean parameter (yes or no) that tells pam_ldap whether to contact the root DSE to get the server's password policy. For use with Netscape's directory server 3.x only.
pam_groupdn
Defines the DN of a group whose membership (see the
pam_member_attribute parameter) should be used to to restrict access to the local host.
pam_member_attribute Defines the group membership attribute. pam_min_uid
pam_max_uid
These two parameters accept an integer representing the minimum and maximun uidNumber values allowed to log in. The default is to place no restrictions on logins.
pam_password
This parameter defines various methods for changing passwords on LDAP servers. It supersedes the older pam_crypt, pam_nds_passwd, and pam_ad_passwd parameters. Possible values include: clear (the default; sends the clear text of the password to the server), crypt (hashes the password locally using the standard crypt( ) function before sending the change to the server), md5 (generates the MD5 hash of the password locally before sending it to the server), nds, racf (provides support for changing passwords stored in a Novell Directory Server), ad (provides support for changing passwords stored in an Active Directory server), and exop (supports the Password Modify extended operation defined in RFC 3062; implemented by OpenLDAP).
Table 6-3. nss_ldap ldap.conf parameters
nss_base_shadow nss_base_passwd nss_base_group nss_base_hosts nss_base_services nss_base_networks nss_base_protocols nss_base_rpc nss_base_ethers nss_base_netmasks nss_base_aliases nss_base_netgroup
These parameters allow the naming contexts for various databases in
nsswitch.conf to be configured as per the recommendations from the RFC
2307 updates. The syntax is: nss_base_XXX base?scope?filter
The filter is combined with the default filter for the object being requested using a logical AND (&). These parameters are available only when nss_ldap has been configured to use the —enable-rfc2307bis option at compile time.
nss_map_attribute nss_map_objectclass
These parameters provide a means of mapping attributes and object classes returned from the directory server to an RFC 2307-equivalent schema item. The syntax is:
nss_map_XX rfc2307item mapped_item
Các mô-đun pam_ldap phải có khả năng xác định vị trí các máy chủ thư mục để truy vấn thông tin. Có hai cách mà các mô-đun có thể xác định vị trí các máy chủ thư mục. Phương pháp duy nhất được hỗ trợ bởi pam_ldap là chỉ định rõ ràng các máy chủ LDAP bằng cách sử dụng các máy chủ hoặc các thông số uri trong ldap.conf. Cách thứ 2, sử dụng thư viện nss_ldap, là bỏ qua các tham số máy chủ và tạo ra một bản ghi DNS SRV mà bản đồ hóa các tên của host _ldap._tcp <domain> đến một địa chỉ IP. Nếu máy chủ không được quy định cụ thể trong ldap.conf, thư viện nss_ldap cố gắng tìm kiếm một máy chủ với tên máy đặc biệt này và sử dụng máy chủ tại địa chỉ đó cho các truy vấn
Các thông số sau đây hướng dẫn pam_ldap liên lạc với ldap.plainjoe.org lưu trữ trên cổng mặc định 389 cho tất cả các truy vấn LDAPv3 :
# Your LDAP server. Must be resolvable without using LDAP. uri ldap://ldap.plainjoe.org/
## Set the version number for LDAP commands. The default is to use Version 3 if ## supported by the client libraries.
ldap_version 3
Tiếp theo,xác định các thông số tìm kiếm cho pam_ldap để sử dụng khi truy vấn các thư mục. Các đoạn sau đây của ldap.conf xác định cơ sở tìm kiếm, phạm vi tìm kiếm, và thời gian giới hạn tối đa:
## Define the search base base dc=plainjoe,dc=org
## Define the scope of the search [sub|base|one]. A subtree search is the default. scope sub
## Set a time limit in seconds to wait on a search. timelimit 30
Các DN của người sử dụng phải được đặt theo thứ tự liên kết với thư mục thay mặt cho người sử dụng và do đó thực hiện việc được yêu cầu chứng thực . Việc tìm kiếm này có thể được thực hiện nặc danh hoặc bằng cách sử dụng một binddn được xác định trước và bindpw. Chuỗi bindpw phải được lưu trong ldap.conf như văn bản rõ ràng.
Cuối cùng, thêm một vài thông số để tinh chỉnh bộ lọc tìm kiếm. pam_login_attribute định nghĩa thuộc tính nên được kết hợp với tên đăng nhập của người sử dụng. pam_filter cho phép một quản trị viên tiếp tục tinh chỉnh các bộ lọc tìm kiếm khi cố gắng xác định vị trí tài khoản người dùng. Trong các mục tập tin cấu hình sau đây, nó được quy định cụ thể tên đăng nhập của người sử dụng nên được so sánh với UID thuộc tính được định nghĩa trong lớp đối tượng posixAccount. (Lưu ý rằng một UID trong lược đồ này là một tên đăng nhập, không phải là số, như trong việc sử dụng Unix thông thường).
## Define the user login name attribute (defaults to uid). pam_login_attribute uid
## The following filter will be used to AND with <pam_login_attribute>=%s. pam_filter objectclass=posixAccount
Với hai thiết lập, thư viện pam_ldap làm việc tìm kiếm sau đây để xác minh rằng một tài khoản người dùng có tên là "carter" trong thư mục:
(&(objectClass=posixAccount)(uid=gcarter))
Sau khi xác minh sự tồn tại của các DN, các mô-đun PAM cố gắng để liên kết với các thư mục bằng cách sử dụng các DN và mật khẩu được nhập vào bởi người sử dụng. Nếu liên kết này thành công, pam_ldap thông báo ứng dụng được gọi mà người dùng đã được chứng thực thành công.