CentOS7 下 ldap 部署

2024-05-13 04:08
文章标签 部署 centos7 ldap

本文主要是介绍CentOS7 下 ldap 部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境准备

# 关闭防火墙以及selinux,生产环境中,以实际需求为准
[root@localhost ~]# hostnamectl --static set-hostname ldap-server
[root@ldap-server ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@ldap-server ~]# sestatus
SELinux status:                 disabled
[root@ldap-server ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)
[root@ldap-server ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destinationChain FORWARD (policy ACCEPT)
target     prot opt source               destinationChain OUTPUT (policy ACCEPT)
target     prot opt source               destination

安装ldap

[root@ldap-server ~]# yum -y install epel-release.noarch   # ldap需要epel源
[root@ldap-server ~]# yum -y install openldap openldap-clients openldap-servers migrationtools openldap-devel compat-openldap
[root@ldap-server ~]# slapd -VV   # 查看ldap版本
@(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
[root@ldap-server ~]# systemctl enable slapd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/slapd.service to /usr/lib/systemd/system/slapd.service.
[root@ldap-server ~]# ss -nltp | grep slapd   # 默认监听389端口
LISTEN     0      128          *:389                      *:*                   users:(("slapd",pid=31016,fd=8))
LISTEN     0      128         :::389                     :::*                   users:(("slapd",pid=31016,fd=9))

配置ldap

[root@ldap-server ~]# slappasswd    # 设置ldap管理员的密码
New password:
Re-enter new password:
{SSHA}Olf7XPVza58E4frXUqY5FNxALAG7LiiV   # 这一串字符需要保留,后面需要加入到配置文件中
[root@ldap-server ~]# cd /etc/openldap/
[root@ldap-server openldap]# ls
certs  check_password.conf  ldap.conf  schema  slapd.d
[root@ldap-server openldap]# vim check_password.conf   # 配置check_password.conf文件
[root@ldap-server openldap]# egrep -v "^$|#" check_password.conf
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}Olf7XPVza58E4frXUqY5FNxALAG7LiiV
# 导入基本Schema模式
[root@ldap-server openldap]# 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@ldap-server openldap]# 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@ldap-server openldap]# 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"# 可以有选择的导入下面的Schema模式,根据实际需求导入
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/cosine.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/nis.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/collective.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/corba.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/core.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/duaconf.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/dyngroup.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/inetorgperson.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/java.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/misc.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/openldap.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/pmi.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/ppolicy.ldif

ldap设置域名

[root@ldap-server openldap]# slappasswd
New password:
Re-enter new password:
{SSHA}EX0d7WX74+oV1Z2a6fdcmgTMMbV3PTmQ
# 导入chdomain.ldif文件,这里我使用的域名是test.com
[root@ldap-server openldap]# cd slapd.d/
[root@ldap-server slapd.d]# vim chdomain.ldif
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="cn=Manager,dc=test,dc=com" read by * nonedn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=test,dc=comdn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=test,dc=comdn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}EX0d7WX74+oV1Z2a6fdcmgTMMbV3PTmQdn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange bydn="cn=Manager,dc=test,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=test,dc=com" write by * read[root@ldap-server openldap]# cd ..
[root@ldap-server openldap]# chown -R ldap.ldap slapd.d/
[root@ldap-server openldap]# cd slapd.d/
[root@ldap-server slapd.d]# ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"
# 导入basedomain.ldif文件
[root@ldap-server slapd.d]# vim basedomain.ldif
dn: dc=test,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Server Com
dc: Testdn: cn=Manager,dc=test,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Managerdn: ou=People,dc=test,dc=com
objectClass: organizationalUnit
ou: Peopledn: ou=Group,dc=test,dc=com
objectClass: organizationalUnit
ou: Group[root@ldap-server openldap]# cd ..
[root@ldap-server openldap]# chown -R ldap.ldap slapd.d/
[root@ldap-server openldap]# cd slapd.d/
[root@ldap-server slapd.d]# ldapadd -x -D cn=Manager,dc=test,dc=com -W -f basedomain.ldif
Enter LDAP Password:    # 密码是导入chdomain.ldif文件前设置的密码
adding new entry "dc=test,dc=com"adding new entry "cn=Manager,dc=test,dc=com"adding new entry "ou=People,dc=test,dc=com"adding new entry "ou=Group,dc=test,dc=com"

添加用户

