资讯详情

【LDAP】在Centos7环境搭建LDAP服务端

在Centos7环境搭建LDAP服务端

  • 前言
  • 正文
    • OpenLDAP介绍
    • LDIF文件书写规则
    • OpenLDAP部署
      • 安装服务
      • 配置ldap
        • 修改管理员密码
        • 初始化配置
          • 配置文件直接修改(不推荐)
          • 使用ldapmodify(建议)
        • 添加模式
        • 修改其它配置
          • 修改服务端口
      • 创建域文件
        • 修改BaseDN信息
        • 添加自己的域信息

前言

事情最近开始的原因是HW行动,我们的环境NIFI由于集群被内外网隔离,没有开启任何安全防护措施(防火墙除外),因此内网嗅探工具检测到未经授权的访问漏洞。为了不打开它kerberos我们认识到修复漏洞的前提KNOX该工具发现它可以与许多大数据组件集成,作为正代理或SSO单点登录。

大家一合计,既然要做安全集群,那就折腾一下,最后整理出来,安全复扫也没有再扫出漏洞。 在这里插入图片描述 不过在做KNOX当我们使用内置的时候,我们使用它ldap服务没有进行ldap自建后,完成后,我仍然认为我需要自建ldap会更好,所以有个人对OpenLDAP的学习。

正文

OpenLDAP介绍

OpenLDAP其实就是LDAP必须注意协议的开源实现LDAP是指协议,不是服务,LDAP目录信息存储在树形结构中,在树根中一般定义国家(c=CN)或者域名(dc=com),其次往往定义一个或多个组织(organization, o)或组织单元(organization unit, ou)。一个组织单位可以包含员工、设备信息(计算机/打印机等)。组织单位可以包括员工、设备信息(计算机/打印机等)。)相关信息。uid=babs, ou=People, dc=example, dc=com,dc如果你想在这里增加自己domain component,,百度不到这个; 下图是LDAP中间的相关概念,仅供部署,请参考:

LDIF文件书写规则

ldif是存储LDAP标准文本文件格式配置信息和目录内容,通常用于交换数据和OpenLDAP通过服务器相互交换数据,可以通过LDIF实现数据文件的导入、导出、数据文件的添加、修改、重命名等操作,需要根据LDAP中schema操作规范,接受schema的检查,如果不符合OpenLDAP schema规范要求会提示相关语法错误。

  • LDIF每行文件结尾不得有空格或制表符;
  • LDIF文件允许相关属性重复赋值和使用;
  • LDIF文件以.ldif结尾命名;
  • LDIF以#号开头的行为注释可作为解释;
  • LDIF所有文件赋值方法为:属性:[空格]属性值;
  • LDIF一个条目是通过空行定义的,空格前是一个条目,空格后是另一个条目的开始。

OpenLDAP部署

安装服务

检查服务器是否已安装openldap如果不使用相关服务yum进行安装,openldap服务在Centos的ISO镜像中包含软件源,无需额外介绍:

# yum安装命令 # yum -y install openldap openldap-servers openldap-clients openldap-devel compat-openldap [lijiadong@hostname ~]$ rpm -qa|grep openldap openldap-2.4.44-22.el7.x86_64 openldap-clients-2.4.44-22.el7.x86_64 openldap-servers-2.4.44-22.el7.x86_64 compat-openldap-2.3.43-5.el7.x86_64 openldap-devel-2.4.44-22.el7.x86_64 

软件安装完成后,/usr/share/openldap-servers目录下会有文件DB_CONFIG.example,初始化配置;

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # 注意授权ldap用户 chown ldap:ldap DB_CONFIG  

接下来启动slapd服务:

systemctl start slapd systemctl status slapd # 设置启动启动 systemctl enable slapd 

几乎所有的在线数据都会被修改slapd.conf但是配置变更,但openldap2.4.23版本后不再使用slapd.conf作为配置文件,必须知道这一点

配置ldap

修改管理员密码

# 执行slappasswd -s ${password},记录返回值,后续使用 { 
        SSHA}EVy9FDUpcmS8g9meVx7oZj2x38oikdsadsasNS 

初始化配置

这里有两种方法可以比较,因为作者以前踩过坑,手动修改配置文件,这实际上是官方不推荐的

配置文件直接修改(不推荐)

如果下行没有,则新增,dc注意改变域名domain

olcSuffix: dc=maggot,dc=com olcRootPW: {SSHA}EVy9FDUpcmS8g9meVx7oZj2x38oikdsadsasNS olcRootDN: cn=Manager,dc=maggot,dc=co 

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=maggot,dc=com" read by * none

该步骤是为了检查配置文件是否存在错误:

slaptest -u

返回值有config file testing succeeded则说明配置文件无误,checksum error on的异常是因为手动修改了文件,ldap检查和之前不一致;

使用ldapmodify(建议)

首先来修改hbd.ldif文件,编辑一个新的db.ldif文件,注意修改olcRootDN和olcSuffix,改成你需要的域名相关信息,同时修改olcRootPW内容,这个值就是上一节返回的管理员密码加密字符串:

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

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

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

保存退出后,执行ldapmodify进行更新:

ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/db.ldif 

修改monitor.ldif文件,编辑一个新的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=root,dc=maggot,dc=com" read by * none

保存退出后,执行ldapmodify进行更新:

ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/monitor.ldif 

此时我们再进行检查,不会再像直接修改配置文件一样报checksum的错误:

slaptest -u

添加模式

添加cosine和nis LDAP模式,这一步还不清楚原因:

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

其他配置修改

修改服务端口

端口配置在/etc/sysconfig/slapd文件:

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://localhost:33389/"

# Any custom options
#SLAPD_OPTIONS=""

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

创建域文件

修改BaseDN信息

创建一个ldif文件,这里假设为maggot.ldif:

dn: dc=maggot,dc=com
dc: maggot
objectClass: top
objectClass: domain

dn: cn=root,dc=maggot,dc=com
objectClass: organizationalRole
cn: root
description: Maggot LDAP manager users

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

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

导入生效:

ldapadd -x -W -D "cn=root,dc=maggot,dc=com" -f /tmp/maggot.ldif

添加自己的域信息

可以编辑一下结构的ldif文件,用于生成组织信息,该操作会最终生成多个层级的dc,

dn: dc=org,dc=maggot,dc=com
objectClass: domain
objectclass: dcObject
dc: org

dn: dc=apache,dc=org,dc=maggot,dc=com
objectClass: domain
objectclass: dcObject
dc: apache

dn: dc=hadoop,dc=apache,dc=org,dc=maggot,dc=com
objectClass: organization
objectClass: dcObject
o: Hadoop
dc: hadoop

添加完成后通过ldapsearch命令查看结果:

ldapsearch -h localhost -p 389 -x -D "cn=root,dc=maggot,dc=com" -w 'Dtsw@Admin996' -b 'dc=maggot,dc=com' '(objectClass=*)'

到这一步已经能够满足KNOX切换到自建LDAP服务的要求了,切换完成后,测试登录正常,且日志中能够看到对自定义域的用户规则的匹配记录:

标签: 三极管hbd438t

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台