前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >统一认证之Ldap

统一认证之Ldap

原创
作者头像
iginkgo18
修改2021-08-09 11:04:30
1.9K0
修改2021-08-09 11:04:30
举报
文章被收录于专栏:devops_k8sdevops_k8s

1.0 简介

OpenLDAP是一款轻量级目录访问协议,是一套开源的集中账号管理架构,且被众多系统支持(例如: 各种Linux发行版本、Windows、Mac OS、IBM AIX等众多平台),被广大互联网公司和软件所采用(例如:jumpserver,jenkins,zabbix,gitlab,wiki,samba,sqladmin等各类常用软件)总之,任何内部 常用的可使用账号登陆的平台或软件基本都会支持关联ldap。它通常被用于关联各个平台或服务,达到统一身份认证的效果,一个账号和密码即可登陆各个平台,避免了一个用户在多个平台使用不同账号和密码,避免了人员流动导致的账号的创建和注销的流程相对复杂的问题;

2.0 环境

2.1 List

代码语言:javascript
复制
CentOS 7.8.2003
openldap-servers-2.4.44-23.el7_9.x86_64
openldap-devel-2.4.44-23.el7_9.x86_64
compat-openldap-2.3.43-5.el7.x86_64
openldap-servers-sql-2.4.44-23.el7_9.x86_64
openldap-clients-2.4.44-23.el7_9.x86_64
openldap-2.4.44-23.el7_9.x86_64

角色

IP

组件

ldap-server

82.157.124.172

openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools

3.0 部署OpenLDAP

3.1安装ldap包

代码语言:javascript
复制
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools

3.2 配置ldap

OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,不再使用slapd.conf作为配置文件,配置slapd.conf的为老文档;

3.2.1 生成密码
代码语言:javascript
复制
slappasswd -s wunai.2021
3.2.2 修改配置

修改/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif 配置

在此文件的最后一行添加olcRootPW+第一步生成的密码,“:” 和密码之间有空格

代码语言:javascript
复制
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 9cd5f2e9
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap

  # 修改这两行,cn 表示openldap管理员用户名
  # olcRootDN整条将会用于管理员的登陆
olcSuffix: dc=elst,dc=com
olcRootDN: cn=Manager,dc=elst,dc=com
  
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 40fbd07c-8aba-103b-86e1-67ecea7b71bf
creatorsName: cn=config
createTimestamp: 20210806042645Z
entryCSN: 20210806042645.972356Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210806042645Z
    
# 下面一行为新添加的,olcRootPW是该用户对应密码
olcRootPW: {SSHA}rs+dbTozMEf+Yk9cNcVujdyxj2DQZnAG

修改/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif 文件

代码语言:javascript
复制
vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif 
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 c4f3d09c
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
  
# 修改此处的cn,dc
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=Manager,dc=elst,dc=com" read by * none
structuralObjectClass: olcDatabaseConfig
entryUUID: 40fbcbcc-8aba-103b-86e0-67ecea7b71bf
creatorsName: cn=config
createTimestamp: 20210806042645Z
entryCSN: 20210806042645.972235Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210806042645Z

3.3 验证配置

代码语言:javascript
复制
[root@VM-0-7-centos ~]# slaptest -u
610cc90a ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
610cc90a ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
config file testing succeeded

# 由于收到修改了2个文件,checksum忽略即可,testing succeeded即为成功

3.4 启动openldap

代码语言:javascript
复制
systemctl enable slapd;systemctl start slapd

3.5 配置数据库

3.5.1 配置OpenLDAP数据库
代码语言:javascript
复制
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap -R /var/lib/ldap
chmod 700 -R /var/lib/ldap