[root@ldap-server slapd.d]# slappasswd
New password:
Re-enter new password:
{SSHA}iMIxY8++WGdaZef4sJrIesBkm+uc+HTO[root@ldap-server slapd.d]# vim ldapuser.ldif
dn: uid=kevin,ou=People,dc=test,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Kevin
sn: Linux
userPassword: {SSHA}iMIxY8++WGdaZef4sJrIesBkm+uc+HTO
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/kevindn: cn=kevin,ou=Group,dc=test,dc=com
objectClass: posixGroup
cn: Kevin
gidNumber: 1000
memberUid: kevin[root@ldap-server slapd.d]# cd ..
[root@ldap-server openldap]# chown -R ldap.ldap slapd.d/
[root@ldap-server openldap]# cd slapd.d/
[root@ldap-server slapd.d]# ldapadd -x -D cn=Manager,dc=test,dc=com -W -f ldapuser.ldif
Enter LDAP Password:
adding new entry "uid=kevin,ou=People,dc=test,dc=com"adding new entry "cn=kevin,ou=Group,dc=test,dc=com"

添加本机的系统用户和群组到ldap目录

[root@ldap-server slapd.d]# vim ldapuser.sh
#!/bin/env bashSUFFIX='dc=test,dc=com'
LDIF='ldapuser.ldif'echo -n > $LDIF
GROUP_IDS=()
grep "x:[1-9][0-9][0-9][0-9]:" /etc/passwd | (while read TARGET_USER
doUSER_ID="$(echo "$TARGET_USER" | cut -d':' -f1)"USER_NAME="$(echo "$TARGET_USER" | cut -d':' -f5 | cut -d' ' -f1,2)"[ ! "$USER_NAME" ] && USER_NAME="$USER_ID"LDAP_SN="$(echo "$USER_NAME" | cut -d' ' -f2)"[ ! "$LDAP_SN" ] && LDAP_SN="$USER_NAME"LASTCHANGE_FLAG="$(grep "${USER_ID}:" /etc/shadow | cut -d':' -f3)"[ ! "$LASTCHANGE_FLAG" ] && LASTCHANGE_FLAG="0"SHADOW_FLAG="$(grep "${USER_ID}:" /etc/shadow | cut -d':' -f9)"[ ! "$SHADOW_FLAG" ] && SHADOW_FLAG="0"GROUP_ID="$(echo "$TARGET_USER" | cut -d':' -f4)"[ ! "$(echo "${GROUP_IDS[@]}" | grep "$GROUP_ID")" ] && GROUP_IDS=("${GROUP_IDS[@]}" "$GROUP_ID")echo "dn: uid=$USER_ID,ou=People,$SUFFIX" >> $LDIFecho "objectClass: inetOrgPerson" >> $LDIFecho "objectClass: posixAccount" >> $LDIFecho "objectClass: shadowAccount" >> $LDIFecho "sn: $LDAP_SN" >> $LDIFecho "givenName: $(echo "$USER_NAME" | awk '{print $1}')" >> $LDIFecho "cn: $USER_NAME" >> $LDIFecho "displayName: $USER_NAME" >> $LDIFecho "uidNumber: $(echo "$TARGET_USER" | cut -d':' -f3)" >> $LDIFecho "gidNumber: $(echo "$TARGET_USER" | cut -d':' -f4)" >> $LDIFecho "userPassword: {crypt}$(grep "${USER_ID}:" /etc/shadow | cut -d':' -f2)" >> $LDIFecho "gecos: $USER_NAME" >> $LDIFecho "loginShell: $(echo "$TARGET_USER" | cut -d':' -f7)" >> $LDIFecho "homeDirectory: $(echo "$TARGET_USER" | cut -d':' -f6)" >> $LDIFecho "shadowExpire: $(passwd -S "$USER_ID" | awk '{print $7}')" >> $LDIFecho "shadowFlag: $SHADOW_FLAG" >> $LDIFecho "shadowWarning: $(passwd -S "$USER_ID" | awk '{print $6}')" >> $LDIFecho "shadowMin: $(passwd -S "$USER_ID" | awk '{print $4}')" >> $LDIFecho "shadowMax: $(passwd -S "$USER_ID" | awk '{print $5}')" >> $LDIFecho "shadowLastChange: $LASTCHANGE_FLAG" >> $LDIFecho >> $LDIF
donefor TARGET_GROUP_ID in "${GROUP_IDS[@]}"
doLDAP_CN="$(grep ":${TARGET_GROUP_ID}:" /etc/group | cut -d':' -f1)"echo "dn: cn=$LDAP_CN,ou=Group,$SUFFIX" >> $LDIFecho "objectClass: posixGroup" >> $LDIFecho "cn: $LDAP_CN" >> $LDIFecho "gidNumber: $TARGET_GROUP_ID" >> $LDIFfor MEMBER_UID in $(grep ":${TARGET_GROUP_ID}:" /etc/passwd | cut -d':' -f1,3)doUID_NUM=$(echo "$MEMBER_UID" | cut -d':' -f2)[ $UID_NUM -ge 1000 -a $UID_NUM -le 9999 ] && echo "memberUid: $(echo "$MEMBER_UID" | cut -d':' -f1)" >> $LDIFdoneecho >> $LDIF
done
)
[root@ldap-server slapd.d]# chmod 755 ldapuser.sh
[root@ldap-server slapd.d]# vim ldapuser.sh
[root@ldap-server slapd.d]# sh ldapuser.sh
[root@ldap-server slapd.d]# ldapadd -x -D cn=Manager,dc=test,dc=com -W -f ldapuser.ldif
Enter LDAP Password:
adding new entry "uid=admin,ou=People,dc=test,dc=com"adding new entry "uid=test1,ou=People,dc=test,dc=com"adding new entry "cn=admin,ou=Group,dc=test,dc=com"adding new entry "cn=test1,ou=Group,dc=test,dc=com"

