1.ldap服务器安装
[root@ldap ldap]# vim /etc/hosts #本地解析域名
1.1.1.13 willow.com
安装LDAP相关软件:openldap、openldap-servers、openldap-clients
[root@ldap ~]# yum install -y openldap*
[root@ldap ~]# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
设置ldap管理员密码
[root@ldap ~]# slappasswd -s willow
{SSHA}FD+4xgrSYsZA4jcgMjAtrDzt74J2Xy0S
[root@ldap openldap]# vim /etc/openldap/slapd.conf
rootpw {SSHA}E6MCxlhotF+ExXnQZK4zqbZNihHb83IL
修改主配置文件如下:
[root@ldap openldap]# vim /etc/openldap/slapd.conf
database bdb
suffix "dc=willow,dc=com"
rootdn "cn=admin,dc=willow,dc=com"
启用日志功能
[root@ldap openldap]# vim /etc/openldap/slapd.conf
loglevel 296
cachesize 1000
checkpoint 2048 10
[root@ldap openldap]# vim /etc/openldap/slapd.conf
access to *
by self write
by anonymous auth
by * read
配置日志:
[root@ldap openldap]# vim /etc/rsyslog.conf
local4.* /var/log/ldap.log
[root@ldap openldap]# service rsyslog restart
配置数据库:
[root@ldap openldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@ldap ldap]# chown ldap.ldap /var/lib/ldap/DB_CONFIG
[root@ldap ldap]# chmod 700 /var/lib/ldap/DB_CONFIG
[root@ldap ldap]# slaptest -u
config file testing succeeded
[root@ldap ldap]# service slapd restart
[root@ldap ldap]# lsof -i :389
[root@ldap ldap]# netstat -tnlp| grep :389
[root@ldap ldap]# ps -ef | grep ldap | grep -v grep
[root@ldap ldap]# chkconfig slapd on
[root@ldap ldap]# ldapsearch -LLL -W -x -H ldap://willow.com -D "cn=admin,dc=willow,dc=com" -b "dc=willow,dc=com" "(uid=*)"
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
[root@ldap ldap]#
[root@ldap ldap]# rm -rf /etc/openldap/slapd.d/*
[root@ldap ldap]# ls /etc/openldap/slapd.d/
[root@ldap ldap]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
config file testing succeeded
[root@ldap ldap]# chown -R ldap.ldap /etc/openldap/slapd.d/
[root@ldap ldap]# service slapd restart
[root@ldap ldap]# ldapsearch -LLL -W -x -H ldap://willow.com -D "cn=admin,dc=willow,dc=com" -b "dc=willow,dc=com" "(uid=*)"
Enter LDAP Password:
No such object (32)
[root@ldap ldap]# useradd ldapuser1
[root@ldap ldap]# useradd ldapuser2
[root@ldap ldap]# useradd ldapuser3
[root@ldap ldap]# echo redhat | passwd --stdin ldapuser1
[root@ldap ldap]# echo redhat | passwd --stdin ldapuser2
[root@ldap ldap]# echo redhat | passwd --stdin ldapuser3
配置数据库ldif格式文件
[root@ldap ldap]# yum install -y migrationtools
[root@ldap ldap]# grep ldapuser /etc/passwd > user.txt
[root@ldap ldap]# grep ldapuser /etc/group > group.txt
[root@ldap ldap]# vim /usr/share/migrationtools/migrate_common.ph
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "willow.com";
# Default base
$DEFAULT_BASE = "dc=willow,dc=com";
[root@ldap ldap]# /usr/share/migrationtools/migrate_base.pl > base.ldif
[root@ldap ldap]# vim base.ldif #只保留以下内容
dn: dc=willow,dc=com
dc: willow
objectClass: top
objectClass: domain
dn: ou=People,dc=willow,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=willow,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
[root@ldap ldap]# /usr/share/migrationtools/migrate_passwd.pl user.txt user.ldif
[root@ldap ldap]# /usr/share/migrationtools/migrate_group.pl group.txt group.ldif
导入数据库ldif格式文件
[root@ldap ldap]# ldapadd -x -w willow -H ldap://willow.com -D "cn=admin,dc=willow,dc=com" -f base.ldif
adding new entry "dc=willow,dc=com"
adding new entry "ou=People,dc=willow,dc=com"
adding new entry "ou=Group,dc=willow,dc=com"
[root@ldap ldap]# ldapadd -x -w willow -H ldap://willow.com -D "cn=admin,dc=willow,dc=com" -f user.ldif
adding new entry "uid=ldapuser1,ou=People,dc=willow,dc=com"
adding new entry "uid=ldapuser2,ou=People,dc=willow,dc=com"
adding new entry "uid=ldapuser3,ou=People,dc=willow,dc=com"
[root@ldap ldap]# ldapadd -x -w willow -H ldap://willow.com -D "cn=admin,dc=willow,dc=com" -f group.ldif
adding new entry "cn=ldapuser1,ou=Group,dc=willow,dc=com"
adding new entry "cn=ldapuser2,ou=Group,dc=willow,dc=com"
adding new entry "cn=ldapuser3,ou=Group,dc=willow,dc=com"
2.ldap服务器Web
管理配置Web管理接口:利用软件 ldap-account-manager-3.7
[root@ldap ldap]# yum install httpd php php-ldap php-gd
[root@ldap ldap]# cd /var/www/html/
[root@ldap html]# tar xvf /root/ldap-account-manager-3.7.tar.gz
[root@ldap html]# mv ldap-account-manager-3.7 ldap
[root@ldap html]# cd /var/www/html/ldap/config/
[root@ldap config]# cp config.cfg_sample config.cfg
[root@ldap config]# cp lam.conf_sample lam.conf
[root@ldap config]# sed -i 's@cn=Manager@cn=admin@g' lam.conf
[root@ldap config]# sed -i 's@dc=my-domain@dc=willow@g' lam.conf
[root@ldap config]# sed -i 's@dc=yourdomain@dc=willow@g' lam.conf
[root@ldap config]# sed -i 's@dc=org@dc=com@g' lam.conf
[root@ldap config]# chown -R apache.apache /var/www/html/ldap
[root@ldap config]# service httpd restart
点击右上角 LAM configuration --> Edit general settings -->默认密码lam
-->设置访问权限主机和修改密码
返回首页,输入admin帐号的密码willow登入管理页面,
3.图形化设定客户端认证: 方法一
[root@GW ~]# yum install -y openldap-clients nss_ldap setuptool
确保客户端与服务器端解析正确和时间一致
[root@GW ~]# vim /etc/hosts #本地解析域名
1.1.1.13 willow.com
备份现有配置
[root@GW ~]# cp /etc/nsswitch.conf /etc/nsswitch.conf.bak
[root@GW ~]# cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
[root@GW ~]# setup
比较配置前后区别:
[root@GW ~]# vimdiff /etc/nsswitch.conf /etc/nsswitch.conf.bak
[root@GW ~]# vimdiff /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
[root@GW ~]# vim /etc/openldap/ldap.conf #确认有如下两行信息
URI ldap://willow.com/
BASE dc=willow,dc=com
[root@GW ~]# ldapsearch -x -LLL #确保执行成功,即显示条目信息
查看本地是否有ldaptest用户信息,返回无信息,即本地没有此用户信息
[root@GW ~]# cat /etc/passwd | grep ldaptest
直接查看ldaptest的ID,显示有返回用户信息,说明通过了OpenLDAP进行的验证
[root@GW ~]# id ldaptest
uid=10000(ldaptest) gid=501(mygroup) groups=501(mygroup) context=root:system_r:unconfined_t:SystemLow-SystemHigh
getent命令说明也通过了openldap用户认证
[root@GW ~]# getent passwd ldaptest
ldaptest:*:10000:501:ldaptest:/home/ldaptest:/bin/bash
测试ldaptest用户客户端登入:
[root@GW ~]# ssh ldaptest@1.1.1.88
显示没有家目录,但可以正常登入
Could not chdir to home directory/home/ldaptest: No such file or directory
下面解决家目录问题:第一种方法通过autofs+NFS部署实现,另一种方法通过增加模块实现(推荐)
我们这里选择添加pam模块(pam_mkhomedir.so)进行演示:
[ldaptest@GW ~]$ vim /etc/pam.d/sshd
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
再次用ldaptest用户测试登入,家目录显示正常
[root@GW ~]# ssh ldaptest@1.1.1.88
ldaptest@1.1.1.88's password:
Last login: Mon Sep 12 14:15:01 2016 from 1.1.1.144
[ldaptest@GW ~]$ whoami
ldaptest
[ldaptest@GW ~]$ id
uid=10000(ldaptest) gid=501(mygroup) groups=501(mygroup) context=user_u:system_r:unconfined_t
[ldaptest@GW ~]$ pwd
/home/ldaptest
4.修改配置文件设定客户端认证:方法二 (仅供参考)[转载地址在文章末尾]
nslcd进程由nss-pam-ldapd 软件包提供,并根据nslcd.conf配置信息,与后端的认证服务器进行交互。例如,用户、主机名称服务信息、组织、其他数据历史存储、NIS等。
4.1、安装OpenLDAP客户端软件包
yum
install
openldap-clients nss-pam-ldapd
修改文件最后面如下内容。
4.2、修改/etc/nslcd.conf 配置文件
uri ldap:
//192
.168.2.10/
base
dc
=wzlinux,
dc
=com
ssl no
tls_cacertdir
/etc/openldap/cacerts
在文件最后面添加如下内容,注意删除里面的base和host有效的那一行。
4.3、修改pam_ldap.conf 配置文件
uri ldap:
//192
.168.2.10/
base
dc
=wzlinux,
dc
=com
ssl no
tls_cacertdir
/etc/openldap/cacerts
pam_password md5
在文件内添加如下内容
4.4、修改system-auth 认证文件
auth sufficient pam_ldap.so use_first_pass
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
password sufficient pam_ldap.so use_authtok
session optional pam_ldap.so
4.5、修改nsswitch.conf 配置文件
在passwd、shadow、group后面的files 后面添加ldap。
4.6、修改/etc/sysconfig/authconfig 认证文件
USESHADOW=
yes
#启用密码验证
USELDAPAUTH=
yes
#启用OpenLDAP验证
USELOCAUTHORIZE=
yes
#启用本地验证
USELDAP=
yes
#启用LDAP认证协议
4.7、加载nslce进程
service nslcd restart
此部分来源: 以上我简单略过的大家可以参照图形化安装修改的一些文件内容来修改,相对来说图形化安装比较方便,但是如果遇到大批量安装,使用命令行部署还是比较简便的。
5.命令行部署设定客户端认证:方法三 (仅供参考) [转载地址在文章末尾]
运行一下命令,可以根据帮助文档进行个性化定制。
authconfig --enablemkhomedir \
--disableldaptls \
--enablemd5 \
--enableldap \
--enableldapauth \
--ldapserver=ldap:
//192
.168.2.10 \
--ldapbasedn=
"dc=wzlinux,dc=com"
\
--enableshadow \
--update
可以看到正常登录,创建家目录。之前我们是在/etc/pam.d/sshd里面添加的创建家目录认证,我们使用命令部署之后,我看它加在了/etc/pam.d/system-auth里面,之前我手动修改配置文件的时候不行,图形化安装也不行,大家可以试试看看是否OK,具体如下:
用户密码设置
默认情况下用户是不可以修改密码的,因为我服务端开通了修改密码的权限,所以我这里用户可以个性化修改自己的密码,添加的服务端代码如下,具体操作请查看我的服务端部署文档。
密码修改演示如下。
6.ldap服务器sasl认证
[root@ldap config]# yum install -y *sasl*
查看认证机制或列表
saslauthd 2.1.23
[root@ldap config]# saslauthd -v
authentication mechanisms: getpwen:qt kerberos5 pam rimap shadow ldap
启用本地shadow认证
[root@ldap config]# vim /etc/sysconfig/saslauthd
MECH=shadow
[root@ldap config]# service saslauthd start
[root@ldap config]# testsaslauthd -u willow -p redhat #本地帐号测试成功
0: OK "Success."
[root@ldap config]# testsaslauthd -u ldaptest -p redhat #ldap帐号测试失败
0: NO "authentication failed
启用本地ldap认证
[root@ldap config]# vim /etc/sysconfig/saslauthd
MECH=ldap
[root@ldap config]# service saslauthd restart
[root@ldap config]# testsaslauthd -u willow -p redhat #本地帐号测试失败
0: NO "authentication failed"
[root@ldap config]# testsaslauthd -u ldaptest -p redhat #ldap帐号测试失败
0: NO "authentication failed"
配置指向ldap服务器文件认证文件
[root@ldap config]# vim /etc/saslauthd.conf
ldap_servers: ldap://willow.com/
ldap_bind_dn: cn=admin,dc=willow,dc=com
ldap_bind_pw: willow
ldap_search_base: ou=People,dc=willow,dc=com
ldap_filter: uid=%U
ldap_password_attr: userPassword
[root@ldap config]# testsaslauthd -u willow -p redhat #本地帐号测试失败
0: NO "authentication failed"
[root@ldap config]# testsaslauthd -u ldaptest -p 123456 #ldap帐号测试成功
0: OK "Success."
7.将linux加入到AD域中并使用域用户登入linux系统
前提:AD域主机名: Server1.willow.com IP地址:1.1.1.1
客户机:GW.willow.com IP地址:1.1.1.88
[root@GW ~]# vim /etc/hosts
1.1.1.88 GW.willow.com GW
1.1.1.1 Server1.willow.com Server1
或者指定DNS解析
[root@GW ~]# vim /etc/resolv.conf
nameserver 1.1.1.1
[root@GW ~]# setup
最后正常显示如下画面:加入AD域中
[root@GW ~]# wbinfo -u 显示AD域 用户信息
[root@GW ~]# wbinfo -g 显示AD域 组信息
将显示的用户或组前缀去除,如WILLOW\a1显示成a1
[root@GW ~]# vim /etc/samba/smb.conf
winbind use default domain = true
[root@GW ~]# service winbind restart
[root@GW ~]# wbinfo -u 显示AD域 用户信息但无WILLOW前缀
[root@GW ~]# wbinfo -g 显示AD域 组信息但无WILLOW前缀