CentOS下LDAP服务配置指南
时间:2014-05-20 11:36 来源:linux.it.net.cn 作者:IT网
1. LDAP服务器端配置
2. LDAP客户端配置
3. LDAP服务器复制
4. LDAP服务器安全通信
一LDAP服务器端配置管理
1. LDAP服务器软件包安装
CentOS系统中要实现openLDAP的功能必须要安装openldap,openldap-servers,openldap-c
Lients三个软件包。CentOS安装光盘中提供LDAP服务器的RPM安装包版本为2.3.27。其中openldap包已经默认安装,用来提供LDAP服务的基本文件目录。Openldap-servers提供
服务端功能,openldap-clients提供客户端的搜索工具,这两个包必须手动安装。
#rpm –ivh openldap-servers-2.3.27-8.e15-1.3.i386.rpm
#rpm –ivh openldap-clients-2.3.27-8.e15-1.3.i386.rpm
2. 创建复制BDB数据库配置文件
LDAP服务器默认采用BDB(伯克利)数据库作为后台,CentOS中已经默认安装(如没有也可以RPM或者tar包安装).需要先将/etc/openldap/目录下的DB-CONFIG.example文件复
制到/var/lib/ldap/目录下并更名为DB-CONFIG并更改权限为ldap所有。
#cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
#chown ldap:ldap /var/lib/ldap/DB_CONFIG
3服务器文件配置.
LDAP服务器的主配置文件为/etc/openldap/slapd.conf,包含了复制功能。
(1) 找到
suffix “dc=my-domain,dc=com”
rootdn “cn=Manager,dc=my-domain,dc=com” 两行。
根据实际情况修改为
suffix “dc=boy,dc=com” 设定域名后缀
rootdn “cn=Manager,dc=boy,dc=com ” 超级管理员
(2)哈希密码 : rootpw是管理员的密码,但是明文密码存放有很大的安全隐患,可以用哈希散列的方式存储提高安全度。
#slappasswd –h {SSHA} > 1.txt
将哈希后产生的散列值添加进slapd.conf文件
rootpw {SSHA} 散列值
(3)手动添加日志功能
LDAP服务器需要手动添加日志功能。/etc/openldap/slapd.conf中末行添加“loglevel 296 ”。这是一个比较详细的日志级别。/etc/syslog.conf中添加“local4.* /var/log/ldap.log ”
确定LDAP服务器的日志位置。
(4)配置slapd.conf文件使客户端以MD5方式改变密码
sample security restrictions 下添加
password—hash {MD5}
(5)重启日志服务
#service syslog restart
(6)开启LDAP服务。
LDAP服务器的配置文件是slapd.conf,但是启动服务文件名/etc/init.d/ldap,所以启动命令
为:
# service ldap restart
#/etc/init.d/ldap restart
查看服务器进程:
#ps aux | grep ldap
查看端口:
#netstat –an | grep 389
如果启动正常应该有“389”端口信息。普通LDAP服务开放389端口。查看日志文件/var/log/ldap.log(系统随系统日志服务重启时自动创建)应该有启动信息。
设置系统在3,5级别启动时自动开启服务
#chkconfig —level 3 5 ldap on
4 迁移用户数据到目录服务数据库
LDAP服务器用户帐户数据的移植最简单的方法是使用PADL软件公司
(http://www.padl.org)提供的开源移植工具,既一系列用perl编程语言写的脚本文件可以胜任这个工作。这些脚本文件在/usr/share/openldap/migration目录中(也是由openldap-serversRPM包安装生成)。
#cd /usr/share/openldap/migration/
<1>修改migrate_common.ph 脚本。
$DEFAULT_MAIL_DOMAIN=“padl.com”;-à “boy.com”
$DEFAULT_BASE=“dc=padl,dc=com”à “dc=boy,dc=com”
这样就建立了LDAP 目录数据库的基准辨别名(BDN)
<2>使用迁移脚本migrate_base.pl为目录创建基本的数据结构
# ./migrate_base.pl> ~/base.ldif #cd /root/下
可以查看到base.ldif文件已经创建了LDAP形式的基本数据的结构化和层次化。
将base.ldif 文件的内容以LDAP服务命令行的形式导入数据库
#ldapadd –x –D“cn=Manager,dc=boy,dc=com” –W –f base.ldif
会要求输入先前创建超级管理员的密码。导入后再用命令查用一下。
#ldapsearch –x –H ldap://服务器地址 –b ‘dc=boy,dc=com’
可以用此命令查询到数据库中已用了基本的层次结构
<3>使用迁移脚本migrate_passwd.pl 和migrate_group.pl将文件
/etc/passwd 和/etc/group中的用户和组信息转化为LDIF(LDAP数
椐交换格式文件)结构形式。
cd /usr/share/openldap/migration/目录下
#./migrate_passwd.pl /etc/passwd ~/passwd.ldif
#./migrate_group.pl /etc/group ~/group.ldif
根/root/目录下:
#ldapadd –x –D“cn=Manager,dc=boy,dc=com” –W –f passwd.ldif
#ldapadd –x –D “cn=Manager,dc=boy,dc=com” –W –f group.ldif
查询用户信息:
#ldapadd –x –LLL | more
应该有用户数据。
二 客户端配置
LDAP服务器的客户端命令RPM包为openldap-clients,手动安装后会有
/etc/openldap/ldap.conf文件。 除此之外要实现LDAP服务客户端必须配置
/etc/nsswitch.conf, /etc/sysconfig/authing, /etc/openldap/ldap.conf, /etc/ldap.conf
/etc/pam.d/system-auth五个文件。
<1>配置/etc/nsswith.conf
/etc/nsswith.conf文件由glibc-2.5-24生成,CentOS5.2中缺省安装。该文件用
于名称转换服务。通常LINUX系统身份验证读取本地文件,要使身份验证查询
通过LDAP服务器必须在该文件中找到passwd;shadow;group;三行在files后空格添加“ldap”
passwd: files ldap
shadow: files ldap
group: files ldap
<2>配置/etc/sysconfig/authconfig文件提供身份验证支持LDAP功能
/etc/sysconfig/authconfig 文件由authconfig-5.3.21-3.e15RPM包生成系统默认安装。配置该文件用来跟踪LDAP身份认证机制是否正确启用。找到以下七行,
将值确定为“yes”。
USESYSNETAUTH=yes
USESHADOW=yes
USELOCAUTHORIZE=yes
USELDAP=yes
USELDAPAUTH=yes
USEMKHOMEDIR=yes
PASSWDALGORITHM=yes
也可以用authconfig-tui命令打开一个图形化的界面来配置
<3>配置/etc/pam.d/system-auth文件
身份验证服务是实际向LDAP验证用户身份的服务。可插入身份验证模块
(PAM)提供了本地Linux身份验证服务。pam_unix.so模块是通用模块,使
PAM机制对本地的/etc/passwd文件检查用户帐号。PAMLDAP模块可以用来将
身份验证重定向到LDAP目录上。身份验证本身是由PAM程序执行的,它从身份验证候选机制中获取用户名,将其绑定到openLDAP 服务器上。如果绑定成功,PAM会报告说这个用户已经成功通过了pam_ldap.so提供的身份验证测试。
根据PAM的配置不同,在用户看到命令提示符之前可能会执行其它测试。
/etc/pam.d/system-auth文件是CentOS5.2的系统认证PAM文件。在该文件的
auth,account,password,session四段中pam_unix.so模块后添加pam_ldap.so模块使身份验证先对本地的/etc/passwd文件检查用户帐号,然后再对LDAP服务器进行检查。同时因为是LDAP认证需要为用户创建根目录,所以还必须在会话(SESSION)阶段增加pam_mkhomedir.so模块,为用户登录自动创建宿主目录。
#cp /etc/pam.d/system-auth /etc/pam.d/system-auth.old
*首先备份系统认证文件,同时PAM配置文件至关重要,稍有差池,用户可能就
不能登录,所以需开两个控制台调试以防万一。
完整配置文件如下
#%PAM-1.0
#This file is auto-generated
#User changes will be destroyed the next time authconfig is run
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid>=500 quiet
auth sufficient pam_ldap.so
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_succeed_if.so uid<500 quiet
account required pam_ldap.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok md5
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore]pam_succeed_if.so service in crond quiet
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session optional pam_ldap.so
<4>/etc/openldap/ldap.conf.
该文件是LDAP服务器的客户端搜索工具文件,由openldap_clientsRPM包生成。
配置如下:
BASE dc=boy,dc=com à 搜索路径
URI ldap://主服务器名(主), ldap://辅助服务器名 (备)
配置搜索基准域名和路径.其中第二行HOST=主HOST= 备这样的形式也可.
客户端调试:
#ldapserch –x –LLL
#ldapsearch –x –LLL >ldapusers.ldif
#ldapsearch –x –LLL user1>user1.ldif
编写一个ldif格式文件用于调试.
dn:uid=testuser,ou=People,dc=boy,dc=com
uid: testuser
cn: testuser
objectClass:account
objectClass:posixAccount
objectClass:shadowAccount
loginShell:/bin/bash
uidNumber:1001
gidNumber:1001
homeDirectory:/home/user1
host:
ldapadd –x –D“cn=Manager,dc=boy,dc=com” –W –f testuser.ldif
<5>/etc/ldap.conf 文件。
该文件也是LDAP服务器客户端文件,但是与/etc/openldap/ldap.conf文件有不同功能,两者不可混淆。该文件由nss_ldap-253-12.e15RPM包生成,系统默认安装。/lib/security/pam_ldap.so也是由该RPM包生成。
Rpm包nss_ldap-253说明
nss_ldap-253: 包括两个LDAP访问客户机:nss_ldap和pam_ldap。nss_ldap是一组C库扩展,提供系统命名服务(NSS),也叫名称转换服务。需要配置为使用
LDAP来解析诸如用户和组帐号资源。
配置如下:
找到如下三行去“#”并配置
base dc=boy,dc=com à 指定域名
uri ldap://主服务器名或地址 ldap://辅助服务器名或地址
pam_check_host_attr yes à 帐户登录使用主机属性,实现分组认证
或者:
pam_groupdn cn= 主机名 ,ou=Hosts,dc=boy,dc=com
pam_member_attribute uniquemember
编一个设备登录组。
<6>开启名称缓存服务nscd.
通过网络方式查询用户占用带宽且有时延,开启名称缓存服务可以节省网络资源提高查询效率。
service nscd restart
chkconfig --level 3 5 nscd on
现在可以在客户端进行登录认证调试。
在客户端使用getent passwd, getent group 命令会显示所有的用户和组包括本地
/etc/passwd/下的和LDAP服务器端数据库上的。
(责任编辑:IT)
1. LDAP服务器端配置 2. LDAP客户端配置 3. LDAP服务器复制 4. LDAP服务器安全通信 一LDAP服务器端配置管理 1. LDAP服务器软件包安装 CentOS系统中要实现openLDAP的功能必须要安装openldap,openldap-servers,openldap-c Lients三个软件包。CentOS安装光盘中提供LDAP服务器的RPM安装包版本为2.3.27。其中openldap包已经默认安装,用来提供LDAP服务的基本文件目录。Openldap-servers提供 服务端功能,openldap-clients提供客户端的搜索工具,这两个包必须手动安装。 #rpm –ivh openldap-servers-2.3.27-8.e15-1.3.i386.rpm #rpm –ivh openldap-clients-2.3.27-8.e15-1.3.i386.rpm 2. 创建复制BDB数据库配置文件 LDAP服务器默认采用BDB(伯克利)数据库作为后台,CentOS中已经默认安装(如没有也可以RPM或者tar包安装).需要先将/etc/openldap/目录下的DB-CONFIG.example文件复 制到/var/lib/ldap/目录下并更名为DB-CONFIG并更改权限为ldap所有。 #cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG #chown ldap:ldap /var/lib/ldap/DB_CONFIG 3服务器文件配置. LDAP服务器的主配置文件为/etc/openldap/slapd.conf,包含了复制功能。 (1) 找到 suffix “dc=my-domain,dc=com” rootdn “cn=Manager,dc=my-domain,dc=com” 两行。 根据实际情况修改为 suffix “dc=boy,dc=com” 设定域名后缀 rootdn “cn=Manager,dc=boy,dc=com ” 超级管理员 (2)哈希密码 : rootpw是管理员的密码,但是明文密码存放有很大的安全隐患,可以用哈希散列的方式存储提高安全度。 #slappasswd –h {SSHA} > 1.txt 将哈希后产生的散列值添加进slapd.conf文件 rootpw {SSHA} 散列值 (3)手动添加日志功能 LDAP服务器需要手动添加日志功能。/etc/openldap/slapd.conf中末行添加“loglevel 296 ”。这是一个比较详细的日志级别。/etc/syslog.conf中添加“local4.* /var/log/ldap.log ” 确定LDAP服务器的日志位置。 (4)配置slapd.conf文件使客户端以MD5方式改变密码 sample security restrictions 下添加 password—hash {MD5} (5)重启日志服务 #service syslog restart (6)开启LDAP服务。 LDAP服务器的配置文件是slapd.conf,但是启动服务文件名/etc/init.d/ldap,所以启动命令 为: # service ldap restart #/etc/init.d/ldap restart 查看服务器进程: #ps aux | grep ldap 查看端口: #netstat –an | grep 389 如果启动正常应该有“389”端口信息。普通LDAP服务开放389端口。查看日志文件/var/log/ldap.log(系统随系统日志服务重启时自动创建)应该有启动信息。 设置系统在3,5级别启动时自动开启服务 #chkconfig —level 3 5 ldap on 4 迁移用户数据到目录服务数据库 LDAP服务器用户帐户数据的移植最简单的方法是使用PADL软件公司 (http://www.padl.org)提供的开源移植工具,既一系列用perl编程语言写的脚本文件可以胜任这个工作。这些脚本文件在/usr/share/openldap/migration目录中(也是由openldap-serversRPM包安装生成)。 #cd /usr/share/openldap/migration/ <1>修改migrate_common.ph 脚本。 $DEFAULT_MAIL_DOMAIN=“padl.com”;-à “boy.com” $DEFAULT_BASE=“dc=padl,dc=com”à “dc=boy,dc=com” 这样就建立了LDAP 目录数据库的基准辨别名(BDN) <2>使用迁移脚本migrate_base.pl为目录创建基本的数据结构 # ./migrate_base.pl> ~/base.ldif #cd /root/下 可以查看到base.ldif文件已经创建了LDAP形式的基本数据的结构化和层次化。 将base.ldif 文件的内容以LDAP服务命令行的形式导入数据库 #ldapadd –x –D“cn=Manager,dc=boy,dc=com” –W –f base.ldif 会要求输入先前创建超级管理员的密码。导入后再用命令查用一下。 #ldapsearch –x –H ldap://服务器地址 –b ‘dc=boy,dc=com’ 可以用此命令查询到数据库中已用了基本的层次结构 <3>使用迁移脚本migrate_passwd.pl 和migrate_group.pl将文件 /etc/passwd 和/etc/group中的用户和组信息转化为LDIF(LDAP数 椐交换格式文件)结构形式。 cd /usr/share/openldap/migration/目录下 #./migrate_passwd.pl /etc/passwd ~/passwd.ldif #./migrate_group.pl /etc/group ~/group.ldif 根/root/目录下: #ldapadd –x –D“cn=Manager,dc=boy,dc=com” –W –f passwd.ldif #ldapadd –x –D “cn=Manager,dc=boy,dc=com” –W –f group.ldif 查询用户信息: #ldapadd –x –LLL | more 应该有用户数据。 二 客户端配置 LDAP服务器的客户端命令RPM包为openldap-clients,手动安装后会有 /etc/openldap/ldap.conf文件。 除此之外要实现LDAP服务客户端必须配置 /etc/nsswitch.conf, /etc/sysconfig/authing, /etc/openldap/ldap.conf, /etc/ldap.conf /etc/pam.d/system-auth五个文件。 <1>配置/etc/nsswith.conf /etc/nsswith.conf文件由glibc-2.5-24生成,CentOS5.2中缺省安装。该文件用 于名称转换服务。通常LINUX系统身份验证读取本地文件,要使身份验证查询 通过LDAP服务器必须在该文件中找到passwd;shadow;group;三行在files后空格添加“ldap” passwd: files ldap shadow: files ldap group: files ldap <2>配置/etc/sysconfig/authconfig文件提供身份验证支持LDAP功能 /etc/sysconfig/authconfig 文件由authconfig-5.3.21-3.e15RPM包生成系统默认安装。配置该文件用来跟踪LDAP身份认证机制是否正确启用。找到以下七行, 将值确定为“yes”。 USESYSNETAUTH=yes USESHADOW=yes USELOCAUTHORIZE=yes USELDAP=yes USELDAPAUTH=yes USEMKHOMEDIR=yes PASSWDALGORITHM=yes 也可以用authconfig-tui命令打开一个图形化的界面来配置 <3>配置/etc/pam.d/system-auth文件 身份验证服务是实际向LDAP验证用户身份的服务。可插入身份验证模块 (PAM)提供了本地Linux身份验证服务。pam_unix.so模块是通用模块,使 PAM机制对本地的/etc/passwd文件检查用户帐号。PAMLDAP模块可以用来将 身份验证重定向到LDAP目录上。身份验证本身是由PAM程序执行的,它从身份验证候选机制中获取用户名,将其绑定到openLDAP 服务器上。如果绑定成功,PAM会报告说这个用户已经成功通过了pam_ldap.so提供的身份验证测试。 根据PAM的配置不同,在用户看到命令提示符之前可能会执行其它测试。 /etc/pam.d/system-auth文件是CentOS5.2的系统认证PAM文件。在该文件的 auth,account,password,session四段中pam_unix.so模块后添加pam_ldap.so模块使身份验证先对本地的/etc/passwd文件检查用户帐号,然后再对LDAP服务器进行检查。同时因为是LDAP认证需要为用户创建根目录,所以还必须在会话(SESSION)阶段增加pam_mkhomedir.so模块,为用户登录自动创建宿主目录。 #cp /etc/pam.d/system-auth /etc/pam.d/system-auth.old *首先备份系统认证文件,同时PAM配置文件至关重要,稍有差池,用户可能就 不能登录,所以需开两个控制台调试以防万一。 完整配置文件如下 #%PAM-1.0 #This file is auto-generated #User changes will be destroyed the next time authconfig is run auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid>=500 quiet auth sufficient pam_ldap.so auth required pam_deny.so account required pam_unix.so account sufficient pam_succeed_if.so uid<500 quiet account required pam_ldap.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok md5 password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore]pam_succeed_if.so service in crond quiet session required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 session optional pam_ldap.so <4>/etc/openldap/ldap.conf. 该文件是LDAP服务器的客户端搜索工具文件,由openldap_clientsRPM包生成。 配置如下: BASE dc=boy,dc=com à 搜索路径 URI ldap://主服务器名(主), ldap://辅助服务器名 (备) 配置搜索基准域名和路径.其中第二行HOST=主HOST= 备这样的形式也可. 客户端调试: #ldapserch –x –LLL #ldapsearch –x –LLL >ldapusers.ldif #ldapsearch –x –LLL user1>user1.ldif 编写一个ldif格式文件用于调试. dn:uid=testuser,ou=People,dc=boy,dc=com uid: testuser cn: testuser objectClass:account objectClass:posixAccount objectClass:shadowAccount loginShell:/bin/bash uidNumber:1001 gidNumber:1001 homeDirectory:/home/user1 host: ldapadd –x –D“cn=Manager,dc=boy,dc=com” –W –f testuser.ldif <5>/etc/ldap.conf 文件。 该文件也是LDAP服务器客户端文件,但是与/etc/openldap/ldap.conf文件有不同功能,两者不可混淆。该文件由nss_ldap-253-12.e15RPM包生成,系统默认安装。/lib/security/pam_ldap.so也是由该RPM包生成。 Rpm包nss_ldap-253说明 nss_ldap-253: 包括两个LDAP访问客户机:nss_ldap和pam_ldap。nss_ldap是一组C库扩展,提供系统命名服务(NSS),也叫名称转换服务。需要配置为使用 LDAP来解析诸如用户和组帐号资源。 配置如下: 找到如下三行去“#”并配置 base dc=boy,dc=com à 指定域名 uri ldap://主服务器名或地址 ldap://辅助服务器名或地址 pam_check_host_attr yes à 帐户登录使用主机属性,实现分组认证 或者: pam_groupdn cn= 主机名 ,ou=Hosts,dc=boy,dc=com pam_member_attribute uniquemember 编一个设备登录组。 <6>开启名称缓存服务nscd. 通过网络方式查询用户占用带宽且有时延,开启名称缓存服务可以节省网络资源提高查询效率。 service nscd restart chkconfig --level 3 5 nscd on 现在可以在客户端进行登录认证调试。 在客户端使用getent passwd, getent group 命令会显示所有的用户和组包括本地 /etc/passwd/下的和LDAP服务器端数据库上的。 (责任编辑:IT) |