安装phpLDAPadmin

[root@ldap-server ~]# yum -y install httpd
[root@ldap-server ~]# rm -f /etc/httpd/conf.d/welcome.conf
[root@ldap-server ~]# cp /etc/httpd/conf/httpd.conf{,.bak}
[root@ldap-server ~]# vim /etc/httpd/conf/httpd.conf         # 修改下面几行内容
ServerName www.example.com:80                                 # 第95行
AllowOverride All                                             # 第151行
DirectoryIndex index.html index.cgi index.php                 # 第164行
# add follows to the end                                      # 添加这几行
# server's response header
ServerTokens Prod
# keepalive is ON
KeepAlive On
[root@ldap-server ~]# systemctl enable httpd.service --now
# 浏览器访问http://192.168.131.133
安装php
[root@ldap-server ~]# yum -y install php php-mbstring php-pear
[root@ldap-server ~]# cp /etc/php.ini{,.bak}
[root@ldap-server ~]# vim /etc/php.ini
date.timezone = "Asia/Shanghai"    # 第878行
[root@ldap-server ~]# systemctl restart httpd.service
[root@ldap-server ~]# vim /var/www/html/index.php
<?php
phpinfo();
?>
# 浏览器访问http://192.168.131.133/index.php
安装phpldap
[root@ldap-server ~]# yum --enablerepo=epel -y install phpldapadmin
[root@ldap-server ~]# cp /etc/phpldapadmin/config.php{,.bak}
[root@ldap-server ~]# vim /etc/phpldapadmin/config.php
$servers->setValue('login','attr','dn');         # 397行打开注释,启用用户名密码的方式登录
// $servers->setValue('login','attr','uid');     # 398行注释,禁用uid的方式登录
[root@ldap-server ~]# cp /etc/httpd/conf.d/phpldapadmin.conf{,.bak}
[root@ldap-server ~]# vim /etc/httpd/conf.d/phpldapadmin.conf
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs<Directory /usr/share/phpldapadmin/htdocs><IfModule mod_authz_core.c># Apache 2.4Require ip 192.168.131.0/24      # 修改访问权限,改为服务器所在ip的网段</IfModule><IfModule !mod_authz_core.c># Apache 2.2Order Deny,AllowDeny from allAllow from 127.0.0.1Allow from ::1</IfModule>
</Directory>
[root@ldap-server ~]# systemctl restart httpd.service
[root@ldap-server ~]# ps -ef | grep [ht]tp
root      34438      1  0 11:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    34439  34438  0 11:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    34440  34438  0 11:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    34441  34438  0 11:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    34442  34438  0 11:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    34443  34438  0 11:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
[root@ldap-server ~]# chown -R apache.apache /usr/share/phpldapadmin
# 浏览器访问http://192.168.131.133/ldapadmin/
# 登陆用户名:cn=Manager,dc=test,dc=com     
# 密码是上面设置的

这篇关于CentOS7 下 ldap 部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/984641

相关文章

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的