您的位置:首页 > 运维架构 > Linux

centos6.5部署openldap信息存储主机快速登录

2014-08-25 22:47 453 查看
本文系统:Centos6.5_x64
ip:192.168.28.139
客户端:192.168.28.141

一、ldap的部署、用户信息的存储
二、利用ldap数据库用户登录其他主机
三、快速登录主机(无需输入密码)

推荐大家可以先了解下AD域的结构,一些概念性的东西,比如树、林、组织单位、资源等

openldap 可以看作是nis的升级,把他想象成资料库的一种就好了

一、ldap的部署、用户信息的存储
1、安装openldap
[root@master ~]# yum install openldap openldap-devel openldap-servers openldap-clients -y
2、配置文件模版
[root@master ~]# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
修改配置文件
[root@master ~]# vim /etc/openldap/slapd.conf
26 pidfile         /var/run/openldap/slapd.pid
27 argsfile        /var/run/openldap/slapd.args
28 loglevel        1
115 suffix          "dc=lansgg,dc=com"
117 rootdn          "cn=admin,dc=lansgg,dc=com"
121 rootpw          adminpw
这里管理员的密码使用了明文,也可以使用加密形式,方法如下:
[root@master ~]# slappasswd
New password:
Re-enter new password:
{SSHA}7EJGErpaeX3Zd6rxfxVzNVwSm2UC1e/T
将密文串替换成adminpw即可;
你也可以指定加密方式:
[root@master ~]# slappasswd -h {md5}
New password:
Re-enter new password:
{MD5}cOdqFdoA5jAa3nGMyUFveQ==
loglevel表示日志级别:这里为1,表示所有日志;一般正式环境配置256即可
-1 记录所有的信息
0 不记录debug
1 跟踪功能调用的信息
2 包处理的debug信息
4 丰富的debug信息
8 连接管理信息
16 包的收发信息
32 搜索过滤的处理过程
64 配置文件的处理过程
128 访问控制列表处理过程
256 连接、操作及其结果的统计数据
512 向客户端返回的结果的统计信息
1024 与shell后端的通信信息
2048 显示记录条目的分析信息
4096 数据库缓存处理信息
8192 数据库索引
16384 从服务器数据同步资源消耗处理信息
配置ldap日志输出
[root@master ~]# vim /etc/rsyslog.conf
## ldap
local4.*                                                /var/log/ldap.log
[root@master ~]# /etc/init.d/rsyslog restart
[root@master ~]# /etc/init.d/slapd start
正在启动 slapd:                                           [确定]
[root@master ~]# netstat -natpul |grep slapd
tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      53482/slapd
tcp        0      0 :::389                      :::*                        LISTEN      53482/slapd
拷贝数据文件
[root@master openldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@master ~]# chown ldap:ldap /var/lib/ldap/DB_CONFIG
[root@master openldap]# /etc/init.d/slapd restart
推荐步骤:
[root@master ~]# rm /etc/openldap/slapd.d/*
/etc/init.d/slapd restart
没有这步,当下面导入数据的时候会报错,(49)

测试下配置
[root@master openldap]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
3、数据录入
服务器正常运作后,就可以录入信息了。信息的录入有三种方法,一种是手工录入,一种是.ldif文件格式录入,一种是脚本自动录入。
1>、手动录入:
建立DN:( Distinguished Name,每个叶子结点到根的路径就是DN)
[root@master openldap]# ldapadd -x -D 'cn=admin,dc=lansgg,dc=com' -W
Enter LDAP Password:
dn: dc=lansgg,dc=com
objectClass: dcObject
objectClass: organization
dc: lansgg
o: Corporation
description: d Corporation
adding new entry "dc=lansgg,dc=com"      #结束以ctrl+d
建立RDN:(Relative Distinguished Name,叶子结点本身的名字是RDN)
[root@master openldap]# ldapadd -x -D 'cn=admin,dc=lansgg,dc=com' -W
Enter LDAP Password:
dn: uid=qq,dc=lansgg,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: qq
cn: qq
sn: qq
telephoneNumber: 138888888
description: openldap test
telexNumber: tex-8888888
street: my street
postOfficeBox: postofficebox
displayName: qqdisplay
homePhone: home1111111
mobile: mobile99999
mail:qq@qq.com
adding new entry "uid=qq,dc=lansgg,dc=com"
手动已经录入,进行查看:
[root@master ~]# ldapsearch -x -b 'dc=lansgg,dc=com' |more
# extended LDIF
#
# LDAPv3
# base <dc=lansgg,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# lansgg.com
dn: dc=lansgg,dc=com
objectClass: dcObject
objectClass: organization
dc: lansgg
o: Corporation
description: d Corporation

