美文网首页
kerberos安装

kerberos安装

作者: 专职掏大粪 | 来源:发表于2021-07-05 16:42 被阅读0次

    配置 Kerberos Server

    选择一个主机来运行KDC,并在该主机上安装krb-5libs,krb5-server,已经krb5-workstation:

    sudo yum install krb5-server krb5-libs krb5-auth-dialog
    

    配置kdc.conf, 默认放在 /var/kerberos/krb5kdc/kdc.conf

    配置示例:

    [kdcdefaults]
     kdc_ports = 88
     kdc_tcp_ports = 88
    
    [realms]
     HADOOP.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 aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
     }
    

    说明:
    HADOOP.COM:是设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
    max_renewable_life = 7d 涉及到是否能进行ticket的renwe必须配置。
    master_key_type:和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,更多参考2.2.9关于AES-256加密:。推荐不使用。
    acl_file:标注了admin的用户权限。文件格式是
    Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
    admin_keytab:KDC进行校验的keytab。后文会提及如何创建。
    supported_enctypes:支持的校验方式。注意把aes256-cts去掉

    配置krb5.conf

    /etc/krb5.conf: 包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置

    [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 = FILE:/etc/pki/tls/certs/ca-bundle.crt
     default_realm = HADOOP.COM
     default_ccache_name = KEYRING:persistent:%{uid}
    
    [realms]
     HADOOP.COM = {
      kdc = node007233
      admin_server = node007233
     }
    
    [domain_realm]
     .hadoop.com = HADOOP.COM
     hadoop.com = HADOOP.COM
    

    说明:
    [logging]:表示server端的日志的打印位置
    [libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
    default_realm = HADOOP.COM 默认的realm,必须跟要配置的realm的名称一致。
    udp_preference_limit = 1 禁止使用udp可以防止一个Hadoop中的错误
    oticket_lifetime表明凭证生效的时限,一般为24小时。
    orenew_lifetime表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,
    对安全认证的服务的后续访问则会失败。
    kdc:代表要kdc的位置。格式是 机器:端口
    admin_server:代表admin的位置。格式是机器:端口
    default_domain:代表默认的域名

    创建/初始化Kerberos database

    完成上面两个配置文件后,就可以进行初始化并启动了。

    /usr/sbin/kdb5_util create -s -r HADOOP.COM
    

    其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);还可以用[-r]来指定一个realm name —— 当krb5.conf中定义了多个realm时才是必要的。

    保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可

    在此过程中,我们会输入database的管理密码。这里设置的密码一定要记住,如果忘记了,就无法管理Kerberos server。

    当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:

    kadm5.acl
    kdc.conf
    principal
    principal.kadm5
    principal.kadm5.lock
    principal.ok
    

    添加database administrator

    kadmin.local -q "addprinc -randkey yarn/node007233@HADOOP.COM"
    

    1.在maste KDC上执行:

    /usr/sbin/kadmin.local -q "addprinc admin/admin"
    

    2.并为其设置密码

    可以直接运行在master KDC上,而不需要首先通过Kerberos的认证

    kadmin.local
    

    给数据库管理员添加ACL权限,修改kadm5.acl文件,*代表全部权限

    # cat /var/kerberos/krb5kdc/kadm5.acl
    */admin@EXAMPLE.COM *
    */admin@HADOOP.COM     *
    

    启动服务

    service krb5kdc start
    service kadmin start
    #查看状态
    service krb5kdc status
    service kadmin status
    #设置开机自动启动:
    chkconfig krb5kdc on
    chkconfig kadmin on
    

    补充:在每个客户端的系统参数/etc/profile中,加上下面参数,确保每次su - user都能使用同一个tgt,而不是创建一个新的,而找不到,最终导致su的用户kinit失败.
    调整如下

    # workaround for kerberos loging
    export KRB5CCNAME=FILE:/tmp/krb5cc_`id -u`
    

    创建principal

    kadmin.local -q "addprinc -pw <password> <username>"

    addprinc -randkey yarn/node007221@HADOOP.COM
    

    针对hadoop用户,增加主机名,一同创建principal,增加安全性。

    注意:hadoop只能通过小写的主机名进行注册。如果主机名有大写字母,手动改成小写。后续kinit的时候,也是使用小写的。hadoop会自动将大写的主机名变成小写。

    创建keytab

    kadmin.local -q "ktadd -norandkey -k /root/keytab/<username>.keytab <username>"

    mkdir -p /tmp/keytab
    kadmin.local -q "ktadd -norandkey -k /tmp/keytab/mfw_hadoop.keytab yarn/node007233"
    

    认证用户

    kinit -kt /root/keytab/hdfs.keytab <username>

    针对hadoop用户,增加主机名,一同创建principal,增加安全性。

    kinit -kt /root/keytab/hdfs.keytab hdfs/hostname

    kinit -kt /tmp/mfw_hadoop.keytab mfw_hadoop/node007232@HADOOP.COM
    

    查询当前用户的kinit情况

    klist
    
    Ticket cache: KEYRING:persistent:0:krb_ccache_SHebLX7
    Default principal: mfw_hadoop/node007233@HADOOP.COM
    
    Valid starting       Expires              Service principal
    07/05/2021 15:42:20  07/06/2021 15:42:20  krbtgt/HADOOP.COM@HADOOP.COM
    

    查询keytab文件内容

    klist -kt /etc/security/keytab/hdfs.keytab 
    

    查询KDC,用户列表

    kadmin.local -q "listprincs"
    

    删除用户

    kadmin.local -q "delprinc -force HTTP/hdfs3.liang.com@LIANG.COM"
    

    修改密码

    kpasswd 用户名
    

    删除当前的认证的缓存

    kdestroy
    

    配置 Kerberos Clients

    安装kerberos客户端

    sudo yum install krb5-workstation krb5-libs krb5-auth-dialog
    

    配置krb5.conf(同步)

    配置这些主机上的/etc/krb5.conf,这个文件的内容与KDC中的文件保持一致即可

    https://blog.csdn.net/lovebomei/article/details/79807484
    https://blog.51cto.com/hsbxxl/2091272
    https://blog.csdn.net/weixin_40861707/article/details/81979474
    http://www.cppcns.com/os/linux/166490.html

    相关文章

      网友评论

          本文标题:kerberos安装

          本文链接:https://www.haomeiwen.com/subject/knhiultx.html