我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Kerberos认证原理与使用教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Kerberos认证原理与使用教程

Kerberos认证原理与使用教程

一、Kerberos 概述

二、什么是 Kerberos

Kerberos 是一种计算机网络认证协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。 kerberos一词来源于希腊神话的地狱守护神,三头犬。

三、Kerberos 术语

  • Kerberos 中有以下一些概念需要了解:
    1)KDC(Key Distribute Center):密钥分发中心,负责存储用户信息,管理发放票据。
    2)Realm:Kerberos 所管理的一个领域或范围,称之为一个 Realm。
    3)Principal:**Kerberos 所管理的一个用户或者一个服务,可以理解为 Kerberos 中保存的一个账号,**其格式通常如下:primary/instance@realm
    4)keytab:Kerberos 中的用户认证,可通过密码或者密钥文件证明身份,keytab 指密钥文件。

对以上的专业术语进行解释:

  • 首先,所谓认证也就是用户的登录需要用户名和密码,这也是最基本的认证方式;那么KDC负责存储用户信息,也就是KDC内置的Database会存储用户的用户名和密码;那么kdc发放的票据是什么票据呢?这个票据是指某个用户访问服务时所需要的票据,相当于门票。

  • Realme域又指的是什么呢?他指代的是Kerberos 所管理的一个领域或范围,所谓的领域也就是一系列的服务和用户。

  • Principal是指Kerberos 所管理的一个用户或者一个服务,可以理解为 Kerberos 中保存的一个账号。

    • 一个用户要想通过kerberos认证得需要一个账号和密码,同样的一个服务要想通过kerberos 认证也需要账号和密码;
    • 格式 primary/instance@realm 三个部分,用户名or服务名 / 实例(服务主机名)@域名;例如:root/admin@EXAMPLE.COM 如下图:
    • 在这里插入图片描述
      Hadoop的认证使用的是Kerberos协议。
      keytab:Kerberos 中的用户认证,可通过密码或者密钥文件证明身份,keytab 指密钥文件。
  • kerberos认证两种方式:
    在这里插入图片描述

四、Kerberos 认证原理

在这里插入图片描述

  1. AS: Authentication Server认证服务器,首先用户进行身份认证,kinit命令进行认证,然后输入密码;此时认证服务器会根据用户输入的账号和密码到数据库Database中查询,看是否正确,如果正确颁发临时的票据,这个票据就是TGT,它是Ticket Granting Ticket的缩写,这个票据名称为:申请票据的票据。

  2. 用户拿到这个用来申请服务票据的票据后,然后携带该票据TGT去访问票据授权服务器,然后票据授权服务器TGS去数据库中查询服务是否为合法的服务;

    查询到相关服务名和秘钥后,颁发票证给用户。

  3. 用户拿到这个TG票证后然后才能访问我们的服务,比如上图拿到票证访问hdfs服务。这就是kerberos的基本认证原理。

五、kerberos的使用

kerberos的命令缩写

  • add_principal,addprinc,ank
  • delete_principal,delprinc
  • ktadd,xst
  • change_password,cpw

查看kerberos服务

  • 启动 KDC服务:

    • systemctl status krb5kdc
  • 若未启动 执行启动命令:

    • systemctl start krb5kdc
  • 启动 Kadmin,该服务为 KDC 数据库访问入口:

    • systemctl start kadmin
  • 查看kadmin服务状态

    • systemctl status kadmin

登录kadmin

kerberos的安装,主要有kdc服务和一到多个client客户端。使用kadmin.local命令登录客户端。
非kadmin节点使用admin权限的prin认证后,输入kadmin后输入密码。

添加principal服务主体

  • 生成随机key的principal,这种principal只能用来生成keytab使用
    例如:
addprinc -randkey root/master1@EXAMPLE.COM
  • 第二种方式 ktadd -k 存放keytab的路径 服务主体名
  • 例如:
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认证。

  • 为principal生成keytab,可同时添加多个
ktadd -norandkey -k /keytab/root.keytab root/master1@EXAMPLE.COM host/master1@EXAMPLE.COM
  • klist -ket xxx.keytab  查看参数keytab里面包含的的认证信息
  • klist -e = klist 查看当前用户认证信息
# 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
  • 查看principal命令
    • listprincs
    • 或者是list_principals
  • 修改admin/admin的密码
    • change_password -pw xxxx admin/admin或者使用cpw命令
  • 删除principal
    • delete_principal admin/admin
  • 认证某个服务主体命令
    • 例如:kinit -kt /opt/keytabs/hive.keytab hive

注意事项

  • 使用密码创建一个principal后,如果用ktadd生成随机密码的keytab(默认),会用一个很长的随机密码覆盖原来手动设置的密码,那么原来的密码就不能用了。如果使用 -norandkey,可以密码和keytab同时使用。

kerberos的2个生命周期

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Kerberos认证原理与使用教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Kerberos认证原理与使用教程

Kerberos认证原理与使用教程 一、Kerberos 概述 二、什么是 Kerberos ​ Kerberos 是一种计算机网络认证协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套
2023-08-21

Kotlin协程概念原理与使用万字梳理

协程的作用是什么?协程是一种轻量级的线程,解决异步编程的复杂性,异步的代码使用协程可以用顺序进行表达,文中通过示例代码介绍详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2022-11-13

内网穿透工具frp原理和使用教程

内网穿透(Port Forwarding)是将公网上的IP地址映射到内部网络中的一台计算机的某个端口上,以便外部网络可以访问该计算机中运行的应用程序。内网穿透技术可以通过一些开源工具来实现,其中比较常用的是frp。在本文中,我们将介绍frp
2023-08-19

react-router-dom入门使用教程(前端路由原理)

这篇文章主要介绍了react-router-dom入门使用教程,主要包括react路由相关理解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-11-13

DBeaver安装与使用教程(超详细安装与使用教程),好用免费的数据库管理工具

       🏆好的学习、工作从选对一个对于自己好用的软件开始。 点击目录跳转至相应目录的内容,更方便观看 🏆目录 🏆一、DBeaver介绍1.它支持任何具有一个JDBC驱动程序数据
2023-08-17

阿里云ECS管理教程全面掌握阿里云ECS的使用与管理

阿里云ECS(ElasticComputeService)是阿里云提供的一项计算服务,用户可以通过购买ECS实例来使用阿里云的计算资源。本文将详细介绍如何进行阿里云ECS的管理,包括如何创建ECS实例、如何管理ECS实例、如何进行安全设置、如何查看ECS实例运行状态等内容。一、如何创建ECS实例登录阿里云控制台,
阿里云ECS管理教程全面掌握阿里云ECS的使用与管理
2023-12-11

DDL数据库与表的创建和管理深入讲解使用教程

目录一、基本概念二、创建和管理数据库1、创建数据库2、管理数据库3、修改数据库4、删除数据库三、创建和管理表1、创建表2、修改表3、重命名表4、删除表5、清空表四、DCL中的COMMIT和ROLLBACK1、commit2、rollback
2023-04-19

编程热搜

目录