Kerberos认证原理与使用教程

这篇具有很好参考价值的文章主要介绍了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 如下图:
    • Kerberos认证原理与使用教程
      Hadoop的认证使用的是Kerberos协议。
      keytab:Kerberos 中的用户认证,可通过密码或者密钥文件证明身份,keytab 指密钥文件。
  • kerberos认证两种方式:
    Kerberos认证原理与使用教程

四、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.keytab

Keytab name: FILE:xxx.keytab
KVNO 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_1234
Default principal:someuser@UCAR.EDU
Valid starting Expires Service principal
12/07/15 13:00:05 12/08/15 13:00:01 krbtgt/UCAR.EDU@UCAR.EDU
renew until 12/12/15 15:48:44
1234567

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://www.toymoban.com/news/detail-493307.html

到了这里,关于Kerberos认证原理与使用教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flink支持kerberos认证

    在配置flink任务时,不能通过对单个任务进行kerberos验证,只能在flink-conf文件中进行认证,这样遇到的麻烦就是,每次启动不同任务的时候,都需要进行依赖不同的conf文件 通过在flink github项目中查看,发现有pr提交了代码,可以在flink任务启动之初进行,conf文件加载 通过修改

    2024年02月16日
    浏览(27)
  • Kerberos安全认证-连载12-Kafka Kerberos安全配置及访问

    目录 1. Kafka配置Kerberos 2. 客户端操作Kafka ​​​​​​​3. Java API操作Kafka 4. StructuredStreaming操作Kafka 5. Flink 操作Kafka 技术连载系列,前面内容请参考前面连载11内容:​​​​​​​​​​​​​​Kerberos安全认证-连载11-HBase Kerberos安全配置及访问_IT贫道的博客-CSDN博客 Kafk

    2024年02月12日
    浏览(41)
  • Kerberos安全认证-连载11-HBase Kerberos安全配置及访问

    目录 1. Zookeeper Kerberos配置 2. HBase配置Kerberos 3. HBase启动及访问验证 4. HBase Shell操作HBase ​​​​​​​5. Java API操作HBase 技术连载系列,前面内容请参考前面连载10内容:​​​​​​​​​​​​​​Kerberos安全认证-连载10-Hive Kerberos 安全配置及访问_IT贫道的博客-CSDN博客

    2024年02月07日
    浏览(42)
  • Kerberos安全认证-连载10-Hive Kerberos 安全配置及访问

    目录 1.Hive 配置 Kerberos 2. Hive Cli使用Kerberos ​​​​​​​3. Hive beeline使用Kerberos ​​​​​​​​​​​​​​4. JDBC访问Kerberos认证Hive ​​​​​​​5. Spark访问Kerberos认证Hive ​​​​​​​​​​​​​​6. Flink访问Kerberos认证Hive 技术连载系列,前面内容请参考前面

    2024年02月13日
    浏览(36)
  • Kerberos安全认证-连载11-HBase Kerberos安全配置及访问_kerberos hbase(1)

    这里需要将该值设置为false,否则Hadoop HA 不能正常启动。 skipACL=yes 跳过Zookeeper 访问控制列表(ACL)验证,允许连接zookeper后进行读取和写入。这里建议跳过,否则配置HBase 启动后不能向Zookeeper中写入数据。 这里在node3节点进行zoo.cfg文件的配置,配置完成后,将zoo.cfg文件分发

    2024年04月13日
    浏览(43)
  • 【网络安全】图解 Kerberos:身份认证

    Kerberos 是一种身份认证协议,被广泛运用在大数据生态中,甚至可以说是大数据身份认证的事实标准。本文将详细说明 Kerberos 原理。 Kerberos 一词来源于古希腊神话中的 Cerberus —— 守护地狱之门的三头犬。下图是 Kerberos 的 LOGO。 一句话来说,Kerberos 是一种基于加密 Ticket 的身

    2024年02月06日
    浏览(41)
  • 用户认证——Kerberos集成Hadoop的配置

    为Hadoop开启Kerberos,需为不同服务准备不同的用户,启动服务时需要使用相应的用户。须在 所有节点 创建以下用户和用户组。 创建hadoop组 [root@hadoop102 ~]# groupadd hadoop  hadoop103和hadoop104做同样的操作。 创建各用户并设置密码 [root@hadoop102 ~]# useradd hdfs -g hadoop [root@hadoop102 ~]# ec

    2023年04月15日
    浏览(34)
  • elasticsearch添加kerberos认证完整操作流程

    kerberos认证的教程网上有很多,但是es的真的找遍全网都很少有详细的教程!我苦读官网,到处搜罗零碎信息,才终于完成es的kerberos认证。 在我跟着官网步骤勤勤恳恳操作却还是不行的时候,才突然发现基础版并不支持kerberos认证。所以我们需要升级白金版,而白金版是付费

    2024年01月17日
    浏览(39)
  • jdbc通过kerberos认证连接hive

    根据实际情况添加依赖,主要看服务器hive版本 配置文件krb5.conf,认证文件krb5.keytab,一般由服务器生成后获取 放到resources目录下     指定krb5配置文件:krb5.conf,根据实际情况替换 认证文件:krb5.keytab,根据实际情况替换 认证用户:hive,根据实际情况修改 这里是通过将配置文

    2024年02月10日
    浏览(46)
  • dbever连接kerberos认证的hive

    下载地址:https://web.mit.edu/kerberos/dist/index.html 安装:下一步或者自定义安装即可 安装后会自动生成配置文件:C:ProgramDataMITKerberos5krb5.ini 向管理员要krb5.conf配置文件,将krb5.conf配置文件的内容覆盖到C:ProgramDataMITKerberos5krb5.ini里 创建路径:C:temp 配置环境变量: ps:C:te

    2023年04月12日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包