# qq, lansgg.com
dn: uid=qq,dc=lansgg,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: qq
cn: qq
sn: qq
telephoneNumber: 138888888
description: openldap test
telexNumber: tex-8888888
street: my street
postOfficeBox: postofficebox
displayName: qqdisplay
homePhone: home1111111
mobile: mobile99999
mail: qq@qq.com

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries:
2>、文件方式:
这里将系统帐号导出成ldif文件形式,使用MigrationTools工具
The MigrationTools are a set of Perl scripts for migrating users,
groups, aliases, hosts, netgroups, networks, protocols, RPCs, and
services from existing nameservices (flat files, NIS, and NetInfo) to
LDAP.

yum -y install migrationtools
cd /usr/share/migrationtools/
[root@master migrationtools]# vim migrate_common.ph
70 # Default DNS domain
71 $DEFAULT_MAIL_DOMAIN = "lansgg.com";
72
73 # Default base
74 $DEFAULT_BASE = "dc=lansgg,dc=com";
导出:
./migrate_base.pl > /tmp/base.ldif
./migrate_passwd.pl /etc/passwd > /etc/passwd.ldif
./migrate_group.pl /etc/group > /etc/group.ldif
ldif文件导入ldap:
ldapadd -x -w adminpw -D 'cn=admin,dc=lansgg,dc=com' -f /tmp/base.ldif
ldapadd -x -w adminpw -D 'cn=admin,dc=lansgg,dc=com' -f /tmp/passwd.ldif
ldapadd -x -w adminpw -D 'cn=admin,dc=lansgg,dc=com' -f /tmp/group.ldif
查看导入的数据:
[root@master ~]# ldapsearch -x -b 'dc=lansgg,dc=com'
二、利用ldap数据库用户登录其他主机
意思就是客户端的登录帐号存储于ldap Server端;
客户端: 安装ldap客户端
[root@master ~]# yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap
增加BIND策略,避免LDAP无法连接时无法开机
echo "bind_policy soft" >> /etc/openldap/ldap.conf
自动建立主目录:
PAM提供了一个pam_mkhomedir.so的模块,当执行这个模块时,它会检查PAM客户端用户的主目录是否存在,如果不存在则自动建立。
修改/etc/pam.d/login,在pam_selinux.so下面添加一行。
session    required     pam_mkhomedir.so skel=/etc/skel/ umask=0022
该方法特别适合使用网络账号的服务器,如使用NIS,LDAP等的域账号
也有人是这么写的:echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> /etc/pam.d/system-auth
客户端认证设置:
1.交互式配置:

authconfig-tui




