Kerberos认证原理与使用教程 一、Kerberos 概述 二、什么是 Kerberos Kerberos 是一种计算机网络认证协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套
Kerberos 是一种计算机网络认证协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。 kerberos一词来源于希腊神话的地狱守护神,三头犬。
对以上的专业术语进行解释:
首先,所谓认证也就是用户的登录需要用户名和密码,这也是最基本的认证方式;那么KDC负责存储用户信息,也就是KDC内置的Database会存储用户的用户名和密码;那么kdc发放的票据是什么票据呢?这个票据是指某个用户访问服务时所需要的票据,相当于门票。
Realme域又指的是什么呢?他指代的是Kerberos 所管理的一个领域或范围,所谓的领域也就是一系列的服务和用户。
Principal是指Kerberos 所管理的一个用户或者一个服务,可以理解为 Kerberos 中保存的一个账号。
kerberos认证两种方式:
AS: Authentication Server认证服务器,首先用户进行身份认证,kinit命令进行认证,然后输入密码;此时认证服务器会根据用户输入的账号和密码到数据库Database中查询,看是否正确,如果正确颁发临时的票据,这个票据就是TGT,它是Ticket Granting Ticket的缩写,这个票据名称为:申请票据的票据。
用户拿到这个用来申请服务票据的票据后,然后携带该票据TGT去访问票据授权服务器,然后票据授权服务器TGS去数据库中查询服务是否为合法的服务;
查询到相关服务名和秘钥后,颁发票证给用户。
用户拿到这个TG票证后然后才能访问我们的服务,比如上图拿到票证访问hdfs服务。这就是kerberos的基本认证原理。
启动 KDC服务:
若未启动 执行启动命令:
启动 Kadmin,该服务为 KDC 数据库访问入口:
查看kadmin服务状态
kerberos的安装,主要有kdc服务和一到多个client客户端。使用kadmin.local命令登录客户端。
非kadmin节点使用admin权限的prin认证后,输入kadmin后输入密码。
addprinc -randkey root/master1@EXAMPLE.COM
ktadd -norandkey -k /opt/keytab/Hive.keytab hive
例如:
ktadd -norandkey -k /keytab/root.keytab root/master1@EXAMPLE.COM host/master1@EXAMPLE.COM
这种方式生成keytab时,缺省会生成长串随机密码来覆盖原来的密码。覆盖后,就不能用原来密码登录了,只能用keytab,如果想要继续使用密码登录,需要使用norandkey参数来避免生成长串随机密码。
-norandkey表示不用很长的随机密码,使用自己设置的密码,意味着可以同时用密码和keytab认证。
ktadd -norandkey -k /keytab/root.keytab root/master1@EXAMPLE.COM host/master1@EXAMPLE.COM
# klist -ket xxx.keytabKeytab name: FILE:xxx.keytabKVNO Timestamp Principal---- ------------------- ------------------------------------------------------ 7 2018-07-30T10:19:16 HBase-flink@demo.com (des-cbc-md5) 7 2018-07-30T10:19:16 hbase-flink@demo.com (aes128-cts-hMac-sha1-96) 7 2018-07-30T10:19:16 hbase-flink@demo.com (aes256-cts-hmac-sha1-96) 7 2018-07-30T10:19:16 hbase-flink@demo.com (des3-cbc-sha1) 7 2018-07-30T10:19:16 hbase-flink@demo.com (arcfour-hmac)12345678910
Kerberos ticket 有两种生命周期,ticket timelife (票据生命周期) 和 renewable lifetime (可再生周期)。
当 ticket lifetime 结束时,该 ticket 将不再可用。
如果 renewable lifetime > ticket lifetime ,那么在票据生命周期内可以续期,直到达到可再生周期。
当时间达到 renewable lifetime 后,ticket lifetime结束后将不能继续续期,续期时将会报错 KDC can’t fulfill requested option while renewing credentials,之后需要重新kinit申请新的ticket
与使用较长的生命周期的票据相比,可再生票据的优点是KDC可以拒绝续期请求(例如,如果发现帐户被破坏,并且可再生票据可能在攻击者手中)。???
例如:
ticket_lifetime = 1d
renew_lifetime = 7d
在登陆后的24h内可以对ticket进行续期,直到第一次登陆的7天后将不再允许续期。
在24h内如果没有续期,将无法续期。
对 ticket 进行一次续期后,ticket_lifetime 将恢复到24h。==》
第一次kinit后,从kinit时间到tl期间内可以renew,renew后,start time刷新。直接第一次的st到rl后,不能再刷新
实际场景中,开发告诉运维3天开发完,但3天大概率开发不完,这时候就可以续期,而不用重新输密码或用keytab。
kerberos可以用kinit得到一个ticket(又叫tgt), 在这个ticket生效期间不用输入密码, ticket可以不停续期, 有一个expire日期,下面的例子是12月07到12月08的一天时间, 但是生效期内可以通过 kinit -R 来续期这个ticket, 但是还有个renew until, 表示最长可以续期多久, 下面例子表示15年12/12号以后, kinit -R 就不能续期了.
kinit -R会把当前认证的prin的Valid starting时间刷新为当前,Expires时间自然也就顺延。但renew until时间仍然是第一次认证时确定的时间。
这个ticket和keytab无关, keytab是一个密码文件, 加密了你的密码而已.
Execute a klist command to verify the values that the system actually granted you.Ticket cache: FILE:/tmp/krb5cc_1234Default principal:someuser@UCAR.EDUValid starting Expires Service principal12/07/15 13:00:05 12/08/15 13:00:01 krbtgt/UCAR.EDU@UCAR.EDUrenew until 12/12/15 15:48:441234567
The ticket will expire like an ordinary ticket in 24 hours, but you
can renew multiple times before its expiration, until the final
expiration date (Dec 12 in the example above). You must do the kinit
command interactively because you will have to provide your Kerberos
passphrase; this cannot be put into a cron job or other unattended
situation.
来源地址:https://blog.csdn.net/m0_46168848/article/details/129152120
--结束END--
本文标题: Kerberos认证原理与使用教程
本文链接: https://www.lsjlt.com/news/376947.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-23
2024-05-22
2024-05-21
2024-05-21
2024-05-21
2024-05-21
2024-05-13
2024-05-13
2024-05-11
2024-05-11
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0