实验1:
sssd :安装在客户端,暂时缓存ldap server 端信息,
ldap server 安装:
yum install openldap openldap-servers openldap-clients -y #openldap-clients包提供客户端命令的
cd /etc/openldap/
mv slapd.d slapd.d.bak
cp -p slapd.conf.bak slapd.conf
ldap.conf 此文件保留客户端的信息
vim slapd.conf
database bdb
suffix "dc=example,dc=com" #设置目录信息树的后缀
checkpoint 1024 15
rootdn "cn=Manager,dc=example,dc=com" #设置LDAP管理者的DN
rootpw westos #设置ldap的管理密码,如果想要密文密码,则需用slappasswd 来生成密文密码
access to *
by dn.exact="cn=Manager,dc=example,dc=com" read
by * none
cd /usr/share/doc/openldap-servers-2.4.19/
cp DB_CONFIG.example /var/lib/ldap/
cd /var/lib/ldap/
cp DB_CONFIG.example DB_CONFIG
chown ldap.ldap DB_CONFIG
/etc/init.d/slapd start
ll /var/lib/ldap/ 会有初始化文件
下面进行数据导入:
cd /usr/share/doc/openldap-servers-2.4.19/
less README.migration
yum install migrationtools -y
cd /usr/share/migrationtools/
tail /etc/passwd
vim users
ldapuser1:westos:500:500:LDAP User:/home/ldapuser1:/
ldapuser2:westos:501:501:LDAP User:/home/ldapuser2:/bin/bash
ldapuser3:westos:502:502:LDAP User:/home/ldapuser3:/bin/bash
tail /etc/group
vim groups
ldapuser1:x:500:
ldapuser2:x:501:
ldapuser3:x:502:
vim migrate_common.ph
$DEFAULT_MAIL_DOMAIN = "example.com";
$DEFAULT_BASE = "dc=example,dc=com";
./migrate_base.pl
./migrate_base.pl > base.ldif #将文件信息转换成ldap 语句,并导入到base.ldif
vim base.ldif 只保留dn,people,group信息
dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain
dn: ou=People,dc=example,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=example,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
./migrate_passwd.pl users > user.ldif
./migrate_group.pl groups >group.ldif
ll *.ldif
ldapadd -W -x -D "cn=manager,dc=example,dc=com" -f base.ldif
注意:/etc/openldap/slapd.conf配置文件里面 rootpw 行首不能有空格,且rootpw和后面的密码字段需用tab隔开。要不然报错:ldap_bind: Invalid credentials (49)。
ldapadd -W -x -D "cn=manager,dc=example,dc=com" -f user.ldif
ldapadd -W -x -D "cn=manager,dc=example,dc=com" -f group.ldif
ldapsearch -b "dc=example,dc=com" -x
ldapsearch -b "ou=Group,dc=example,dc=com" -x
ldapsearch -b "ou=People,dc=example,dc=com" -x
如果想删除,则
ldapdelete -W -x -D “ou=Group,dc=example,dc=com” “cn=ldapuser2,ou=Group,dc=example,dc=com“ #ou=Group,dc=example,dc=com指定ou的,cn=ldapuser2,ou=Group,dc=example,dc=com 是ldapsearch -x -b "ou=Group,dc=example,dc=com" 显示的dn: cn=ldapuser2,ou=Group,dc=example,dc=com 中的dn:名字
客户端进行帐号认证:
yum install sssd -y
安装在客户端,暂时缓存ldap server 端信息
authconfig-tui 如果提示需要/lib64/libnss_ldap.so.2
yum install /lib64/libnss_ldap.so.2 -y
authconfig-tui
getent passwd 默认只显示本机帐号,如果想要显示出来,则编辑/etc/sssd/sssd.conf
vim /etc/sssd/sssd.conf
[domain/default] 在这部分
enumerate = False
authconfig-tui
不选TLS,Server: ldap://192.168.0.96/,Base DN: dc=example,dc=com
getent passwd ldapuser1
getent passwd ldapuser2
getent passwd ldapuser3
su - ldapuser1
ldap TLS加密:
服务端:
cd /etc/openldap/
vim slapd.conf
TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt #将前面的#去掉
TLSCertificateFile /etc/pki/tls/certs/slapd.pem
TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem
cd /etc/pki/tls/certs
rm slapd.pem -f 删除原有的的认证文件
make slapd.pem 确保主机名和本机的hostname一致
chmod 640 slapd.pem
chgrp ldap slapd.pem
scp slapd.pem 192.168.0.84:/etc/openldap/cacerts/ #将认证文件发给客户端的/etc/openldap/cacerts/ 目录
/etc/init.d/slapd restart
客户端:
authconfig-tui
认证选:[*] Use LDAP ,[*] Use MD5 Passwords,[*] Use LDAP Authentication,[*] Local authorization is sufficient
LDAP server:选[*] Use TLS, Server: ldap://desktop96.example.com/ ,Base DN: dc=example,dc=com 。 #desktop96.example.com 是服务端的hostname。使用TLS一定要用hostname。
测试:
getent passwd ldapuser1
getent passwd ldapuser2
getent passwd ldapuser3
su - ldapuser1
注:如果getent passwd ldapuser1 没有输出信息,日志又包不能开启TLS 加密,则需修改系统时间。
ldap 服务的主备:
master: rhel6 192.168.0.250
# yum install openldap-servers openldap-clients -y
# cd /etc/openldap
# rm -fr slapd.d
# cp slapd.conf.bak slapd.conf
# chgrp ldap slapd.conf
# cp /usr/share/doc/openldap-servers-2.4.19/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap.ldap /var/lib/ldap/DB_CONFIG
vim /etc/openldap/slapd.conf
include /etc/openldap/schema/misc.schema 注释掉次行
moduleload syncprov.la 添加次行
database bdb
suffix "dc=westos.org"
checkpoint 1024 15
rootdn "cn=Manager,dc=westos.org"
rootpw westos
overlay syncprov 添加此3行
syncprov-checkpoint 100 10
syncprov-sessionlog 100
access to *
by dn.exact="cn=Manager,dc=westos.org" read
by * none
service slapd start
backup: rhel6 192.168.0.231
# yum install openldap-servers openldap-clients -y
# cd /etc/openldap
# rm -fr slapd.d
# cp slapd.conf.bak slapd.conf
# chgrp ldap slapd.conf
# cp /usr/share/doc/openldap-servers-2.4.19/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap.ldap /var/lib/ldap/DB_CONFIG
vim /etc/openldap/slapd.conf
database bdb
suffix "dc=westos.org"
checkpoint 1024 15
rootdn "cn=Manager,dc=westos.org"
rootpw westos
syncrepl rid=001
provider=ldap://192.168.0.250:389
type=refreshAndPersist
searchbase="dc=westos.org"
attrs=*
schemachecking=off
bindmethod=simple
binddn="cn=Manager,dc=westos.org"
credentials="westos"
retry="60 +" 添加上面10行
access to *
by dn.exact="cn=Manager,dc=westos.org" read
by * none
service slapd start
注: 1. iptables 要开放slapd的端口。
2. 如果master上已经有数据,那么在启动slapd之前,需要执行
scp /var/lib/ldap/* backup:/var/lib/ldap 确保backup上的数据与master上的一致。
在主ldap server ,authconfig-tui 进去去掉ldap 认证。
然后在主ldap server ,
ldapsearch -x -b "dc=example,dc=com" 查看dn 的名称
ldapdelete -W -x -D "cn=manager,dc=example,dc=com" "cn=ldapuser3,ou=Group,dc=example,dc=com"
然后在备份 ldap server 上面查看:
ldapsearch -x -b "dc=example,dc=com" 就没有删除的用户了。
phpldapadmin-1.2.2 ldap的图形化管理软件,确保安装php,php-ldap 软件包,因为这个图形管理工具就是用php编写的。
tar zxf phpldapadmin-1.2.2 -C /var/www/html/
cd /var/www/html/
mv phpldapadmin phpldap
cd phpldap
cd config/
cp config.php.example config.php
此时可以用浏览器访问:192.168.0.186/phpldap 输入用户名和密码就行了。在里面也可以手动添加用户,修改用户的相关信息。