Centos7.9安装openldap+phpldapadmin+grafana配置LDAP登录最详细步骤 亲测100%能行

一、部署LDAP

1、安装LDAP

复制代码
yum install -y openldap-servers openldap-clients openldap openldap-devel compat-openldap openldap-servers-sql
systemctl start  slapd
systemctl enable slapd

2、创建第一个管理账号密码(设置为ldapadmin)

复制代码
slappasswd
New password: 
Re-enter new password: 
{SSHA}EdgbJXgA8bTDv5Csu1bsVS/bIM4KUTy/

3、新增db.ldif文件,设置cn=config/olcDatabase={2}hdb.ldif 数据库文件(按自己的需要改dc)

复制代码
cd /etc/openldap/slapd.d

vim db.ldif 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=sy,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=sy,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}EdgbJXgA8bTDv5Csu1bsVS/bIM4KUTy/ 

4、执行修改

复制代码
ldapmodify -Y EXTERNAL -H ldapi:/// -f db.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"

5、新增monitor.ldif,用于修改cn=config/olcDatabase={1}monitor.ldif文件(按自己的需要改dc)

复制代码
vim monitor.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=admin,dc=sy,dc=com" read by * none

6、执行修改

复制代码
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.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"

7、添加基础数据库

scheme是针对不同事物,存储信息的属性不同,设计的各种存储信息结构

复制代码
#复制ldap原有配置,并赋予它所有权限
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/*

# 添加基础库;即三个基础结构的数据结构
# Cosine schema是一套基础且常用的schema集合,包含了互联网上广泛认可的标准属性和类定义,如电子邮件相关属性、组织和人员信息等;
# NIS Schema扩展了LDAP目录的能力,使其能够支持和兼容原本在NIS系统中使用的数据结构,如用户、组、主机名等信息,使得从NIS迁移至LDAP或者在LDAP中模拟NIS环境变得可能;
# inetOrgPerson是一个标准的LDAP对象类别(ObjectClass),它是基于X.520目录模型并扩展了person类别,专为存储互联网和个人相关信息而设计。它包括了许多与人相关的属性,如电子邮件地址、电话号码、职务、部门等,非常适合用于存储和管理组织内的员工、成员或联系人信息。
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"

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"

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"

8、编辑域名属性,和三大分组(group, pepole, admin)

新增base.ldif(按自己的需要改dc)

复制代码
vim /etc/openldap/slapd.d/base.ldif
dn: dc=sy,dc=com
dc: sy
objectClass: top
objectClass: domain

dn: cn=admin,dc=sy,dc=com
objectClass: organizationalRole
cn: admin
description: LDAP Manager

dn: ou=People,dc=sy,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=sy,dc=com
objectClass: organizationalUnit
ou: Group

9、将域名和分组写到数据库(这里输入的密码是上面设置的ldapadmin)

复制代码
ldapadd -x -W -D "cn=admin,dc=sy,dc=com" -f base.ldif
Enter LDAP Password:      
adding new entry "dc=sy,dc=com"

adding new entry "cn=admin,dc=sy,dc=com"

adding new entry "ou=People,dc=sy,dc=com"

adding new entry "ou=Group,dc=sy,dc=com"

二、部署phpldapadmin

1、安装phpldapadmin

复制代码
yum install -y phpldapadmin httpd

2、修改文件phpldapadmin.conf

复制代码
vim /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
    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、修改文件config.php

复制代码
vim /etc/phpldapadmin/config.php
 
# 找到找到398行,把这里的uid改为cn
$servers->setValue('login','attr','cn');
 
# 找到460行,把true改为false 关闭匿名登录
$servers->setValue('login','anon_bind',false);
 
# 找到519行,设置用户属性的唯一性,这里我将cn sn给添加上
$servers->setValue('unique','attrs',array('mail','uid','uidNumber','cn','sn'))

4、重启Apache服务

复制代码
systemctl start httpd  
systemctl enable httpd

5、访问phpldapadmin页面,ip地址/phpldapadmin/

6、创建一个测试Group



7、创建一个测试用户




三、grafana配置LDAP登录

1、安装grafana

复制代码
yum install https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Packages/grafana-8.1.0-1.x86_64.rpm
systemctl restart grafana-server
systemctl enable grafana-server

2、修改配置文件grafana.ini,搜索ldap,打开注释

复制代码
[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml
allow_sign_up = true

3、编写ldap.toml

复制代码
vim /etc/grafana/ldap.toml
[[servers]]
host = "127.0.0.1"         #按实际更改,我这里grafana跟ldap同一台机器
port = 389
use_ssl = false
start_tls = false
ssl_skip_verify = false

bind_dn = "cn=admin,dc=sy,dc=com"     #按实际更改
bind_password = 'ldapadmin'     #管理员密码
search_filter = "(cn=%s)"
search_base_dns = ["ou=People,dc=sy,dc=com"]    #按实际更改

[servers.attributes]
name = "givenName"
surname = "sn"
username = "cn"
member_of = "memberOf"
email =  "email"

[[servers.group_mappings]]
group_dn = "cn=admins,ou=groups,dc=grafana,dc=org"
org_role = "Admin"

[[servers.group_mappings]]
group_dn = "cn=users,ou=groups,dc=grafana,dc=org"
org_role = "Editor"

[[servers.group_mappings]]
group_dn = "*"
org_role = "Viewer"

systemctl restart grafana-server

4、登录grafana页面验证,ip地址:3000,输入刚刚创建的测试用户testuser


相关推荐
梦想很大很大18 小时前
拒绝“盲猜式”调优:在 Go Gin 项目中落地 OpenTelemetry 链路追踪
运维·后端·go
Sinclair19 小时前
内网服务器离线安装 Nginx+PHP+MySQL 的方法
运维
叶落阁主19 小时前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
甲鱼9292 天前
MySQL 实战手记:日志管理与主从复制搭建全指南
运维
碳基沙盒4 天前
OpenClaw 多 Agent 配置实战指南
运维
龙码精神7 天前
前端嵌入Grafana 报表的自定义方案:隐藏导航栏保留筛选工具
grafana
蝎子莱莱爱打怪7 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
DianSan_ERP8 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅8 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒8 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器