Linux - 搭建LDAP统一认证服务
目的
通过以下步骤最终可使用ldap server
中的用户登录一台ldap client
,并允许有sudo
权限。平常公司中所用的域账号以及服务器账号也许就是使用如下方式,但是应该没有这么简陋,只是借机了解一波ldap
环境信息
[root@suhw ~]# hostnamectl Static hostname: suhwIcon name: computer-vmChassis: vmMachine ID: c9006a74a3674913a1e2bf3f582ec2a3Boot ID: 1421443538404e6aa9c26cebe889446cVirtualization: kvmOperating System: CentOS Linux 7 (Core)CPE OS Name: cpe:/o:centos:centos:7Kernel: Linux 3.10.0-957.el7.x86_64Architecture: x86-64
名词解释
LDAP(Light Directory Access Portocol)
轻量级目录访问协议。现在许多产品都加入了对LDAP
的支持,可以通过简单的配置与服务器做认证服务。用户只需要使用一个密码登录众多个支持LDAP
协议的应用,由应用自己去LDAP Server
去认证用户信息,不仅做到了用户信息的统一管理,对于应用认证也十分方便。接下来了解一些基本概念
目录树概念
- 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
- 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
- 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
- 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。
关键字解释
关键字 | 英文全称 | 含义 |
---|---|---|
dc | Domain Component | 域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com(一条记录的所属位置) |
ou | Organization Unit | 组织单位,组织单位可以包含其他各种对象(包括其他组织单元),如“oa组”(一条记录的所属组织) |
cn | Common Name | 公共名称,如“Thomas Johansson”(一条记录的名称) |
dn | Distinguished Name | “uid=songtao.xu,ou=oa组,dc=example,dc=com”,一条记录的位置(唯一) |
服务端安装
[root@suhw ~]# yum -y install openldap-servers openldap-clients
启动
生成密钥
记住输出结果,后续会将加密后的结果设置为初始用户的密码
[root@suhw ~]# slappasswd -s 123456
{SSHA}naG35hsGaMHojVoOoZQvjinkza4XUSBr
修改所属用户与组
[root@suhw ~]# chown ldap:ldap /var/lib/ldap/*
启动 LDAP 服务
[root@suhw ~]# systemctl start slapd
[root@suhw ~]# systemctl enable slapd
配置
添加基础模块
[root@suhw ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
[root@suhw ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
[root@suhw ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
导入生效
[root@suhw ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"[root@suhw ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"[root@suhw ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"
配置域信息
创建/etc/openldap/schema/changes.ldif
文件,将要替换的部分更改为自己的数据。
# 修改域名
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
# 注意修改
olcSuffix: dc=suhw,dc=com# 修改管理员用户
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
# 注意修改
olcRootDN: cn=admin,dc=suhw,dc=com# 修改管理员密码
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
# 替换为 slappasswd 生成后的结果
olcRootPW: {SSHA}naG35hsGaMHojVoOoZQvjinkza4XUSBr# 修改访问权限
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by
#修改dn.base
dn.base="cn=admin,dc=suhw,dc=com" read by * none
导入配置
[root@suhw ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/changes.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={1}monitor,cn=config"
创建域和组织
[root@suhw ~]# vi /etc/openldap/schema/basedomain.ldif
dn
,dc
的地方修改为自己对应的内容
dn: dc=suhw,dc=com
dc: suhw
objectClass: top
objectClass: domaindn: ou=People,dc=suhw,dc=com
ou: People
objectClass: top
objectClass: organizationalUnitdn: ou=Group,dc=suhw,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
导入配置,回车后输入之前创建用户未加密之前的密码
[root@suhw ~]# ldapadd -x -D cn=admin,dc=suhw,dc=com -W -f /etc/openldap/base.ldif
Enter LDAP Password:
adding new entry "dc=suhw,dc=com"adding new entry "ou=People,dc=suhw,dc=com"adding new entry "ou=Group,dc=suhw,dc=com"
查看用户列表
[root@suhw ~]# ldapsearch -x -b "ou=People,dc=suhw,dc=com" | grep dn
安装图形化界面
了解到的两种图像化界面,一种是LDAP Admin
,另外一种是PHPLDAPAdmin
。通过这两个工具,可以方便的进行用户的增删查改等操作。
PHPLDAPAdmin安装
直接采用docker
安装方便。首先记得放开ldapserver
的389端口或关闭防火墙,否则登录会出错
[root@suhw openldap]# firewall-cmd --zone=public --add-port=389/tcp --permanent
success
[root@suhw openldap]# systemctl restart firewalld
执行docker
安装命令
docker run -d --privileged -p 10004:80 --name myphpldapadmin \--env PHPLDAPADMIN_HTTPS=false --env PHPLDAPADMIN_LDAP_HOSTS=10.91.156.198 \--detach osixia/phpldapadmin
配置的Ldap
地址:--env PHPLDAPADMIN_LDAP_HOSTS=10.91.156.198
配置不开启HTTPS
:--env PHPLDAPADMIN_HTTPS=false
(默认是true)
容器运行以后访问http://host:10004
即可。
LDAP Admin安装
Ldap Admin
是一个用于LDAP
目录管理的免费Windows LDAP
客户端和管理工具。此应用程序允许您在LDAP
服务器上浏览,搜索,修改,创建和删除对象。它还支持更复杂的操作,例如目录复制和在远程服务器之间移动,并扩展常用编辑功能以支持特定对象类型(例如组和帐户)。
下载地址:http://www.ldapadmin.org/
安装成功后登录界面如下:
客户端配置
安装
在任意一台机器上首先安装nss-pam-ldapd
[root@node ~]# yum install openldap-client nss-pam-ldapd -y
使用authconfig
进行ldap
认证的相关设置
[root@node ~]# authconfig --enableldap --enableldapauth --enablemkhomedir --enableforcelegacy --disablesssd --disablesssdauth --disableldaptls --enablelocauthorize --ldapserver=10.91.156.205 --ldapbasedn="dc=suhw,dc=com" --enableshadow --update
--ldapserver
填写对应ldapserver
的地址,basedn
填写基础的域信息。
假设我在10.91.156.209上进行完成上述操作,那以后就可以通过test01@10.91.156.209
进行登录,209机器会拿用户信息去找ldapserver
进行验证。
添加用户
- 新建
sudoers
组织
新建 cloud 组
查看 group 属性
在LDAP server
上添加id为7958的group与之对应
[root@server ~]# groupadd -g 7958 cloud[root@server ~]# tail /etc/group -n 1
cloud:x:7958:
- 新建test用户并放置在cloud组下
设置user相关属性
右键用户设置密码123456
保存后将test01
用户挪至cloud
组下,并修改用户gid
为之前的7958
此时通过test01@10.91.156.205
访问ldap client
,即可访问成功,并会在ldap client
中新建/home/test01
作为家目录
注:添加用户和组时id
注意别和ldapserver
中的重复。
配置sudo
要向给test01
用户sudo
权限,可以直接通过visudo
编辑/etc/sudoers
配置文件,将cloud
组加置对应位置即可
106 ## Allows people in group wheel to run all commands107 %wheel ALL=(ALL) ALL108 %cloud ALL=(ALL) ALL
此时再去重新连接就可拥有sudo
权限。更详细的权限控制自行搜索
参考
https://www.cnblogs.com/wilburxu/p/9174353.html
https://blog.mylitboy.com/article/operation/docker-install-openldap.html
https://www.cnblogs.com/xiaomifeng0510/p/9564688.html
https://cloud.tencent.com/developer/article/1563031
https://www.runoob.com/linux/linux-user-manage.html
Linux - 搭建LDAP统一认证服务相关推荐
- Linux下LDAP统一认证解决方案
企业内部需要认证的服务很多,员工需要记住很多的密码, 即使对这些服务进行相同的密码设置,也存在很大的安全隐患.笔者目前工作的企业就是如此,每一个新员工的到来管理员都要初始化很多密码,而这些密码都被设置 ...
- Linux搭建LDAP Account Manager(LAM)
搭建 ldap account manager LAM一直更新的很快,所以有很多版本供选择 因为这边的网络环境不是特别的好,进LAM的官网去下载最新的比较慢,所以没有配置最新的版本 这是我自己找的一个 ...
- linux搭建ldap服务器详细步骤,linux环境搭建ldap服务器
首先保证linux正常联网 yum install openldap-servers -y 拷贝配置文件 cd /usr/share/openldap-servers/ cp slapd.conf.o ...
- Linux服务器ldap启动,linux搭建ldap服务器详细步骤
ldap这种原始的服务器搭建起来比较复杂,同时它也是CE必考的(客户端的搭建). 1.安装openldap-servers软件包 2.查看ldap模板文件的存放位置: 3.拷贝ldap模板文件到配置文 ...
- linux搭建ldap服务器搭建,Linux下安装配置OpenLDAP服务器
东西多了,为了好管理,我们会将它们别类:服务器中信息.资源多了,不言而喻也是这个道理,而目录服务器是这个原理.那么支持IPV6协议的OpenLDAP如何在Linux服务器上安装配置? 一.安装Open ...
- ldap基本dn_2020年,手把手教你如何在CentOS7上一步一步搭建LDAP服务器的最新教程...
1. 什么是LDAP 1.1 什么是LDAP? 要想知道一个概念,最简单的办法就是wikipedia,当然也可以百科. LDAP全称是轻型目录访问协议(Lightweight Directory Ac ...
- ldap 统一认证 java_如何在你的系统里集成LDAP统一认证
一.为什么需要统一认证 日常办公经常会有多套系统,如果各个系统各自维护一套用户认证,用户需要记住多个用户名密码. 系统各自管理用户认证的方式,不但会有重复建设的问题,用户体验也会差,经常会有用户忘记密 ...
- Linux 搭建SVN 服务器
一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...
- 统一认证服务CAS 5安装
2019独角兽企业重金招聘Python工程师标准>>> 简要介绍统一认证服务(CAS,Central Authentication Service,注:常称为单点登录系统)5.2.X ...
- Linux 搭建SVN server
一. SVN 简单介绍 Subversion(SVN) 是一个开源的版本号控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository ...
最新文章
- 关于Nikon Ai AF 28mm F1.4D遮光罩的问题
- linux 网络编程学习
- struts2+extjs文件上传完整实现(攻克了上传中的各种问题)
- Spring Boot工作笔记-RabbitMQ中Unsupported major.minor version 52.0问题
- 02_线性表的顺序表示和实现
- leetcode64. 最小路径和
- activemq之Windows安装
- Java基础语法面试题汇总
- led背光板的作用是什么呢?
- java实现阿里云接口发送短信验证码
- 北邮C++——破解简单密码
- Java——获取上传的pdf页数
- 哪个牌子的运动耳机比较好、运动蓝牙耳机排行榜
- EOS智能合约开发系列(一)
- WWW相关概念的学习
- cad在线转换_手绘稿画好后我熬了一个通宵描图,结果组长给我说可以一键生成CAD!...
- c++画直线、矩形、圆、椭圆
- 使用WireMock快速伪造RESTful服务
- Bilateral Filtering(双边滤波)算法研究
- 北京内推 | 微软亚洲研究院机器学习组招聘研究型实习生