zoukankan      html  css  js  c++  java
  • Openldap集成Kerberos

    1. 概述

      openldap集成kerberos,有两种,一是openldap和kerberos各自拥有个人的数据库,一是openldap和kerberos共用一个数据库。

      以下操作是在https://www.cnblogs.com/swordfall/p/12009716.html Kerberos基本原理、安装部署及用法 和https://www.cnblogs.com/swordfall/p/12119010.html Openldap安装部署 基础上实施的。

    2. 不共用LDAP数据库的集成方式

    2.1. 创建LDAP管理员用户

      为了使kerberos能够绑定到openldap服务器,需创建一个管理员用户

      在kdc服务器执行如下操作:

    kadmin.local -q "addprinc ldapadmin@EXAMPLE.COM"

    2.2. 添加principal

      在kdc服务器执行如下操作:

    kadmin.local -q "addprinc -randkey ldap/bridge1@EXAMPLE.COM"

    2.3. 生成keytab文件

      在kdc服务器执行如下操作:

    kadmin.local -q "ktadd -k /etc/openldap/ldap.keytab ldap/bridge1@EXAMPLE.COM"

    2.4. 赋予keytab文件权限

      把生成的ldap.keytab文件转移到openldap服务器节点上,并在openldap服务器节点执行如下操作:

    chown ldap:ldap /etc/openldap/ldap.keytab && chmod 640 /etc/openldap/ldap.keytab

    2.5. 验证keytab文件

      使用ldapadmin用户测试,输入密码没有报错说明已通过kerberos身份验证

    kinit ldapadmin

    2.6. 增加KRB5_KTNAME配置

      在openldap服务器节点,确保LDAP启动时使用上一步创建的keytab文件,在/etc/sysconfig/sladp文件中增加如下内容:

    KRB5_KTNAME=/etc/openldap/ldap.keytab

      然后重启服务

    systemctl restart slapd

      至此,LDAP与Kerberos已完成集成。

    3. 共用LDAP数据库的集成方式

      kerberos相关的数据也需要存储在某个数据库中,在这里我们选择使用LDAP作为其数据库,目的是为了数据备份的方便(只需要统一备份LDAP数据库即可)。如果需要使用kerberos自身的数据库,则需要将下面的kdb5_ldap_util命令替换为kdb5_util。

    3.1. ldap加载kerberos对应schema

      Kerberos.schema是在krb5-server-ldap安装之后才出现的,不能使用该软件安装后自带的kerberos.ldif,需要手动生成。安装软件krb5-server-ldap,获取kerberos.schema。

      在openldap服务器节点执行如下命令:

    yum -y install krb5-server-ldap

       移动kerberos.schema到目的目录

    mv /usr/share/doc/krb5-server-ldap-1.15.1/Kerberos.schema /etc/openldap/schema

      手动创建文件schema_convert.conf用来生成kerberos.ldif,文件内容如下:

    # vim schema_convert.conf
    
    include /etc/openldap/schema/core.schema
    include /etc/openldap/schema/collective.schema
    include /etc/openldap/schema/corba.schema
    include /etc/openldap/schema/cosine.schema
    include /etc/openldap/schema/duaconf.schema
    include /etc/openldap/schema/dyngroup.schema
    include /etc/openldap/schema/inetorgperson.schema
    include /etc/openldap/schema/java.schema
    include /etc/openldap/schema/misc.schema
    include /etc/openldap/schema/nis.schema
    include /etc/openldap/schema/openldap.schema
    include /etc/openldap/schema/ppolicy.schema
    include /etc/openldap/schema/kerberos.schema

      使用命令生成kerberos.ldif

    slapcat -f schema_convert.conf -F /root/kerberos/ -n 0 -s "cn={13}kerberos,cn=schema,cn=config"
    
    cp cn=config/cn=schema/cn={12}kerberos.ldif /root/kerberos/Kerberos.ldif

      修改生成的kerberos.ldif,把dn: cn={12}kerberos改为dn: cn={13}kerberos,cn=schema,cn=config,把cn: {12}kerberos改为cn: {13}kerberos

      注:

        这里的cn={13}kerberos是因为schema_convert.conf文件里面kerberos排行13,故kerberos是作为第13个导入到openldap里面的。

    3.2. 生成LDAP数据库RootDN的密码文件

    kdb5_ldap_util -D cn=admin,dc=node3,dc=com -w 123456 stashsrvpw -f /etc/krb5.ldap cn=admin,dc=node3,dc=com

    3.3. 增加kerberos在ldap数据库的container DN

      增加一个kerberos.ldif文件

    vim kerberos.ldif 
    
    dn: cn=kerberos,dc=node3,dc=com
    cn: kerberos
    objectClass: organizationalRole

      执行命令,添加cn=Kerberos,dc=node3,dc=com节点

     ldapadd -x -D cn=admin,dc=node3,dc=com -W -f kerberos.ldif

    3.4. 更新kerberos的server配置

      [realms]字段,EXAMPLE.COM设置为需要的值,增加database_module=openldap_ldapconf配置

    # vim  /var/kerberos/krb5kdc/kdc.conf
    
    [realms]
     EXAMPLE.COM = {
      ……
      database_module = openldap_ldapconf
     }
    
    [dbdefaults]
     ldap_kerberos_container_dn = cn=kerberos,dc=node3,dc=com
    
    [dbmodules]
     openldap_ldapconf = {
      db_library = kldap
      ldap_servers = ldapi://192.168.1.107:389
      ldap_kerberos_container_dn = cn=kerberos,dc=node3,dc=com
      ldap_kdc_dn = cn=admin,dc=node3,dc=com
      ldap_kadmind_dn = cn=admin,dc=node3,dc=com
      ldap_service_password_file = /etc/krb5.ldap
      ldap_conns_per_server = 5
     }

      注:

      ldap_kerberos_container_dc字段为kerberos在ldap数据库的container。ldap_kdc_dn和ldap_kadmind_dc分别对应kerberos访问LDAP数据库时的服务和管理账号,为方便管理,都是用rootdn。

    3.5. 创建kerberos的LDAP数据库

    kdb5_ldap_util -D cn=admin,dc=node3,dc=com -w 123456 -H ldap://192.168.1.107:389 create -r EXAMPLE.COM -s

    3.6. 重启kerberos服务

      在kdc服务器节点执行如下操作:

    systemctl restart krb5kdc
    systemctl restart kadmin

    4. 参考资料

    https://blog.51cto.com/10788142/2167923

    https://www.cnblogs.com/swordfall/p/12009716.html Kerberos基本原理、安装部署及用法 

    https://www.cnblogs.com/swordfall/p/12119010.html Openldap安装部署 

  • 相关阅读:
    asp.net的Context.Cache缓存过期策略
    sql语句执行时算术运算导致溢出。
    sqlserver进行join的方式选择
    Apollo配置中心
    sqlserver的left join优化
    iis设置上传文件大小限制
    Android中的颜色值
    Network authentication method and device for implementing the same
    MongoDB GridFS
    MongoDB 正则表达式
  • 原文地址:https://www.cnblogs.com/swordfall/p/14682565.html
Copyright © 2011-2022 走看看