统一身份认证系统 OpenLDAP 完整部署

LDAP 介绍
LDAP 是什么?在那些地方用会用到 LDAP?
LDAP英文名称:Lightweight Directory Access Protocol 轻型目录访问协议。
常用在单点登录,用户可以通过一个用户和密码登录多个服务,方便管理。目前我们使用的一下工具,Jenkins,GitLab,Jumpserver,Grafana,Confluence,NextCloud 等等,很多开源的软件都集成了 LDAP,方便了用户使用,也方便了运维管理。

下面针对 LDAP 在 CentOS7 环境中的安装方法进行一下说明:

LDAP 一般组织架构

统一身份认证系统 OpenLDAP 完整部署

软件安装

yum install openldap openldap-clients openldap-servers -y
统一身份认证系统 OpenLDAP 完整部署

配置 OpenLDAP Server

将 cn=Manager,dc=my-domain,dc=com

统一身份认证系统 OpenLDAP 完整部署

改为你自己的,内容可以随便,但是所有地方都要一致
cn=admin,dc=wuhanjiayou,dc=cn

统一身份认证系统 OpenLDAP 完整部署

vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

将 olcSuffix: dc=my-domain,dc=com olcRootDN: cn=Manager,dc=my-domain,dc=com

统一身份认证系统 OpenLDAP 完整部署

改为
olcSuffix: dc=wuhanjiayou,dc=cn
olcRootDN: cn=admin,dc=wuhanjiayou,dc=cn

统一身份认证系统 OpenLDAP 完整部署

然后在末尾添加一行
此处设置的是 认证密码 olcRootPW: 123456

统一身份认证系统 OpenLDAP 完整部署

3.拷贝 DB 文件

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

// 修改该文件的权限
chown -R ldap:ldap /var/lib/ldap/

4.测试配置文件是否正确

slaptest -u

统一身份认证系统 OpenLDAP 完整部署

5.如果修改了 hostname,相应的要修改 hosts,不然执行命令会卡住,很长时间才会执行完成。

hostnamectl set-hostname ldap
echo '127.0.0.1 ldap' >> hosts

6.启动服务

systemctl start slapd
systemctl enable slapd

7.添加 scheme 表 [ 重要 ]

否则,后面使用 ldapaddgroup 命令会报错 Error adding group test to LDAP

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/cosine.ldif
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

3 创建 base.ldif 文件

创建如下文件,内容按照自己的配置修改

[root@localhost ~] vim base.ldif
dn: dc=wuhanjiayou,dc=cn
objectClass: dcObject
objectClass: organization
o: wuhanjiayou.cn
dc: wuhanjiayou

dn: ou=users,dc=wuhanjiayou,dc=cn
objectClass: organizationalUnit
objectClass: top
ou: users

dn: ou=groups,dc=wuhanjiayou,dc=cn                                                 
objectClass: organizationalUnit
objectClass: top
ou: groups

建立最基础的目录结构

ldapadd -x -W -D "cn=admin,dc=wuhanjiayou,dc=cn" -f base.ldif
统一身份认证系统 OpenLDAP 完整部署

验证基础目录是否创建成功

vim /etc/openldap/ldap.conf
添加如下行信息
BASE    dc=wuhanjiayou,dc=cn
URI     ldap://10.0.59.114 ldap://10.0.59.114:666
统一身份认证系统 OpenLDAP 完整部署

管理用户与组

1. 安装依赖包 yum install sharutils
yum install sharutils -y

2. Ldapscripts 需要手动下载安装
cd /opt
tar xzvf ldapscripts-2.0.8.tgz
cd ldapscripts-2.0.8 && make install PREFIX=/

3. 配置 ldapscripts
vim /etc/ldapscripts/ldapscripts.conf
3.1 将 SERVER="ldap://localhost" 改成 SERVER="ldap://10.0.59.114"
3.2 将 SUFFIX="dc=example,dc=com" 改成 SUFFIX="dc=wuhanjiayou,dc=cn"
3.3 将 BINDDN="cn=Manager,dc=example,dc=com" 改成 BINDDN="cn=admin,dc=wuhanjiayou,dc=cn"
3.4 去掉 #ICONVCHAR="ISO-8859-15" 的注释


4. 修改 /etc/ldapscripts/ldapscripts.passwd 文件
sh -c "echo -n '123456' > /etc/ldapscripts/ldapscripts.passwd"

5 管理 Group,User

// 创建 Group
ldapaddgroup it

// 创建 User
ldapadduser wangj it

// 设置用户密码
ldapsetpasswd wangj
统一身份认证系统 OpenLDAP 完整部署

6 基于 PHPLDAPAdmin 访问管理后台
LDAP 装好后,下面安装 Web 界面 PHPLDAPAdmin。

我们可以安装 PHPLDAPAdmin Web 平台来管理我们的 OpenLDAP 服务,这样就可以在 Web 页面进行 OpenLDAP 服务的数据增删改查,方便运维。

