统一认证之Ldap

发布时间:2025-12-09 12:02:18 浏览次数:2

1.0 简介

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

2.0 环境

2.1 List

CentOS 7.8.2003openldap-servers-2.4.44-23.el7_9.x86_64openldap-devel-2.4.44-23.el7_9.x86_64compat-openldap-2.3.43-5.el7.x86_64openldap-servers-sql-2.4.44-23.el7_9.x86_64openldap-clients-2.4.44-23.el7_9.x86_64openldap-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包

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 生成密码

slappasswd -s wunai.2021

3.2.2 修改配置

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

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

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.# CRC32 9cd5f2e9dn: olcDatabase={2}hdbobjectClass: olcDatabaseConfigobjectClass: olcHdbConfigolcDatabase: {2}hdbolcDbDirectory: /var/lib/ldap  # 修改这两行,cn 表示openldap管理员用户名  # olcRootDN整条将会用于管理员的登陆olcSuffix: dc=elst,dc=comolcRootDN: cn=Manager,dc=elst,dc=com  olcDbIndex: objectClass eq,presolcDbIndex: ou,cn,mail,surname,givenname eq,pres,substructuralObjectClass: olcHdbConfigentryUUID: 40fbd07c-8aba-103b-86e1-67ecea7b71bfcreatorsName: cn=configcreateTimestamp: 20210806042645ZentryCSN: 20210806042645.972356Z#000000#000#000000modifiersName: cn=configmodifyTimestamp: 20210806042645Z    # 下面一行为新添加的,olcRootPW是该用户对应密码olcRootPW: {SSHA}rs+dbTozMEf+Yk9cNcVujdyxj2DQZnAG

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

vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.# CRC32 c4f3d09cdn: olcDatabase={1}monitorobjectClass: olcDatabaseConfigolcDatabase: {1}monitor  # 修改此处的cn,dcolcAccess: {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 * nonestructuralObjectClass: olcDatabaseConfigentryUUID: 40fbcbcc-8aba-103b-86e0-67ecea7b71bfcreatorsName: cn=configcreateTimestamp: 20210806042645ZentryCSN: 20210806042645.972235Z#000000#000#000000modifiersName: cn=configmodifyTimestamp: 20210806042645Z

3.3 验证配置

[root@VM-0-7-centos ~]# slaptest -u610cc90a 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

systemctl enable slapd;systemctl start slapd

3.5 配置数据库

3.5.1 配置OpenLDAP数据库

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIGchown ldap:ldap -R /var/lib/ldapchmod 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即可

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldifldapadd -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文件

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=como: elst comdc: elstobjectClass: topobjectClass: dcObjectobjectclass: organizationdn: cn=Manager,dc=elst,dc=comcn: ManagerobjectClass: organizationalRoledescription: Directory Managerdn: ou=People,dc=elst,dc=comou: PeopleobjectClass: topobjectClass: organizationalUnitdn: ou=Group,dc=elst,dc=comou: GroupobjectClass: topobjectClass: organizationalUnit

3.5.4 导入基础库

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 Successresult: 0 Success

3.6 安装phpldapadmin

3.6.1 安装phpldapadmin包

yum -y install epel-releaseyum clean allyum makecacheyum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml phpldapadmin

3.6.2 配置phpldapadmin

[root@VM-0-7-centos ~]# cat /etc/httpd/conf.d/phpldapadmin.conf##  Web-based tool for managing LDAP servers#Alias /phpldapadmin /usr/share/phpldapadmin/htdocsAlias /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登录方式

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并验证

systemctl restart httpdsystemctl enable httpdhttp://82.157.124.172/phpldapadmin# 登陆,输入基础数据库ldif文件中配置的dn或cn,密码是导入时的密码# 基本账户管理方式:Group下创建组,People下创建账户。不同平台创建不同的组,将账户添加到相应的组,一个账户可有多个组,使一个账户和密码可登陆多个平台。# 到这一步通常是配置完了。接着就是在phpldapadmin,中配置用户并关联到各个工具中,进行统一认证。
ldap统一用户认证介绍
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477