CentOS下OpenLDAP安装

CentOS下OpenLDAP安装

操作系统版本:CentOS Linux release 7.4.1708 (Core)

OpenLDAP版本: 2.4.44

LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议。目录是一个特殊的数据库,它的数据经常被查询,但是不经常更新。其专门针对读取、浏览和搜索操作进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。比如 DNS 协议便是一种最被广泛使用的目录服务。

LDAP 中的信息按照目录信息树结构组织,树中的一个节点称之为条目(Entry),条目包含了该节点的属性及属性值。条目都可以通过识别名 dn 来全局的唯一确定,可以类比于关系型数据库中的主键。比如 dn 为 uid=usera,ou=People,dc= innosail,dc=org 的条目表示在组织中一个名字叫做 Ada Catherine 的员工,其中 uid=ada 也被称作相对区别名 rdn。

一个条目的属性通过 LDAP 元数据模型(Scheme)中的对象类(objectClass)所定义,下面的表格列举了对象类 inetOrgPerson(Internet Organizational Person)中的一些必填属性和可选属性。

属性名 是否必填 描述
cn 该条目被人所熟知的通用名(Common Name)
sn 该条目的姓氏
o 该条目所属的组织名(Organization Name)
mobile 该条目的手机号码
description 该条目的描述信息

1.首先安装OpenLDAP相关组件:

[root@ldap-service ~]# yum install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools -y

启动slapd并查看状态

[root@ldap-service ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@ldap-service ~]# chown ldap:ldap -R /var/lib/ldap
[root@ldap-service ~]# chmod 700 -R /var/lib/ldap
[root@ldap-service ~]# ll /var/lib/ldap/
总用量 4
-rwx------ 1 ldap ldap 845 5月  30 14:01 DB_CONFIG

[root@ldap-service ~]# systemctl enable slapd.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/slapd.service to /usr/lib/systemd/system/slapd.service.
[root@ldap-service ~]# systemctl start slapd.service 
[root@ldap-service ~]# systemctl status slapd.service #查看状态
[root@ldap-service ~]# netstat -nltp |grep slapd
tcp        0      0 0.0.0.0:389             0.0.0.0:*          LISTEN      16076/slapd         
tcp6       0      0 :::389                  :::*               LISTEN      16076/slapd 

2.设置管理用户和密码

Openldap顶级域(以 dc=innosail,dc=org 为例)

最终管理用户为:cn=root,dc=innosail,dc=org

密码为slapasswd自己输入的密码

olcSuffix – 数据库后缀,通常它是你服务的域名。

olcRootDN – Root Distinguished Name (DN)。root用户的DN。

olcRootPW – root 密码。

[root@ldap-service ~]# slappasswd
New password: 
Re-enter new password: 
{SSHA}生成的加密串

##添加/root/chrootpw.ldif文件
[root@ldap-service ~]# vim /root/chrootpw.ldif

#specify the password generated above for “olcRootPW” sectio
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}生成的加密串