安装 Apache 和 PHP
yum install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml -y
1.
安装 PHPLDAPAdmin
# 需要先安装 epel 源
yum -y install epel-release
yum --enablerepo=epel -y install phpldapadmin
1.
2.
3.
配置 HTTPD
复制 
vim /etc/httpd/conf/httpd.conf
AllowOverride All                                         // 第 151 行
DirectoryIndex index.html index.cgi index.php             // 第 164 行

# 末尾添加如下几行                               
# server's response header
ServerTokens Prod
# keepalive is ON
KeepAlive On
统一身份认证系统 OpenLDAP 完整部署

配置 PHPLDAPAdmin,修改登入规则和监听端口

vim /etc/phpldapadmin/config.php

# 397 行取消注释, 398 行添加注释 [设置通过 DN 整个条目来登入 PHPLDAPAdmin 而不是通过用户的 UID 来登入 ]
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');

# [ 如果 LDAP 服务安装和 PHPLDAPAdmin 服务安装不在同一个服务器上 ]
# 则修改 298 和 301 行, 修改 PHPLDAPAdmin 监听的 IP 和端口, 并取消注释
# [ 如果 LDAP 服务和 PHPLDAPAdmin 服务在同一台服务器上 ]
# 且 LDAP 的端口为 389, 则可不修改, 直接取消注释即可
/* Examples:                                                                                  
   'ldap.example.com',
   'ldaps://ldap.example.com/',
   'ldapi://%2fusr%local%2fvar%2frun%2fldapi'
           (Unix socket at /usr/local/var/run/ldap) */
$servers->setValue('server','host','127.0.0.1');

统一身份认证系统 OpenLDAP 完整部署

配置 PHPLDAPAdmin
修改 PHPLDAPAdmin 的配置文件,访问控制权限 vim /etc/httpd/conf.d/phpldapadmin.conf,允许谁访问添加访问的 IP 段,允许远程客户端访问。

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  # Apache版本是 2.4 的修改这里的配置
    Require local
    Require  ip  10.0.59.0/24		# 修改
  </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>
统一身份认证系统 OpenLDAP 完整部署

启动 PHPLDAPAdmin

systemctl enable httpd
systemctl start httpd

Web 浏览器访问网址
使用数据库管理账户登入 PHPLDAPAdmin,如果登入成功,则表示配置成功。

用户名:cn=admin,dc=wuhanjiayou,dc=cn 密码:123456

统一身份认证系统 OpenLDAP 完整部署

如登录报错:可尝试关闭服务器 SELinux 试试

统一身份认证系统 OpenLDAP 完整部署

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/10484

(0)
凯影的头像凯影
上一篇 2023年12月11日 下午3:33
下一篇 2023年12月12日 下午3:15

相关推荐

  • 远程连接Windows Server 2003实例后在服务器上执行操作时速度缓慢,如何处理?

    问题描述 远程连接Windows Server 2003实例时,使用VNC登录服务器正常,但是使用其他远程连接方式登录服务器时,打开程序和浏览网站速度缓慢。 问题原因 网卡的Offload.Tx.LSO参数为开启状态导致该问题。 解决方案 您可以根据实际情况选择如下任意一种方案处理该问题,具体如下: 将网卡的Offload.Tx.LSO参数更改为Disabl…

    2023年11月17日
    25800
  • Linux下查找并删除挖矿程序实例

    症状表现 从外网连接服务器时,间接性断开特别频繁。在断开的时候,从内网也连接不上 排查方法 从链路等硬件方面去排查 通过zabbix监控的服务器的端口,发现这个服务器一直在间断性占用1000M带宽,实际客户购买的带宽15M,这就是客户间断性频繁断网的原因。 在排除了线路等相关问题后,将问题锁定在客户系统内。 在软件中排查 在Linux系统中,我们可以使用to…

    2022年6月14日
    73300
  • Centos7忘记root密码怎么办

    重启linux,进入系统的GRUB菜单界面,选择最下方的,按下小写字母e进入编辑界面 按下方向键,找到以字符串Linux16开头的行,光标移动到结尾,然后输入init=/bin/bash enforcing=0 代表登录系统后,加载bash解释器,然后关闭selinux 按下ctrl+x组合键以单用户模式启动Linux 输入如下命令,重新挂载根目录,进入可写…

    2022年6月11日
    56000
  • crontab中反引号和$()无效的解决

    问题描述 1.增加了一条crontab,删除本月中2天以前的日志 10 02  * * * /bin/find /data/logs/php/$(date  +%Y%m)/ -mtime +2 | xargs rm -rf   可是看上面的crontab总是运行失败,然后查/var/log/cron 日志报 Jul 22 02:02:01  loc…

    2023年3月29日
    42400
  • HBase 详细图文介绍

    一、HBase 定义 Apache HBase™ 是 以 hdfs 为数据存储的 ,一种分布式、可扩展的 NoSQL 数据库。 二、HBase 数据模型 HBase 的设计理念依据 Google 的 BigTable 论文,论文中对于数据模型的首句介绍 。Bigtable 是一个稀疏的 、 分布式的 、 持久的多维排序 map 。之后对于映射的解释如下:该映…

    2023年12月15日
    24100

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信