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

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
简介:

本文系统:Centos6.5_x64

ip:192.168.28.139

客户端:192.168.28.141


一、ldap的部署、用户信息的存储

二、利用ldap数据库用户登录其他主机

三、快速登录主机(无需输入密码)


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


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

一、ldap的部署、用户信息的存储

1、安装openldap

1
[root@master ~] # yum install openldap openldap-devel openldap-servers openldap-clients -y

2、配置文件模版

1
[root@master ~] # cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

修改配置文件

1
2
3
4
5
6
7
[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

这里管理员的密码使用了明文,也可以使用加密形式,方法如下:

1
2
3
4
[root@master ~] # slappasswd 
New password: 
Re-enter new password: 
{SSHA}7EJGErpaeX3Zd6rxfxVzNVwSm2UC1e /T

将密文串替换成adminpw即可;

你也可以指定加密方式:

1
2
3
4
[root@master ~] # slappasswd -h {md5}
New password: 
Re-enter new password: 
{MD5}cOdqFdoA5jAa3nGMyUFveQ==

loglevel表示日志级别:这里为1,表示所有日志;一般正式环境配置256即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-1 记录所有的信息
0 不记录debug
1 跟踪功能调用的信息
2 包处理的debug信息
4 丰富的debug信息
8 连接管理信息
16 包的收发信息
32 搜索过滤的处理过程
64 配置文件的处理过程
128 访问控制列表处理过程
256 连接、操作及其结果的统计数据
512 向客户端返回的结果的统计信息
1024 与shell后端的通信信息
2048 显示记录条目的分析信息
4096 数据库缓存处理信息
8192 数据库索引
16384 从服务器数据同步资源消耗处理信息

配置ldap日志输出

1
2
3
4
5
6
7
8
9
[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

拷贝数据文件

1
2
3
[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

推荐步骤:

1
2
[root@master ~] # rm /etc/openldap/slapd.d/*
/etc/init .d /slapd  restart

没有这步,当下面导入数据的时候会报错,(49)

测试下配置

1
2
[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)

1
2
3
4
5
6
7
8
9
[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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[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"

手动已经录入,进行查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[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.

1
2
3
4
5
6
7
8
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" ;

导出:

1
2
3
  . /migrate_base .pl >  /tmp/base .ldif
  . /migrate_passwd .pl  /etc/passwd  /etc/passwd .ldif
  . /migrate_group .pl  /etc/group  /etc/group .ldif

ldif文件导入ldap:

1
2
3
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

查看导入的数据:

1
[root@master ~] # ldapsearch -x -b 'dc=lansgg,dc=com'

二、利用ldap数据库用户登录其他主机

意思就是客户端的登录帐号存储于ldap Server端;

客户端:  安装ldap客户端

1
[root@master ~] # yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap

增加BIND策略,避免LDAP无法连接时无法开机

1
echo  "bind_policy soft"  >>  /etc/openldap/ldap .conf

自动建立主目录:

PAM提供了一个pam_mkhomedir.so的模块,当执行这个模块时,它会检查PAM客户端用户的主目录是否存在,如果不存在则自动建立。

修改/etc/pam.d/login,在pam_selinux.so下面添加一行。

1
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.交互式配置:

1
authconfig-tui

wKioL1P7QcfA9TSVAAFgZUAPtao238.jpg

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

这里配置为:

1
2
3
4
[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] #

在服务端新增个测试帐号:

1
2
useradd  tom
echo  "tom"  | passwd  --stdin tom

然后导出,截取出刚新增的帐号信息,编辑为新的ldif文件,我的个人、组信息分别截取到c.ldif,g.ldif;然后导入(我个人是这样的,省的写ldif文件)

1
2
/usr/share/migrationtools/migrate_passwd .pl  /etc/passwd  /tmp/mod .ldif
/usr/share/migrationtools/migrate_group .pl  /etc/group  -f gol.ldif

这是我截取的tom帐号信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[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

进行导入:

1
2
3
[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登录客户端(客户端是没有这个帐号的)

1
2
3
4
[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

可以看到正确登录(需要输入密码)

三、快速登录主机(无需输入密码)

1
2
3
4
5
6
7
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文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[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

导入:

1
2
3
4
5
6
[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)的类型。

1
2
3
4
5
6
7
  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 (无需密码)

1
2
3
4
5
6
[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

wKioL1P7T9uTJJS2AAMng9du-lI675.jpg




本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1544951

相关文章
|
2月前
|
监控 前端开发 Linux
centos7系统安装部署zabbix5.0
【9月更文挑战第23天】在CentOS 7系统上部署Zabbix 5.0的步骤包括:安装MariaDB数据库及必要软件包,配置Zabbix仓库,设置数据库并导入Zabbix数据库架构,配置Zabbix服务器与前端参数,启动相关服务,并通过浏览器访问Web界面完成安装向导。
120 0
|
2月前
|
Oracle Java 关系型数据库
CentOS 7.6操作系统部署JDK实战案例
这篇文章介绍了在CentOS 7.6操作系统上通过多种方式部署JDK的详细步骤,包括使用yum安装openjdk、基于rpm包和二进制包安装Oracle JDK,并提供了配置环境变量的方法。
255 80
|
1月前
|
存储 Linux 开发者
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
140 0
虚拟机centos7.9一键部署docker
|
2月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
333 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
2月前
|
Linux pouch 容器
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
关于如何在CentOS 7.6操作系统上安装和使用阿里巴巴开源的Pouch容器管理工具的实战教程。
111 2
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
|
2月前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
112 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
3月前
|
Linux 数据安全/隐私保护 网络虚拟化