- 企业级 OpenLDAP 账号统一管理应用
- LDAP 安装、配置、启动
- LDAP 日志配置
- LDAP ssl/tls 配置
- 访问控制
- 域组织架构、创建 OU/GROUP/USER
- 图形和命令工具使用
- LDAP 自助密码服务
- LDAP 认证其它应用服务
1.0 部署环境
系统版本 | 主机名 | IP地址 | 备注 |
---|---|---|---|
centos 7.9 | ldap | 10.10.10.114 | ldap_version: 2.4.44 |
2.0 LDAP 理论
2.1 LDAP 支持的数据库
1 | // OpenLDAP 默认以 Oracle 公司的 BDB 作为后端数据库,是一个开源数据库。关于 OpenLDAP 的几种数据库类型如下: |
2.2 OpenLDAP 目录服务优点
1 | // OpenLDAP 是一个跨平台的标准互联网协议,它基于X.500 标准协议。 |
2.3 OpenLDAP 属性介绍
1 | // c: country ,国家名,一般用两位字母,如 c=zh |
3.0 LDAP 安装、配置、启动
3.1 yum 安装 OpenLDAP
1 | # yum -y install openldap openldap-servers openldap-clients compat-openldap openldap-servers-sql openldap-devel migrationtools |
3.2 备份 ldap.d 目录
1 | # cd /etc/openldap/ |
3.3 配置
- LDAP 配置文件修改有 2 种方式
- 1 使用 LDIF 命令执行方式修改数据库。配置直接生效,无需重启 LDAP(需要熟悉各种API查询修改等方式)
- 2 修改主配置文件,重启 LDAP 使配置生效(备份迁移方便,易恢复) – 本文采用第 2 种方式部署
3.3.1 生成超级管理员加密秘钥
1 | # slappasswd -s ink8s.com > pass.txt # 将加密密码保存到文件中 |
3.3.2 LDAP 主配置文件修改
1 | # cp /usr/share/openldap-servers/slapd.ldif /etc/openldap/ |
3.3.3 启动
1 | # cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG |
4.0 LDAP 日志配置
4.1 开启 LDAP 日志
1 | // LDAP 主配置文件修改特别注意,空行表示为上下段配置的分隔。如果上下段配置中间有"#"连接,则视为一段整体配置 |
4.2 LDAP 日志切割
1 | # mkdir -p /var/log/ldap |
4.2.1 日志级别介绍
1 | # slapd -d ? # 命令查看日志级别 |
4.2.2 定义日志文件位置
1 | # cat /etc/rsyslog.conf |
4.2.3 重启配置
1 | // 脚本方式重启 |
5.0 LDAP ssl/tls 配置
5.1 创建自签证书
1 | # cd /etc/openldap/certs/ |
5.2 TLS 配置
1 | # systemctl stop slapd |
5.3 开启 ldaps
1 | # cat /etc/sysconfig/slapd |
6.0 访问控制
6.1 关闭匿名访问
1 | # cat /etc/openldap/slapd.ldif |
6.2 赋权运维相关账号
1 | # cat /etc/openldap/slapd.ldif |
7.0 域组织
1 | # ldapadd |
7.1 创建基本域
1 | # cat config_bash_domain.ldif |
7.2 创建 OU、USER
7.2.1 LDAP SERVER 配置 TLS
1 | // 创建 OU 使用的是 636 方式需要有根证书认证,所以需要先配置认证才能创建 OU |
7.2.2 创建 OU
1 | # cat create_ou.ldif |
7.2.3 创建组
1 | # cat create_group.ldif |
7.2.4 创建用户
关键字 | 英文全称 | 含义 |
---|---|---|
dc | Domain Component | 域名的部分。如: ink8s.com 变成 dc=ink8s,dc=com |
uid | User ID | 用户 ID 。如: weixj01,必须唯一 |
ou | Organization Unit | 组织单位,类似Linux文件系统中的子目录,它是一个容器对象。组织单位可以包含其它各种对象 |
cn | Common Name | 公共名称 |
sn | Surname | 姓 |
dn | Distinguished Name | 唯一辨别明,类似于Linux文件系统的绝对路径,每个对象有一个唯一的名称。如: uid=weixj01,cn=ops,ou=peopel,dc=ink8s,dc=com,在一个目录树种,DN是唯一的 |
rdn | Relative dn | 相对辨别名,类似于文件系统中的相对路径,与目录树无关。如: uid=weixj01 或 cn=weixj01 |
c | Country | 国家,如: CN 或 US |
o | Organization | 组织名 |
1 | # cat create_user.ldif |
7.2.5 赋予运维人员账号配置管理员权限
- 赋权 zhangsan01 配置管理员账号后,则此账号有权限增删”组”和”用户”
1 | # cat /etc/openldap/slapd.ldif |
8.0 LDAP 客户端管理命令
8.1 客户端管理命令 增、删、改、查
- ldapadd 添加 user/ou
- ldapdelete 删除 user/ou
- ldapmodify 修改用户字段信息
- ldapmodrdn 修改 uid 信息
- ldappasswd 修改 user 密码
- ldapsearch 查询
8.1.1 ldapadd 添加 user/ou
1 | # ldapadd |
1 | // ldif 方式添加 |
8.1.2 ldapdelete 删除 user/ou
1 | # ldapdelete |
1 | // 删除ou命令方式1 |
8.1.3 ldapmodify 修改用户字段信息
1 | ldapmodify |
8.1.4 ldapmodrdn 修改 uid 信息
1 | # 将用户 test01 修改为 test10 ;uid 变化 |
1 | # 将用户 test10 修改为 test20 |
8.1.5 ldappasswd 修改 user 密码
1 | ldappasswd |
8.1.6 ldapsearch 查询
1 | ldapsearch -x -LLL uid # 查看所有uid条目 |
9.0 LDAP 图形化工具
9.1 windows绿色小工具 LdapAdmin
9.2 Mac OS 管理工具 ApacheDirectoryStudio
9.2.1 389 端口配置
9.2.2 636 端口配置
10.0 LDAP 自助密码服务
1 | # docker pull docker.io/ltbproject/self-service-password:latest |
1 | http://ldap.ink8s.com |
11.0 LDAP 认证
11.1 GitLab 认证 LDAP
11.1.1 GitLab 认证 LDAP 无 TLS 认证
1 | // gitlab 版本: gitlab-ce-15.5.3-ce.0.el7.x86_64.rpm |
11.1.2 GitLab 认证 LDAP TLS 认证
1 | # vim /etc/gitlab/gitlab.rb # 以下配置复制的官方示例粘贴进去的 |
11.2 OpenVPN 认证 LDAP [OVPN证书+LDAP用户密码认证]
11.2.1 插件下载
1 | // openvpn-auth-ldap 插件: https://github.com/threerings/openvpn-auth-ldap |
11.2.2 编译安装
1 | # yum -y install re2c libtool openldap openldap-devel openvpn openvpn-devel gcc-objc gcc pcre-devel openssl-devel |
11.2.3 ldap 认证配置文件
1 | # cat /etc/openvpn/auth/auth-ldap.conf |
11.2.4 OpenVPN 主配置文件增加参数
1 | # cat /data/apps/openvpn/openvpn-server.conf |
11.2.5 OpenVPN 客户端证书文件增加参数
1 | // openvpn 的客户端证书必须创建好。例: dev01.ovpn 客户端证书 |
11.2.6 登录验证
11.3 OpenVPN 认证 LDAP [OVPN证书+LDAP用户密码+OTP认证]
- OVPN证书+LDAP用户密码+OTP认证 基于2个插件支持
- openvpn-auth-ldap 插件安装,参考目录 11.2
- openvpn-otp 插件, 参考目录 11.3
11.3.1 插件下载
1 | // openvpn-otp 插件: https://github.com/evgeny-gridasov/openvpn-otp |
11.3.2 编译安装
1 | # yum -y install autoconf automake libtool* libssl-dev penvpn-devel gcc pcre-devel openssl-devel |
11.3.3 OpenVPN 主配置文件增加参数
1 | // 完整配置文件如下 |
11.3.4 客户端证书增加参数
1 | ... |
11.3.5 生成二维码
1 | // 生成二维码 |
11.3.6 Firefox 安装 “Authenticator Extension”插件
- 火狐浏览器直接输入插件名称然后“回车”
- 搜索出来,第一个就是此插件,进入此插件页面
- 添加“Add to Firefox”插件
- 添加到浏览器中 “Add to Firefox”
- 添加到扩展管理
- 浏览器右上角出现了插件小图标
11.3.7 火狐浏览器添加动态验证功能
1. Firefox浏览器右上角选择“Authenticatior Extension”插件图标
2. 选择小铅笔图标[编辑]
3. 点击 "+"图标
4. 选择 "手动输入: IRXNU4B7EH5WBXIONC2A7ZWZVPTXHIFG"
5. 添加完成后
11.3.8 otp 认证配置文件
1 | // 对 Google Authenticator 使用 sha1/base32,无需 pin |
1 | // 客户端6位数动态验证码必须与OpenVPN服务端6位数验证码一直 |
11.3.9 ldap 认证配置文件
1 | # cat /etc/openvpn/auth/auth-ldap.conf |
11.3.10 登录验证 – Mac
11.3.11 登录验证 – Windows
11.4 Jenkins 认证 LDAP
11.4.1 Jenkins 环境
1 | jenkins_version: 2.346.2 |
11.4.2 安装插件和配置备份
1 | // 配置 Jenkins 认证 LDAP 之前,先备份 config.xml 文件,防止 Jenkins 权限配置不正确导致无法登录 Jenkins |
11.4.3 Jenkins 认证配置
1 | // Dashboard --> 系统管理 --> 全局安全配置: |
- jenkins 配置截图 1
- jenkins 配置截图 2
- jenkins 配置截图 3
- jenkins 配置截图 4
- 此处不详细讲解授权策略
- 本文作者: [email protected]
- 本文链接: https://www.ink8s.com/2023/01/09/openldap-搭建/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!