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续--日常管理

  • 相关阅读:
    HDU 3681 Prison Break 越狱(状压DP,变形)
    POJ 2411 Mondriaan's Dream (状压DP,骨牌覆盖,经典)
    ZOJ 3471 Most Powerful (状压DP,经典)
    POJ 2288 Islands and Bridges (状压DP,变形)
    HDU 3001 Travelling (状压DP,3进制)
    POJ 3311 Hie with the Pie (状压DP)
    POJ 1185 炮兵阵地 (状压DP,轮廓线DP)
    FZU 2204 7
    POJ 3254 Corn Fields (状压DP,轮廓线DP)
    ZOJ 3494 BCD Code (数位DP,AC自动机)
  • 原文地址:https://www.cnblogs.com/hongfeng2019/p/11568456.html
Copyright © 2011-2022 走看看