##导入openldap属性
[root@ldap-service ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
[root@ldap-service ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
[root@ldap-service ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

[root@ldap-service ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /root/chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"

##添加/root/chdomain.ldif文件
[root@ldap-service ~]# vim /root/chdomain.ldif

# replace to your own domain name for "dc=***,dc=***" section
# specify the password generated above for "olcRootPW" section
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=root,dc=innosail,dc=org" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=innosail,dc=org

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=root,dc=innosail,dc=org

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}生成的加密串

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=root,dc=innosail,dc=org" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=root,dc=innosail,dc=org" write by * read

[root@ldap-service ~]# 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"

##创建一个 root 的组织角色(该角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元
[root@ldap-service ~]# vim /root/basedomain.ldif

# replace to your own domain name for "dc=***,dc=***" section
dn: dc=innosail,dc=org
objectClass: top
objectClass: dcObject
objectclass: organization
o: Server Org
dc: Innosail

dn: cn=root,dc=innosail,dc=org
objectClass: organizationalRole
cn: root
description: LDAP Manager

dn: ou=People,dc=innosail,dc=org
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=innosail,dc=org
objectClass: organizationalUnit
ou: Group

[root@ldap-service ~]# ldapadd -x -D cn=root,dc=innosail,dc=org -W -f /root/basedomain.ldif
Enter LDAP Password: 
adding new entry "dc=innosail,dc=org"
adding new entry "cn=root,dc=innosail,dc=org"
adding new entry "ou=People,dc=innosail,dc=org"
adding new entry "ou=Group,dc=innosail,dc=org"

3. 新增用户

[root@ldap-service ~]# vim /root/addldap_user.ldif

dn: uid=user01,ou=People,dc=innosail,dc=org
objectClass: inetOrgPerson
cn: user01
sn: user01
givenName: user01
displayName: user01
userPassword: {SSHA}生成的加密串
employeeNumber: XXJS-001
mobile: 19912345678
mail: user01@innosail.cn
postalAddress: 400000

[root@ldap-service ~]# ldapadd -x -D cn=root,dc=innosail,dc=org -W -f /root/addldap_user.ldif
Enter LDAP Password: 
adding new entry "dc=innosail,dc=org"
adding new entry "cn=root,dc=innosail,dc=org"
adding new entry "ou=People,dc=innosail,dc=org"
adding new entry "ou=Group,dc=innosail,dc=org"

注意:dn和userPassword,这个user01用户可以登陆已接入LDAP的应用

4.OpenLDAP 使用 SSL/TLS (选择安装)

[root@ldap-service ~]# openssl req -new -x509 -nodes -out /etc/openldap/certs/ldap.cert -keyout /etc/openldap/certs/ldap.key -days 3650

[root@ldap-service ~]# cat /roo/certs.ldif
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldap.cert
 
dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key
 
[root@ldap-service ~]# ldapmodify -Y EXTERNAL  -H ldapi:/// -f /root/certs.ldif
 
##配置文件新增一个ldaps:///
 
[root@ldap-service ~]# vim /etc/sysconfig/slapd

# OpenLDAP server configuration
# see 'man slapd' for additional information

# Where the server will run (-h option)
# - ldapi:/// is required for on-the-fly configuration using client tools
#   (use SASL with EXTERNAL mechanism for authentication)
# - default: ldapi:/// ldap:///
# - example: ldapi:/// ldap://127.0.0.1/ ldap://10.0.0.1:1389/ ldaps:///
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"

# Any custom options
#SLAPD_OPTIONS=""

# Keytab location for GSSAPI Kerberos authentication
#KRB5_KTNAME="FILE:/etc/openldap/ldap.keytab"

##查看端口 636
[root@ldap-service ~]# netstat -nltp |grep slapd
tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      1215/slapd          
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      1215/slapd          
tcp6       0      0 :::636                  :::*                    LISTEN      1215/slapd          
tcp6       0      0 :::389                  :::*                    LISTEN      1215/slapd  

5.开启日志

默认情况下OpenLDAP是没有启用日志记录功能的,但是在实际使用过程中,我们为了定位问题需要使用到OpenLDAP日志。

[root@ldap-service ~]# vim loglevel.ldif
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

##导入到OpenLDAP中,并重启OpenLDAP服务
[root@ldap-service ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

##修改rsyslog配置文件,并重启rsyslog服务
[root@ldap-service ~]# echo "local4.* /var/log/slapd.log" >> /etc/rsyslog.conf
[root@ldap-service ~]# systemctl restart rsyslog.service
[root@ldap-service ~]# systemctl restart slapd.service

##查看日志
[root@ldap-service ~]# tailf /var/log/slapd.log
 

6.服务重启重启,防火墙开启

[root@ldap-service ~]# firewall-cmd --add-service=ldap --permanent 
success
[root@ldap-service ~]# firewall-cmd --reload 
success

7.检查命令

##查看
[root@ldap-service ~]# ldapsearch -x -b "dc=innosail,dc=org" -H ldap://127.0.0.1
[root@ldap-service ~]# ldapsearch -LLL -x -D 'cn=root,dc=innosail,dc=org' -w '密码' -b 'dc=innosail,dc=org'

##删除用户
[root@ldap-service ~]# ldapdelete -x -W -D 'cn=root,dc=innosail,dc=org' "uid=user01,ou=People,dc=innosail,dc=org"

##用户自行修改密码

ldappasswd -H ldap://Server_IP -x -D "uid=username,ou=People,dc=innosail,dc=org" -w OldPasswd -S            #回车后会提示输入新密码
ldappasswd -H ldap://Server_IP -x -D "uid=username,ou=People,dc=innosail,dc=org" -w OldPasswd -s NewPasswd  #直接在命令里指定新密码

##使用管理员修改普通用户的密码
ldappasswd -H ldap://172.16.xx.xx -x -D "cn=root,dc=innosail,dc=org" -W "uid=username,ou=People,dc=innosail,dc=org" -S


参考:

https://www.server-world.info/en/note?os=CentOS_7&p=openldap&f=1

https://myanbin.github.io/post/openldap-in-centos-7.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355