zoukankan      html  css  js  c++  java
  • kerberos

    参考:

    官网:

    https://web.mit.edu/kerberos

    部署:

    https://blog.csdn.net/weixin_38655836/article/details/91587323   GG

    https://www.cnblogs.com/yinzhengjie/p/10765503.html      (上)

    https://www.cnblogs.com/yinzhengjie/articles/10483362.html  (下)

    高可用:

    https://www.cnblogs.com/yinzhengjie/articles/10484790.html

    Kerberos的发布页面:https://kerberos.org/dist/index.html

    Kerberos的官方文档:http://web.mit.edu/kerberos/krb5-1.17/doc/index.html
    Oracle相关的Kerberos文档:https://docs.oracle.com/cd/E26926_01/html/E25889/intro-1.html#scrolltoc

    CDH中kerberos概述:

    https://docs.cloudera.com/documentation/enterprise/6/6.2/topics/sg_auth_overview.html

    为CDH启用Kerberos身份验证:

    https://docs.cloudera.com/documentation/enterprise/6/6.2/topics/cm_sg_intro_kerb.html

     https://docs.cloudera.com/documentation/enterprise/6/6.2/topics/cm_sg_using_cm_sec_config.html#integrate-kerberos-auth-manually

    ldap和kerberos整合:
    https://blog.csdn.net/ZhouyuanLinli/article/details/78323331


    kerberos:

    安装:
    yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
    修改KDC的配置文件:
    vim /var/kerberos/krb5kdc/kdc.conf
    [kdcdefaults]
    kdc_ports = 88
    kdc_tcp_ports = 88

    [realms]
    OPAYTEST.COM = {
    master_key_type = aes256-cts
    acl_file = /var/kerberos/krb5kdc/kadm5.acl
    dict_file = /usr/share/dict/words
    admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
    supported_enctypes = aes256-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
    }
    以上参数说明:
    [kdcdefaults]
      该部分包含在此文件中列出的所有通用的配置。
    kdc_ports           :指定KDC的默认端口。
    kdc_tcp_ports          :指定KDC的TCP协议默认端口。

    [realms]
      该部分列出每个领域的配置。
    YINZHENGJIE.COM    : 是设定的 realms。名字随意,推荐为大写!,但须与/etc/krb5.conf保持一致。Kerberos 可以支持多个 realms,会增加复杂度。大小写敏感。
    master_key_type    : 默认为禁用,但如果需要256为加密,则可以下载Java加密扩展(JCE)并安装。禁用此参数时,默认使用128位加密。
      acl_file        : 标注了 admin 的用户权限的文件,若文件不存在,需要用户自己创建。即该参数允许为具有对Kerberos数据库的管理访问权限的UPN指定ACL。
    supported_enctypes   : 指定此KDC支持的各种加密类型。
     admin_keytab      : KDC 进行校验的 keytab。
    max_life         : 该参数指定如果指定为2天。这是票据的最长存活时间。
      max_renewable_life   : 该参数指定在多长时间内可重获取票据。
    dict_file         : 该参数指向包含潜在可猜测或可破解密码的文件。

    配置KDC服务的权限管理文件:
    #我们指定*/admin@OPAYTEST.COM用户为管理员用户!拥有全部权限,注意这个通配符“*”,你懂的。
    vim /var/kerberos/krb5kdc/kadm5.acl     
    */admin@OPAYTEST.COM *


    以上参数说明:
    上述参数只有两列,第一列为用户名,第二列为权限分配。
    文件格式是:Kerberos_principal permissions [target_principal] [restrictions],下面是对上面的文件编写参数说明。
    */admin@OPAYTEST.COM :表示以"/admin@OPAYTEST.COM"结尾的用户。
    *            :表示UNP可以执行任何操作,因为权限为所有权限

    修改Kerberos的配置文件信息(包含KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。)
    vim /etc/krb5.conf
    # Configuration snippets may be placed in this directory as well
    includedir /etc/krb5.conf.d/

    [logging]
    default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmind.log

    [libdefaults]
    dns_lookup_realm = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false
    pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
    default_realm = OPAYTEST.COM
    #default_ccache_name = KEYRING:persistent:%{uid}

    [realms]
    OPAYTEST.COM = {
    kdc = zhep-opay-temp-1.novalocal:88
    admin_server = zhep-opay-temp-1.novalocal:749
    default_domain = OPAYTEST.COM
    }

    [domain_realm]
    .opaytest.com = OPAYTEST.COM
    opaytest.com = OPAYTEST.COM

    [kdc]
    profile = /var/kerberos/krb5kdc/kdc.conf

    以上相关配置参数说明:
    [logging]:
      Kerberos守护进程的日志记录方式。换句话说,表示 server 端的日志的打印位置
    default :默认的krb5libs.log日志文件存放路径
    kdc :默认的krb5kdc.log日志文件存放路径
    admin_server :默认的kadmind.log日志文件存放路径

    [libdefaults]:
      Kerberos使用的默认值,当进行身份验证而未指定Kerberos域时,则使用default_realm参数指定的Kerberos域。即每种连接的默认配置,需要注意以下几个关键的配置:
    dns_lookup_realm :DNS查找域名,我们可以理解为DNS的正向解析,该功能我没有去验证过,默认禁用。(我猜测该功能和domain_realm配置有关)
    ticket_lifetime :凭证生效的时限,设置为7天。
    rdns :我理解是和dns_lookup_realm相反,即反向解析技术,该功能我也没有去验证过,默认禁用即可。(我猜测该功能和domain_realm配置有关)
    pkinit_anchors :在KDC中配置pkinit的位置,该参数的具体功能我没有做进一步验证。
    default_realm = YINZHENGJIE.COM :设置 Kerberos 应用程序的默认领域。如果您有多个领域,只需向 [realms] 节添加其他的语句。其中YINZHENGJIE.COM可以为任意名字,推荐为大写。必须跟要配置的realm的名称一致。
    default_ccache_name: :顾名思义,默认的缓存名称,不推荐使用该参数。
      
       renew_lifetime :凭证最长可以被延期的时限,一般为7天。当凭证过期之后,对安全认证的服务的后续访问则会失败。
       forwardable :如果此参数被设置为true,则可以转发票据,这意味着如果具有TGT的用户登陆到远程系统,则KDC可以颁发新的TGT,而不需要用户再次进行身份验证。
       renewable :是否允许票据延迟

    [realms]:
      域特定的信息,例如域的Kerberos服务器的位置。可能有几个,每个域一个。可以为KDC和管理服务器指定一个端口。如果没有配置,则KDC使用端口88,管理服务器使用749。即列举使用的 realm域。
      kdc :代表要KDC的位置。格式是 机器:端口
      admin_server :代表admin的位置。格式是 机器:端口
    default_domain :顾名思义,指定默认的域名。

    [domain_realm]:
      指定DNS域名和Kerberos域名之间映射关系。指定服务器的FQDN,对应的domain_realm值决定了主机所属的域。
      
    [kdc]:
      kdc的配置信息。即指定kdc.conf的位置。
      profile :kdc的配置文件路径,默认值下若无文件则需要创建。

    初始化KDC数据库:
    kdb5_util create -r OPAYTEST.COM -s     
    #注意,-s选项指定将数据库的主节点密钥存储在文件中,从而可以在每次启动KDC时自动重新生成主节点密钥。记住主密钥,稍后会使用。
    Loading random data
    Initializing database '/var/kerberos/krb5kdc/principal' for realm 'OPAYTEST.COM',
    master key name 'K/M@OPAY.COM'
    You will be prompted for the database Master Password.
    It is important that you NOT FORGET this password.
    Enter KDC database master key:    opaytest99                   
    #这里需要输入一个管理KDC服务器的密码!千万别忘记了,忘记的话你就只能重新初始化KDC数据库啦!(如果遇到数据库已经存在的提示,可以把/var/kerberos/krb5kdc/目录下的principal的相关文件都删除掉。默认的数据库名字都是principal。可以使用-d指定数据库名字。)
    Re-enter KDC database master key to verify:

    ll -a /var/kerberos/krb5kdc/        #当我们创建Kerberos数据库成功后,默认会在该目录下创建以下5个文件
    total 36
    drwxr-xr-x 2 root root 4096 May 30 16:26 .
    drwxr-xr-x. 4 root root 4096 May 30 16:20 ..
    -rw------- 1 root root 80 May 30 16:26 .k5.OPAYTEST.COM #存储文件k5.YINZHENGJIE.COM,它默认是隐藏文件
    -rw------- 1 root root 26 May 30 16:25 kadm5.acl                 #定义管理员权限的配置文件
    -rw------- 1 root root 422 May 30 16:25 kdc.conf                 #KDC的主配置文件
    -rw------- 1 root root 8192 May 30 16:26 principal                 #Kerberos数据库文件
    -rw------- 1 root root 8192 May 30 16:26 principal.kadm5              #Kerberos数据库管理文件
    -rw------- 1 root root 0 May 30 16:26 principal.kadm5.lock           #数据库锁管理文件
    -rw------- 1 root root 0 May 30 16:26 principal.ok               #Kerberos数据库文件

    启动KDC服务器:
    systemctl enable krb5kdc
    systemctl start krb5kdc
    systemctl status krb5kdc
    启动Kerberos服务器
    systemctl start kadmin

    KDC 服务器上创建超级管理员账户
    kadmin.local
    Authenticating as principal root/admin@OPAYTEST.COM with password.
    kadmin.local:
    kadmin.local: addprinc root/admin        
    #我们为KDC添加一个管理员用户,关于管理员规则我们以及在"/var/kerberos/krb5kdc/kadm5.acl"中定义的。细心的小伙伴发现,我们写的是"root/admin",但是创建用户却显示的是"root@admin@OPAYTEST.COM"
    WARNING: no policy specified for root/admin@OPAYTEST.COM; defaulting to no policy
    Enter password for principal "root/admin@OPAYTEST.COM": opaytest99
    Re-enter password for principal "root/admin@OPAYTEST.COM": opaytest99
    Principal "root/admin@OPAYTEST.COM" created.
    kadmin.local:
    kadmin.local: listprincs
    K/M@OPAYTEST.COM
    kadmin/admin@OPAYTEST.COM
    kadmin/changepw@OPAYTEST.COM
    kadmin/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    kiprop/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    krbtgt/OPAYTEST.COM@OPAYTEST.COM
    root/admin@OPAYTEST.COM
    kadmin.local:
    kadmin.local: quit


    #为所有节点,包括manager节点安装客户端
    yum install -y krb5-libs krb5-workstation
    #将服务器端的krb5.conf配置文件拷贝到所有节点的/etc目录下:
    /etc/krb5.conf /etc/

    客户端配置文件和服务段同步后,进行登陆,验证是否可以成功登陆
    klist
    klist: No credentials cache found (filename: /tmp/krb5cc_0)

    kinit root/admin      #我们在当前终端使用root/admin@OPAYTEST.COM用户登陆成功啦!
    Password for root/admin@OPAYTEST.COM:
    klist
    Ticket cache: FILE:/tmp/krb5cc_0
    Default principal: root/admin@OPAYTEST.COM

    Valid starting Expires Service principal
    04/30/2019 18:29:43 05/01/2019 18:29:43 krbtgt/OPAYTEST.COM@OPAYTEST.COM

    在KDC中给Cloudera Manager添加管理员账号
    kadmin.local
    addprinc cloudera-scm/admin@OPAYTEST.COM


    三.Kerberos 一些基本操作命令
    参考:https://www.cnblogs.com/yinzhengjie/p/10765503.html
    使用kadmin.local命令进入本地管理员模式
    kadmin.local
    Authenticating as principal root/admin@OPAYTEST.COM with password.
    kadmin.local:
    kadmin.local: ?      #输入“?”可以查看命令列表,如下所示所示。
    Available kadmin.local requests:
    查看已经存在的凭据
    listprincs
    创建凭据
    addprinc -randkey hdfs/zhep-opay-temp-1.novalocal
    删除凭据
    delprinc hdfs/zhep-opay-temp-1.novalocal
    导出某个用户的keytab证书(使用xst命令或者ktadd命令)
    ktadd -k /root/node103.keytab hdfs/node103.yinzhengjie.org.cn
    xst -k /root/node103.keytab-v2 hdfs/node103.yinzhengjie.org.cn
    linux系统下查看当前客户端认证用户
    klist
    删除当前的认证的缓存
    kdestroy

    addprinc -randkey hdfs/zhep-opay-temp-1.novalocal
    addprinc -randkey hive/zhep-opay-temp-1.novalocal
    addprinc -randkey oozie/zhep-opay-temp-1.novalocal
    addprinc -randkey hue/zhep-opay-temp-1.novalocal
    addprinc -randkey sentry/zhep-opay-temp-1.novalocal

    在CM中启用kerberros服务:

     https://blog.csdn.net/weixin_38655836/article/details/91587323


    启用前后凭据的对比:
    kadmin.local: listprincs
    HTTP/zhep-opay-temp-3.novalocal@OPAYTEST.COM
    HTTP/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
    K/M@OPAYTEST.COM
    cloudera-scm/admin@OPAYTEST.COM
    kadmin/admin@OPAYTEST.COM
    kadmin/changepw@OPAYTEST.COM
    krbtgt/OPAYTEST.COM@OPAYTEST.COM
    root/admin@OPAYTEST.COM
    kadmin.local: listprincs
    HTTP/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    HTTP/zhep-opay-temp-2.novalocal@OPAYTEST.COM
    HTTP/zhep-opay-temp-3.novalocal@OPAYTEST.COM
    HTTP/zhep-opay-temp-4.novalocal@OPAYTEST.COM
    HTTP/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
    K/M@OPAYTEST.COM
    cloudera-scm/admin@OPAYTEST.COM
    hdfs/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    hdfs/zhep-opay-temp-2.novalocal@OPAYTEST.COM
    hdfs/zhep-opay-temp-3.novalocal@OPAYTEST.COM
    hdfs/zhep-opay-temp-4.novalocal@OPAYTEST.COM
    hdfs/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
    hive/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    hive/zhep-opay-temp-2.novalocal@OPAYTEST.COM
    hive/zhep-opay-temp-3.novalocal@OPAYTEST.COM
    hive/zhep-opay-temp-4.novalocal@OPAYTEST.COM
    hive/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
    httpfs/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    hue/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    hue/zhep-opay-temp-2.novalocal@OPAYTEST.COM
    kadmin/admin@OPAYTEST.COM
    kadmin/changepw@OPAYTEST.COM
    krbtgt/OPAYTEST.COM@OPAYTEST.COM
    mapred/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    oozie/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    root/admin@OPAYTEST.COM
    sentry/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    yarn/zhep-opay-temp-1.novalocal@OPAYTEST.COM
    yarn/zhep-opay-temp-2.novalocal@OPAYTEST.COM
    yarn/zhep-opay-temp-3.novalocal@OPAYTEST.COM
    yarn/zhep-opay-temp-4.novalocal@OPAYTEST.COM
    yarn/zhep-opay-temp-big-data-1.novalocal@OPAYTEST.COM
    zookeeper/zhep-opay-temp-2.novalocal@OPAYTEST.COM
    zookeeper/zhep-opay-temp-3.novalocal@OPAYTEST.COM
    zookeeper/zhep-opay-temp-4.novalocal@OPAYTEST.COM

    踏过的坑:

    见笔记--CDH续--日常管理

  • 相关阅读:
    vue router 中 mode和base
    C# 迭代器、枚举器、IEnumerable和IEnumerator
    C#单例模式(Singleton Pattern)
    C#设计模式
    C# UML图符号的含义
    C#设计模式-迭代器模式
    IQueryable<T>和表达式树
    .NET IEnumerable和IEnumerator
    C#基础知识之const和readonly关键字
    C#基础知识之base、this、new、override、abstract梳理
  • 原文地址:https://www.cnblogs.com/hongfeng2019/p/11568456.html
Copyright © 2011-2022 走看看