[root@VM-0-7-centos ~]# tree /var/lib/ldap/
/var/lib/ldap/
|-- alock
|-- cn.bdb
|-- __db.001
|-- __db.002
|-- __db.003
|-- DB_CONFIG
|-- dn2id.bdb
|-- id2entry.bdb
|-- log.0000000001
|-- objectClass.bdb
`-- ou.bdb
3.5.2 导入Schema

Schema文件位于/etc/openldap/schema/下 schema控制着条目拥有哪些对象类和属性,可自行根据需求导入,通常导入前3即可

代码语言:javascript
复制
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif


# 验证

[root@VM-0-7-centos ~]# ll /etc/openldap/schema/
total 312
-r--r--r-- 1 root root  2036 Apr 28 21:32 collective.ldif
-r--r--r-- 1 root root  6190 Apr 28 21:32 collective.schema
-r--r--r-- 1 root root  1845 Apr 28 21:32 corba.ldif
-r--r--r-- 1 root root  8063 Apr 28 21:32 corba.schema
-r--r--r-- 1 root root 20612 Apr 28 21:32 core.ldif
-r--r--r-- 1 root root 20499 Apr 28 21:32 core.schema
-r--r--r-- 1 root root 12006 Apr 28 21:32 cosine.ldif
-r--r--r-- 1 root root 73994 Apr 28 21:32 cosine.schema
-r--r--r-- 1 root root  4842 Apr 28 21:32 duaconf.ldif
-r--r--r-- 1 root root 10388 Apr 28 21:32 duaconf.schema
-r--r--r-- 1 root root  3330 Apr 28 21:32 dyngroup.ldif
-r--r--r-- 1 root root  3289 Apr 28 21:32 dyngroup.schema
-r--r--r-- 1 root root  3481 Apr 28 21:32 inetorgperson.ldif
-r--r--r-- 1 root root  6267 Apr 28 21:32 inetorgperson.schema
-r--r--r-- 1 root root  2979 Apr 28 21:32 java.ldif
-r--r--r-- 1 root root 13901 Apr 28 21:32 java.schema
-r--r--r-- 1 root root  2082 Apr 28 21:32 misc.ldif
-r--r--r-- 1 root root  2387 Apr 28 21:32 misc.schema
-r--r--r-- 1 root root  6809 Apr 28 21:32 nis.ldif
-r--r--r-- 1 root root  7640 Apr 28 21:32 nis.schema
-r--r--r-- 1 root root  3308 Apr 28 21:32 openldap.ldif
-r--r--r-- 1 root root  1514 Apr 28 21:32 openldap.schema
-r--r--r-- 1 root root  6904 Apr 28 21:32 pmi.ldif
-r--r--r-- 1 root root 20467 Apr 28 21:32 pmi.schema
-r--r--r-- 1 root root  4570 Apr 28 21:32 ppolicy.ldif
-r--r--r-- 1 root root 20489 Apr 28 21:32 ppolicy.schema
3.5.3 配置基础数据库

修改/usr/share/migrationtools/migrate_common.ph文件

代码语言:javascript
复制
cat /usr/share/migrationtools/migrate_common.ph 
$DEFAULT_MAIL_DOMAIN = "elst.com";
$DEFAULT_BASE = "dc=elst,dc=com";
$EXTENDED_SCHEMA = 1;


mkdir  /etc/openldap/onlineldif -p
[root@VM-0-7-centos ~]# cat /etc/openldap/onlineldif/base.ldif 
dn: dc=elst,dc=com
o: elst com
dc: elst
objectClass: top
objectClass: dcObject
objectclass: organization

dn: cn=Manager,dc=elst,dc=com
cn: Manager
objectClass: organizationalRole
description: Directory Manager

dn: ou=People,dc=elst,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=elst,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
3.5.4 导入基础库
代码语言:javascript
复制
ldapadd -x  -D  "cn=Manager,dc=elst,dc=com"  -f ./base.ldif -w "wunai.2021" 

# 验证
[root@VM-0-7-centos ~]# ldapsearch -x -b 'dc=elst,dc=com' '(objectClass=*)'|grep Success
result: 0 Success

3.6 安装phpldapadmin

3.6.1 安装phpldapadmin包
代码语言:javascript
复制
yum -y install epel-release
yum clean all
yum makecache
yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml phpldapadmin
3.6.2 配置phpldapadmin
代码语言:javascript
复制
[root@VM-0-7-centos ~]# cat /etc/httpd/conf.d/phpldapadmin.conf
#
#  Web-based tool for managing LDAP servers
#

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
  	# 修改此处,开放外网访问
  	# 或者指定可访问ip段
 		# Require local
 		# Require ip 192.168.0
    Require all granted 
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
  </IfModule>
</Directory>
3.6.3 配置phpldapadmin登录方式
代码语言:javascript
复制
vim /etc/phpldapadmin/config.php

#398行,dn为使用dn登陆,cn为使用用户名登陆,可选其一
$servers->setValue('login','attr','dn');
or
$servers->setValue('login','attr','cn');
 
#460行,关闭匿名登录,必做
$servers->setValue('login','anon_bind',false);
 
#519行,保证用户属性的唯一性
$servers->setValue('unique','attrs',array('mail','uid','uidNumber','cn','sn'));
3.6.4 重启httpd并验证
代码语言:javascript
复制
systemctl restart httpd
systemctl enable httpd

http://82.157.124.172/phpldapadmin
# 登陆,输入基础数据库ldif文件中配置的dn或cn,密码是导入时的密码

# 基本账户管理方式:Group下创建组,People下创建账户。不同平台创建不同的组,将账户添加到相应的组,一个账户可有多个组,使一个账户和密码可登陆多个平台。

# 到这一步通常是配置完了。接着就是在phpldapadmin,中配置用户并关联到各个工具中,进行统一认证。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.0 简介
  • 2.0 环境
    • 2.1 List
    • 3.0 部署OpenLDAP
      • 3.1安装ldap包
        • 3.2 配置ldap
          • 3.2.1 生成密码
          • 3.2.2 修改配置
        • 3.3 验证配置
          • 3.4 启动openldap
            • 3.5 配置数据库
              • 3.5.1 配置OpenLDAP数据库
              • 3.5.2 导入Schema
              • 3.5.3 配置基础数据库
              • 3.5.4 导入基础库
            • 3.6 安装phpldapadmin
              • 3.6.1 安装phpldapadmin包
              • 3.6.2 配置phpldapadmin
              • 3.6.3 配置phpldapadmin登录方式
              • 3.6.4 重启httpd并验证
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档