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

微信公众号:大数据开发运维架构

关注可了解更多大数据相关的资讯。问题或建议,请公众号留言;

如果您觉得“大数据开发运维架构”对你有帮助,欢迎转发朋友圈

从微信公众号拷贝过来,格式有些错乱,建议直接去公众号阅读


概述:

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

常用操作:

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

[root@master98 conf]# kadmin.local

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

[root@salver158~]# kadminAuthenticatingasprincipal admin/[email protected]/admin@CHINAUNICOM://这里输入管理员票据密码

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

kadmin.local: list_principals

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

kadmin.local:delete_principalzookeeper/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@CHINAUNICOMWARNING:nopolicy specifiedforzookeeper/salver32.hadoop.unicom@CHINAUNICOM; defaulting tonopolicyEnter passwordforprincipal"zookeeper/salver32.hadoop.unicom@CHINAUNICOM":Re-enter passwordforprincipal"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-ktzk.service.keytab//这里是查看票据信息,一个keytab文件可保存多个票据信息,一般我们只保存一个

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

[root@salver32keytabs]# 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/adminPassword for"admin/admin@CHINAUNICOM"changed.

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

[root@salver32 keytabs]# kpasswdPasswordforzookeeper/salver32.hadoop.unicom@CHINAUNICOM:Enternewpassword:

修改密码后的票据,必须要重新生成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@CHINAUNICOMPrincipal: zookeeper/salver32.hadoop.unicom@CHINAUNICOMExpiration date: [never]Last passwordchange: Wed Feb2621:13:25CST2020Passwordexpirationdate: [none]Maximum ticket life:3650days00:00:00Maximum renewable life:3650days00:00:00Lastmodified: Wed Feb2621:13:25CST2020(admin/admin@CHINAUNICOM)Lastsuccessfulauthentication: [never]Lastfailedauthentication: [never]Failedpasswordattempts:0Numberofkeys:7Key: vno2, aes128-cts-hmac-sha1-96Key: vno2, des3-cbc-sha1Key: vno2, arcfour-hmacKey: vno2, camellia256-cts-cmacKey: vno2, camellia128-cts-cmacKey: vno2, des-hmac-sha1Key: vno2, des-cbc-md5MKey: vno1Attributes:Policy: [none]

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

kadmin.local:  modprinc -maxlife360days -maxrenewlife360days +allow_renewable zookeeper/salver32.hadoop.unicomPrincipal"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的值。

你可能感兴趣的:(Hadoop2.x安全:hadoop集群之kerberos认证(三、常用命令、有效期))