Linux 系统配置 OpenLDAP
本文使用 OpenLDAP 2.4.30 来构建 LDAP 的服务器和客户机。操作系统使用 SUSE Linux Enterprise Server11。用户可以从 OpenLDAP 下载页或者ftp://ftp.openldap.org/pub/OpenLDAP/下载 OpenLDAP 软件到/usr/local,解压 OpenLDAP,并进入 OpenLDAP 的最外层目录,编译并安装 LDAP。
清单 2. 编译及安装 OpenLDAP 示例#tarzxvfopenldap-stable-20120311.tgz #cd /usr/local/openldap-2.4.30 #./configure −−with−wrappers Please "make depend" to build dependencies #make depend #make #make test #make install
OpenLDAP 依赖于一些第三方软件包,因此安装配置 OpenLDAP 之前需要首先安装第三方软件包。执行"make install"命令要求用户有超级用户权限。安装成功后,可以配置 OpenLDAP 的服务器端和客户端。
配置 OpenLDAP 服务器OpenLDAP 安装成功后,用户会在/usr/local/etc/openldap 找到配置文件 slapd.conf。/usr/local/etc/openldap/slapd.conf 是 OpenLDAP 服务器最重要的配置文件,配置权限、口令、数据库类型和数据库位置等等。slapd.conf 文件中包括一系列全局配置选项,它们作为一个整体应用到 slapd 上面,后面是包含数据库特有信息的数据库后端定义。空行和以 "#" 字符开头的注释行都会被忽略。
清单 3. slapd.conf 示例:# # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/rfc2307bis.schema include /etc/openldap/schema/yast.schema # Define global ACLs to disable default read access. # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral ldap://root.openldap.org pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args # Load dynamic backend modules: # modulepath /usr/lib/openldap/modules # moduleload back_bdb.la # moduleload back_hdb.la # moduleload back_ldap.la # Sample security restrictions # Require integrity protection (prevent hijacking) # Require 112-bit (3DES or better) encryption for updates # Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64 # Sample access control policy: # Root DSE: allow anyone to read it # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access to user password # Allow anonymous users to authenticate # Allow read access to everything else # Directives needed to implement policy: access to dn.base="" by * read access to dn.base="cn=Subschema" by * read access to attrs=userPassword,userPKCS12 by self write by * auth access to attrs=shadowLastChange by self write by * read access to * by * read ####################################################################### # BDB database definitions ####################################################################### database bdb suffix "dc=my-domain,dc=com" rootdn "cn=Manager,dc=my-domain,dc=com" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /var/lib/ldap # Indices to maintain index objectClass eq
下面解释一下配置文件中的设置:
database bdb
定义使用的后端数据存储方式,数据库格式默认采用 Berkeley DB。其后可以跟的值有 bdb、ldbm、passwd 和 shell。bdb 指使用 Berkley DB 4 数据库。
suffix "dc=my-domain,dc=com"
suffix 是"LDAP 基准名",它是 LDAP 名字空间在这里的根。设置想要创建的子树的根的 DN(distinguished name),将 my-domain 替换成用户实际使用的 domain。
rootdn "cn=Manager,dc=my-domain,dc=com"
设置管理 LDAP 目录的超级用户的 DN。这个用户名不要出现在"/etc/passwd"文件里。
rootpw secret
设置这个数据库的超级用户的口令验证方式。也就是上面"rootdn"设置的用户的口令。千万不要用明文进行口令验证,一定要用加密的口令,可以使用的加密方式有:CRYPT、MD5、SMD5、SHA 和 SSHA。
directory var/lib/ldap
设置 LDAP 数据库和索引文件所在的目录。在安装阶段指定 LDAP 的后台数据库。
access to dn.base=""
by * read
access to dn.base="cn=Subschema"
by * read
…...
用来定义访问控制列表。
attrs=userPassword #指定"密码"属性
by self write #用户自己可更改
by * auth #所有访问者需要通过认证
到现在为止,服务器基本就配置完成,在启动 slapd 之前可以使用 slaptest 测试一下,slaptest 在/usr/sbin 目录下。出现 config file testing succeeed 就表示配置没有问题了。
清单 4. 测试 OpenLDAP 配置:#/usr/sbin/slaptest bdb_monitor_db_open: monitoring disabled; configure monitor database to enable config file testing succeeded
清单 5. 启动 OpenLDAP:#/usr/local/openldap/libexec/slapd root@localhost.loca ldomain:/usr/local/src/openldap-2.4.30/servers/slapd
可以用 ps -aux 查看,或用以下命令查询服务器,测试服务启动是否成功:
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
如果命令执行成功,返回一些信息,则说明服务器正常运行了。如果启动不成功,它会提示一些出错信息,多数是 slapd.conf 配置出错。仔细核查一下配置文件。如果 OpenLDAP 配置为非匿名访问,请在 ldapsearch 命令中加入-D 和-w 参数。
配置 OpenLDAP 客户机手工配置 OpenLDAP 客户机,编辑/etc/openldap/ldap.conf。
清单 6. ldap.conf 示例:TLS_REQCERT never URI ldap://localhost:389 base dc=base,dc=com binddn cn=manager,dc=base,dc=com bindpw crypt{ae2ec15710d547a0} searchfilter (&(uid=%v)(objectclass=person)) pam_login_attribute uid ldap_version 3 timelimit 30 bind_timelimit 30 pam_lookup_policy yes
URI :访问LDAP server的URI,默认端口为389;启用SSL/TLS时,使用ldaps://host,端口为636。
base :指定默认的base DN。
binddn: 指定默认的bind DN。
bindpw: 认证用户的密码,建议使用密文。