2.命令行配置:
示例:authconfig --enablemkhomedir --disableldaptls --enableldap
--enableldapauth
--ldapserver=ldap://192.168.28.139,ldap://10.84.126.150,ldap://192.168.200.10
--ldapbasedn="ou=Common Linux servers,dc=lansgg,dc=org" --update
这里配置为:
[root@master pam.d]# authconfig --enableldap --enableldapauth --enablemkhomedir --enableforcelegacy --disablesssd --disablesssdauth --ldapserver=192.168.28.139 --ldapbasedn="dc=lansgg,dc=com" --update
正在启动 nslcd:                                           [确定]
正在启动 oddjobd:                                         [确定]
[root@master pam.d]#
在服务端新增个测试帐号:
useradd tom
echo "tom" |passwd --stdin tom
然后导出,截取出刚新增的帐号信息,编辑为新的ldif文件,我的个人、组信息分别截取到c.ldif,g.ldif;然后导入(我个人是这样的,省的写ldif文件)
/usr/share/migrationtools/migrate_passwd.pl /etc/passwd > /tmp/mod.ldif
/usr/share/migrationtools/migrate_group.pl /etc/group -f gol.ldif
这是我截取的tom帐号信息
[root@master ~]# cat c.ldif
dn: uid=tom,ou=People,dc=lansgg,dc=com
uid: tom
cn: tom
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$SeOQGWMf$/4Zw96.1qB20Mx1xY2693u7.ct9ThfA5NdEaghtohy4ibaomKBisivPeT02sNR0LRnn6BmBPF8N06I/V8mnPk.
shadowLastChange: 16307
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 502
gidNumber: 502
homeDirectory: /home/tom
[root@master ~]# cat g.ldif
dn: cn=tom,ou=Group,dc=lansgg,dc=com
objectClass: posixGroup
objectClass: top
cn: tom
userPassword: {crypt}x
gidNumber: 502
进行导入:
[root@master ~]# ldapadd -x -D "cn=admin,dc=lansgg,dc=com" -w adminpw -f c.ldif
[root@master ~]# ldapadd -x -w adminpw -D 'cn=admin,dc=lansgg,dc=com' -f g.ldif
adding new entry "cn=tom,ou=Group,dc=lansgg,dc=com
在服务器使用tom登录客户端(客户端是没有这个帐号的)
[root@master ~]# ssh tom@192.168.28.143
reverse mapping checking getaddrinfo for bogon [192.168.28.143] failed - POSSIBLE BREAK-IN ATTEMPT!
tom@192.168.28.143's password:
Last login: Sat Aug 23 22:58:17 2014 from 192.168.28.139
可以看到正确登录(需要输入密码)
三、快速登录主机(无需输入密码)
cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema
vim /etc/openldap/slapd.conf
18 include         /etc/openldap/schema/sudo.schema
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap:ldap /etc/openldap/slapd.d/*
/etc/init.d/slapd restart
编辑sudo权限的ldif文件
[root@master ~]# vim sudo.ldif

dn: ou=sudoers,dc=lansgg,dc=com
objectClass: top
objectClass: organizationalUnit
ou: sudoers

dn: cn=defaults,ou=sudoers,dc=lansgg,dc=com
objectClass: top
objectClass: sudoRole
cn: defaults
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoOption: requiretty

dn: cn=tom,ou=sudoers,dc=lansgg,dc=com
objectClass: top
objectClass: sudoRole
cn: tom
sudoCommand: ALL
sudoHost: ALL
sudoOption: !authenticate
sudoRunAsUser: ALL
sudoUser: tom
导入:
[root@master ~]# ldapadd -x -w adminpw -D "cn=admin,dc=lansgg,dc=com" -f sudo.ldif
adding new entry "ou=sudoers,dc=lansgg,dc=com"

adding new entry "cn=defaults,ou=sudoers,dc=lansgg,dc=com"

adding new entry "cn=tom,ou=sudoers,dc=lansgg,dc=com"
客户端编辑:
Nsswitch.conf文件通常控制着用户(在passwd中)、口令(在shadow中)、主机IP和组信息(在group中)的搜索。下面的列表描述了nsswitch.conf文件控制搜索的大多数信息(Info项)的类型。
vim /etc/sudo-ldap.conf
55 #uri ldap://ldapserver
56 uri ldap://192.168.28.139
63 #sudoers_base ou=SUDOers,dc=example,dc=com
64 sudoers_base ou=sudoers,dc=lansgg,dc=com
vim /etc/nsswitch.conf
64 sudoers: ldap files
服务器测试:登录客户端,然后成功sudo (无需密码)
[root@master ~]# ssh tom@192.168.28.143
reverse mapping checking getaddrinfo for bogon [192.168.28.143] failed - POSSIBLE BREAK-IN ATTEMPT!
tom@192.168.28.143's password:
Last login: Sat Aug 23 23:15:27 2014 from 192.168.28.150
[tom@c1 ~]$ sudo su
[root@c1 tom]#
测试成功~
管理工具也有很多,比如ldapadmin



本文出自 “大風” 博客,请务必保留此出处http://lansgg.blog.51cto.com/5675165/1544951
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: