暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hadoop2.x安全:hadoop集群之kerberos认证(三、常用命令、有效期)

大数据开发运维架构 2020-02-27
1164

概述:

       开启了Kerberos认证集群之后,集群不再像以前一样随意操作,需要证书进行登录,这里就讲一下我们日常用的的一些kerberos相关的一些操作,包括票据的创建、删除、有效期更改等。

常用操作:

1.登录控制台,如果直接kdc本地登录的话输入kadmin.local即可:

    [root@master98 conf]# kadmin.local

        如果在其他安装了kerberos客户端的机器登录已管理员登录输入密码,执行以下命令:

      [root@salver158 ~]# kadmin
      Authenticating as principal admin/admin@CHINAUNICOM with password.
      Password for admin/admin@CHINAUNICOM:   //这里输入管理员票据密码

      2.查看所有票据,控制台输入list_principals

        kadmin.local: list_principals

        3.删除票据,控制台输入:

          kadmin.local:  delete_principal zookeeper/salver32.hadoop.unicom@CHINAUNICOM 

          4.新建票据,控制台输入:

              要通过Kerberos的认证需要提供principal及其对应的密码。密码可以手动输入,也可以存放在一个keytab文件中。“Keytab”是“key table”的简写,它用于存放一个或多个principal的密码。进行Kerberos认证时,一个用户可以提供principal和密码,或者principal和keytab文件。如果使用principal和keytab文件认证,那么Kerberos会去keytab文件中读取principal密码。

              1).生成指定key的principal,输入密码生成,中间根据提示输入两次密码即可:

            kadmin:  addprinc  zookeeper/salver32.hadoop.unicom@CHINAUNICOM
            WARNING: no policy specified for zookeeper/salver32.hadoop.unicom@CHINAUNICOM; defaulting to no policy
            Enter password for principal "zookeeper/salver32.hadoop.unicom@CHINAUNICOM":
            Re-enter password for principal "zookeeper/salver32.hadoop.unicom@CHINAUNICOM":
            Principal "zookeeper/salver32.hadoop.unicom@CHINAUNICOM" created.

                

                2).生成随机key的principal,创建票据并同时将生成的test.keytab文件放到/etc/security/keytabs文件夹下,两条命令控制台输入:

              kadmin.local:  addprinc -randkey  zookeeper/salver158.hadoop.unicom@CHINAUNICOM  //生成票据
                kadmin.local:   xst -norandkey -k /etc/security/keytabs/zk.service.keytab zookeeper/salver158.hadoop.unicom@CHINAUNICOM  //生成票据对应的keytab文件

                    

                5.缓存票据(非控制台命令)

                    上面4)中票据“zookeeper/salver32.hadoop.unicom@CHINAUNICOM”是给salver32机器生成的,直接拷贝到32机器的/etc/security/keytabs目录下即可,可验证下票据是否可使用,分两步:

                1).查看票据信息

                   [root@salver32 keytabs]# klist -kt zk.service.keytab   //这里是查看票据信息,一个keytab文件可保存多个票据信息,一般我们只保存一个

                  2).根据1)中的票据信息,在salver32节点缓存票据,klist列出了凭证高速缓存中保存的Kerberos主体和Kerberos票证,或密钥表文件中保存的密钥

                    [root@salver32 keytabs]# kinit -kt zk.service.keytab  zookeeper/salver32.hadoop.unicom@CHINAUNICOM

                    这里截个图:

                    说明一下缓存的票据是zookeeper/salver32.hadoop.unicom@CHINAUNICOM, 以后你对集群的所有操作用户就是zookeeper。

                    6.清除缓存票据(非控制台命令),kdestroy使用程序通过覆盖和删除包含它们的凭据缓存来破坏用户的活动Kerberos授权票证。如果未指定凭据缓存,则会破坏默认凭据缓存。

                      [root@salver32 keytabs]# kdestroy

                      7.修改票据密码(控制台命令),根据提示输入密码即即可:

                        kadmin.local:  cpw -pw unicom123 admin/admin
                        Password for "admin/admin@CHINAUNICOM" changed.

                        另外一种修改密码方式(非控制台命令),修改当前本地已缓存票据密码:

                          [root@salver32 keytabs]# kpasswd
                          Password for zookeeper/salver32.hadoop.unicom@CHINAUNICOM:
                          Enter new password: 

                              修改密码后的票据,必须要重新生成keytab文件,不然票据无法通过kinit缓存,只需要重新建keytab文件就可以了

                            kadmin.local:   xst -norandkey -k /etc/security/keytabs/zk.service.keytab zookeeper/salver32.hadoop.unicom@CHINAUNICOM  //生成票据对应的keytab文件

                            8.获取票据信息(控制台输入),查看详细信息

                                getprinc  zookeeper/salver32.hadoop.unicom@CHINAUNICOM

                              kadmin.local:  getprinc  zookeeper/salver32.hadoop.unicom@CHINAUNICOM
                              Principal: zookeeper/salver32.hadoop.unicom@CHINAUNICOM
                              Expiration date: [never]
                              Last password change: Wed Feb 26 21:13:25 CST 2020
                              Password expiration date: [none]
                              Maximum ticket life: 3650 days 00:00:00
                              Maximum renewable life: 3650 days 00:00:00
                              Last modified: Wed Feb 26 21:13:25 CST 2020 (admin/admin@CHINAUNICOM)
                              Last successful authentication: [never]
                              Last failed authentication: [never]
                              Failed password attempts: 0
                              Number of keys: 7
                              Key: vno 2, aes128-cts-hmac-sha1-96
                              Key: vno 2, des3-cbc-sha1
                              Key: vno 2, arcfour-hmac
                              Key: vno 2, camellia256-cts-cmac
                              Key: vno 2, camellia128-cts-cmac
                              Key: vno 2, des-hmac-sha1
                              Key: vno 2, des-cbc-md5
                              MKey: vno 1
                              Attributes:
                              Policy: [none]

                              9.修改票据有效期(控制台输入):

                                kadmin.local:  modprinc -maxlife 360days -maxrenewlife 360days +allow_renewable zookeeper/salver32.hadoop.unicom
                                Principal "zookeeper/salver32.hadoop.unicom@CHINAUNICOM" modified.

                                这里再获取一下,有效期已经更改:

                                2.票据有效期

                                票据的两个属性:ticket_lifetime 和 renew_lifetime。

                                    其中 ticket_lifetime 票据生效的时限,默认为24小时。在票据失效前部分凭证可以延期失效时间(即renewable), renew_lifetime 表明票据最长可以被延期的时限,默认7天。当票据过期之后,对安全认证的服务的后续访问则会失败。

                                1).当 ticket lifetime 结束时,该 ticket 将不再可用。

                                2).如果 renewable lifetime > ticket lifetime ,那么在票据生命周期内都可以其进行续期,直到达到可再生周期的上限。

                                3).当时间达到 renewable lifetime 后,ticket lifetime结束后将不能继续续期,续期时将会报错 KDC can't fulfill requested option while renewing credentials,之后需要重新申请新的 ticket。

                                4).可再生周期和 keytabs 无关,如果你没有修改 key 和 principal 的关系,keytabs 将不用关心。

                                    

                                举个列子:

                                        ticket_lifetime = 1d

                                        renew_lifetime = 7d

                                    a.在登陆后的24h内可以对ticket进行续期,直到第一次登陆的7天后将不再允许续期。

                                    b.在24h内如果没有续期,将无法续期。

                                    c.对 ticket 进行一次续期后,ticket_lifetime 将恢复到24h。

                                关于票据有效期的几点说明:

                                    1).klist中expires以及renew until是由client端的/etc/krb5.conf配置文件中的参数决定(前提是是没有超过Maximum ticket life)。

                                   2).server端kdc.conf的配置起到限制client的作用。在client的设置超过Maximum ticket life的设置时,按Maximum ticket life取值,一般我们server、client端时间设置一致

                                    3).kdc.conf配置的更改对新建的principal会立即生效,旧的不会生效,如果需要对旧的principal生效,需要modprinc命令手动修改,具体命令请参照上面的:9.修改票据有效期

                                    4).超过renew_lifetime时间之后,不能kinit -R,kinit -R不会改变票据缓存的renew until时间,如果想要改变票据缓存的renew until时间可以使用   kinit -r xx来renew tgt,最大时间由max_renewable_life限制。

                                 5).renew_lifetime的优先级高于max_renewable_life,不管renew_lifetime大于等于还是小于等于max_renewable_life,都是取renew_lifetime的值。

                                文章转载自大数据开发运维架构,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                评论