• Kerberos安装教程及使用详解


    Kerberos协议:

    Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On)。由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性。

    环境信息:

    信息 版本
    操作系统 centos6.9
    服务器类型 虚拟机
    CDH 5.13
    节点数量 5

    节点信息:

    ip 主机名 角色
    10.12.24.209 dx-dev-test1029 client
    10.12.25.208 dx-dev-test1026 client
    10.12.25.209 dx-dev-test1030 client
    10.12.26.208 dx-dev-test1027 client
    10.12.27.208 dx-dev-test1028 server

    安装kerberos

    使用yum安装kerberos

    server服务端安装:

    yum install krb5-server 
    

    client客户端安装

    注:server节点也需要安装

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

    服务端节点配置

    1. 修改/etc/krb5.conf

    /etc/krb5.conf: 包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。
    注意修改:红色的标记
    在这里插入图片描述

    文件内容如下:

    [libdefaults]
    default_realm = RONG360.COM
    dns_lookup_kdc = false
    dns_lookup_realm = false
    ticket_lifetime = 86400
    renew_lifetime = 604800
    forwardable = true
    default_tgs_enctypes = aes128-cts aes256-cts-hmac-sha1-96 des3-hmac-sha1 arcfour-hmac
    default_tkt_enctypes = aes128-cts aes256-cts-hmac-sha1-96 des3-hmac-sha1 arcfour-hmac
    permitted_enctypes = aes128-cts aes256-cts-hmac-sha1-96 des3-hmac-sha1 arcfour-hmac
    udp_preference_limit = 1
    kdc_timeout = 60000
    [realms]
    RONG360.COM = {
    kdc = dx-dev-test1028
    admin_server = dx-dev-test1028
    }
    [domain_realm]
    ~              
    

    说明:
    [logging]:表示server端的日志的打印位置
    [libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
    default_realm = HADOOP.COM 默认的realm,必须跟要配置的realm的名称一致。
    udp_preference_limit = 1 禁止使用udp可以防止一个Hadoop中的错误
    oticket_lifetime表明凭证生效的时限,一般为24小时。
    orenew_lifetime表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,
    对安全认证的服务的后续访问则会失败。
    [realms]:列举使用的realm。
    kdc:代表要kdc的位置。格式是 机器:端口
    admin_server:代表admin的位置。格式是机器:端口
    default_domain:代表默认的域名
    [appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。
    udp_preference_limit = 1 kdc原生支持tcp/udp协议,客户端访问kdc服务时,默认先使用udp协议发起请求,如果数据包过大或者请求失败,然后再换用tcp协议请求。网络条件不好,如果使用udp容易出现丢包现象。

    2. 修改/var/kerberos/krb5kdc/kdc.conf

    默认放在 /var/kerberos/krb5kdc/kdc.conf。或者通过覆盖KRB5_KDC_PROFILE环境变量修改配置文件位置。
    文件内容如下:
    在这里插入图片描述
    文件内容如下:

    [kdcdefaults]
     kdc_ports = 88
     kdc_tcp_ports = 88
    
    [realms]
     RONG360.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 = 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
    }
    

    说明:

    RONG360.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去掉。

    3. 修改/var/kerberos/krb5kdc/kadm5.acl

    编辑 Kerberos 访问控制列表文件 (kadm5.acl) 文件应包含允许管理 KDC 的所有主体名称。
    在这里插入图片描述
    文件内容如下:

    */admin@RONG360.COM     *
    

    注:将上面修改的文件,进行全节点分发。

    创建/初始化Kerberos database

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

    创建命令:

    kdb5_util create -s -r RONG360.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
    

    重启服务

    重启服务

    service krb5kdc start 或 systemctl start  krb5kdc
    service kadmin start 或 systemctl start  kadmin
    

    设置开机启动

    设置开机自动启动:

    chkconfig krb5kdc on 或 systemctl enable krb5kdc
    chkconfig kadmin on 或 systemctl enable kadmin
    

    现在KDC已经在工作了。这两个daemons将会在后台运行,可以查看它们的日志文件(/var/log/krb5kdc.log 和 /var/log/kadmind.log)。

    可以通过命令kinit来检查这两个daemons是否正常工作。

    添加database administrator

    我们需要为Kerberos database添加administrative principals (即能够管理database的principals) —— 至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。

    在maste KDC上执行:

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

    通过上面的命令为其设置密码

    kadmin.local
    

    可以直接运行在master KDC上,而不需要首先通过Kerberos的认证,实际上它只需要对本地文件的读写权限。

    客户端阶段配置

    将之前修改的/etc/krb5.conf 拷贝到从节点

    kerberos日常操作

    管理员操作

    登陆

    登录到管理员账户: 如果在本机上,可以通过kadmin.local直接登录。其它机器的,先使用kinit进行验证。
    在这里插入图片描述
    在这里插入图片描述

    增删改查账户

    在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。

    kadmin.local -q "addprinc -pw 111111 test"
    kadmin.local: delprinc test
    kadmin.local: listprincs
    

    生成keytab:使用xst命令或者ktadd命令

    ktadd -k /home/test/test.keytab -norandkey test
    

    用户操作

    查看当前的认证用户

    在这里插入图片描述

    认证用户

    kinit -kt /xx/xx/kerberos.keytab hdfs/hadoop1
    

    删除当前的认证的缓存

    kdestroy
    

    常见问题

    查看ticket是否是renewable

    通过klist命令来查看

    在这里插入图片描述

    如果Valid starting的值与renew until的值相同,则表示该principal的ticket 不是 renwable。

    ticket无法更新

    如果过了Expires,可以通过命令kinit –R来更新ticket
    但如果ticket无法更新

    [root@vmw201 ~]$ kinit -R
    kinit: Ticket expired while renewing credentials
    

    这是因为krbtgt/HADOOP.COM@ HADOOP.COM的[renewlife]被设置成了0,这一点可以通过[kadmin.local => getprinc krbtgt/ HADOOP.COM @ HADOOP.COM]看出来。

    将krbtgt/HADOOP.COM@HADOOP.COM的[renewlife]修改为7days即可。

    kadmin.local: modprinc -maxrenewlife 1week krbtgt/HADOOP.COM@HADOOP.COM
    

    目前总结到这!
    参考文章:http://www.cppcns.com/os/linux/166490.html

  • 相关阅读:
    软件定义网络笔记(PART 1)
    软件架构-可视化
    nginx反向代理配置去除前缀
    年轻就该多尝试,教你20小时Get一项新技能
    LNMP架构部署(附:部署Discuz社区论坛Web应用)
    高级开发进阶:第一章:总篇
    pip和conda添加和删除镜像源
    Micro-PaaS(Docker+K8S)
    云平台概述
    1、Docker学习笔记
  • 原文地址:https://www.cnblogs.com/erlou96/p/14578789.html
Copyright © 2020-2023  润新知