如何搭建自己的域控LDAP

937 阅读3分钟

随着企业发展,越来越多的企业拥有了更多的业务系统,小部分系统安全要求较高,就可以使用自己的私有域控可以来控制这部分鉴权。推荐自建LDAP服务器,并在系统开发中进行引入,用户登录统一采用私有域控鉴权。

LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务。为了访问存储在目录中的信息,就需要使用运行在TCP/IP 之上的访问协议—LDAP。

安装软件

  1. 使用 yum install 安装ldap相关软件

yum install -y openldap openldap-clients openldap-servers vim

配置openldap server

将下述配置文件中的 Manager 和 my-domain 更换成自己的命名

1.配置 /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif

vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif

将原本内容进行替换

image.png

替换成

image.png

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

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

将原本内容进行替换

image.png

进行替换,并在最后一行添加认证密码123123: olcRootPW: 123123

image.png

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

如果出现下图样式表示成功,可以忽略error,只要出现 succeeded 即表示成功。

image.png

5.启动服务

systemctl start slapd
systemctl enable slapd

6.添加scheme表

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

创建base.ldif文件

1.创建 base.ldif 文件

vim base.ldif

2.拷贝如下内容到创建的 base.ldif 文件

其中的 codesweet 和前面的步骤统一,如果一开始你是设置其他名称,则此处的 codesweet 更换成你的名称,保持统一即可。

	dn: dc=codesweet,dc=com
	objectClass: dcObject
	objectClass: organization
	o: codesweet.com
	dc: codesweet
	
	dn: ou=users,dc=codesweet,dc=com
	objectClass: organizationalUnit
	objectClass: top
	ou: users
	
	dn: ou=groups,dc=codesweet,dc=com
	objectClass: organizationalUnit
	objectClass: top
	ou: groups

3.建立最基础的目录结构

ldapadd -x -W -D "cn=admin,dc=dianxin,dc=com" -f base.ldif

4.配置 ldap.conf

vim /etc/openldap/ldap.conf

将 BASE 和 URL 的注释去除,更换为下述,BASE 中的第一个 dc 更换为 codesweet,URL 中的IP 地址更换为你的云服务器的公网 IP。

image.png

管理用户与组

安装依赖包 sharutils

yum install sharutils

1 .手动安装资源包 Ldapscripts 将文章起始处下载的资源包 Ldapscripts 上传到 ECS 的根路径中,然后进行解压并手动安装到根路径中。

tar zxf ldapscripts-2.0.8.tgz
cd  ldapscripts-2.0.8
make install PREFIX=/

配置 **dapscripts**

vim /etc/ldapscripts/ldapscripts.conf

a. 更换公网IP,将 SERVER="ldap://localhost" 改成 SERVER="ldap://121.51.39.239" b. 将 SUFFIX="dc=example,dc=com" 改成 SUFFIX="dc=codesweet,dc=com" c. 将 BINDDN="cn=Manager,dc=example,dc=com" 改成 BINDDN="cn=admin,dc=codesweet,dc=com" d. 去掉 #ICONVCHAR="ISO-8859-15" 的注释

修改 /etc/ldapscripts/ldapscripts.passwd 文件

sh -c "echo -n '123456' > /etc/ldapscripts/ldapscripts.passwd"

管理group,user 这一节可以忽略,这是介绍如何在终端中配置ldap中的用户和组的,后面可以在web中创建。

创建group ldapaddgroup openstack 1 创建用户 ldapadduser user1 openstack 1 设置用户密码 ldapsetpasswd user1

web 端登录LDAP

  1. 启动了apache服务后,采用dn登录方式登录 web 端LDAP。
  2. 在浏览器上访问: http://公网IP/ldapadmin,然后使用上面定义的用户,进行登录,如下:
账户:cn=admin,dc=codesweet,dc=com 
密码:123123

登录页面如下

image.png

登陆成功如下

image.png

附录-python-django如何对接ldap服务器进行私有域控鉴权

# 使用Python-Django进行LDAP身份验证

image.png