Kerberos简介

Kerberos简介,第1张

简要大概地说一下Kerberos是如何工作的:

实际的过程要比刚才描述的复杂得多。用户过程也会根据具体执行有一些改变。

麻省理工研发了Kerberos协议来保护Project Athena提供的网络服务器。这个协议以希腊神话中的人物Kerberos(或者Cerberus)命名,他在希腊神话中是Hades的一条凶猛的三头保卫神犬。目前该协议存在一些版本,版本1-3都只有麻省理工内部发行。

Kerberos版本4的主要设计者Steve Miller和Clifford Neuman,在1980年末发布了这个版本。这个版本主要针对Project Athena。版本5由John Kohl和Clifford Neuman设计,在1993年作为RFC 1510颁布(在2005年由RFC 4120取代),目的在于克服版本4的局限性和安全问题。

麻省理工在版权许可的情况下,制作了一个Kerberos的免费实现工具,这种情况类似于BSD。在2007年,麻省理工组成了一个Kerberos协会,以此推动Kerberos的持续发展。

因为使用了DES加密算法(用56比特的密钥),美国出口管制当局把Kerberos归类为军需品,并禁止其出口。一个非美国设计的Kerberos版本4的实现工具KTH-KRB由瑞典皇家理工研制,它使得这套系统在美国更改密码出口管理条例(2000年)前,在美国境外就可以使用。瑞典的实现工具基于一个叫做eBones的版本,而eBones基于麻省理工对外发行的基于Kerberos版本4的补丁9的Bones(跳过了加密公式和对它们的函数调用)。这些在一定程度上决定了Kerberos为什么没有被叫做eBones版。Kerberos版本5的实现工具,Heimdal,基本上也是由发布KTH-KRB的同一组人发布。

Windows2000和后续的操作系统都默认Kerberos为其默认认证方法。RFC 3244记录整理了微软的一些对Kerberos协议软件包的添加。RFC4757"微软Windows2000Kerberos修改密码并设定密码协议"记录整理了微软用RC4密码的使用。虽然微软使用了Kerberos协议,却并没有用麻省理工的软件。

苹果的Mac OS X也使用了Kerberos的客户和服务器版本。

Red Hat Enterprise Linux4 和后续的操作系统使用了Kerberos的客户和服务器版本。

IETF Kerberos的工作小组在2005年更新了说明规范,最近的更新包括:

"加密和校验和细则"(RFC 3961)

"针对Kerberos版本5的高级加密算法(AES)加密"(RFC 3962)

Kerberos版本5说明规范的新版本"Kerberos网络认证服务(版本5)"(RFC 4120)。这个版本废弃了早先的RFC 1510,用更细化和明确的解释说明了协议的一些细节和使用方法。

GSS-API的一个新版本"Kerberos版本5 普通的安全服务应用软件交互机制:版本2"(RFC 4121)

CDH升级所使用的的应该是Kerberos的版本5

Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份验证。

这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,并且能够 相互认证 ,即客户端和服务器端均可对对方身份进行认证。

可以用于防窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。

密钥分发中心,负责管理发放票据,记录授权

Kerberos管理领域的标识。

当每添加一个用户或服务的时候需要向kdc添加一条principal,principal的形式为:主名称/实例名@领域名。

可以是用户名或服务名,可以是单词host,表示是用于提供各种网络服务(如hdfs,yarn,hive)的主体

可以理解为主机名

Kerberos的域

一、windows上使用kerberos进入访问集群( https://blog.csdn.net/hadoop_sc/article/details/84108404 )

1.步骤:

(1)在windows上安装了kerberos的客户端后,

(2)将KDC Server服务器上/ect/krb5.conf文件中的部分内容,拷贝到krb5.ini文件,然后重启kerberos客户端

(3)在Window下使用kinit测试

1)KDC Server上通过admin创建一个用户:

sudo kadmin.local

创建用户:addprinc znn@HADOOP. COM

设置密码:123456

创建成功

  2)启动Windows上的kerberos客户端,get ticket,输入新创建的用户

3)销毁获取到的Ticket

选中列表中需要销毁的Ticket,点击Destroy Ticket,客户端没有principal

4)命令行下初始化,在cmd中安装kerberos客户端的目录下,执行kinit znn@HADOOP.COM,

刷新一下客户端,就可以看到principal了,见下图

5)命令行下kdestroy

(4)使用Keytab文件登录Kerberos

1)在KDC Server创建一个keytab文件,使用上一步创建的 znn@HADOOP.C OM

sudo kadmin.local

创建keytab:xst -norandkey -k znn123.keytab znn@HADOOP.C OM

注意:创建的znn123.keytab,默认放置在/etc/security/keytabs

在生成keytab文件时需要加参数”-norandkey”否则会导致,直接使用kinit test@CLOUDERA.com初始化时会提示密码错误。

2)测试znn123.keytab文件

注意:在非root用户下需要将生成的keytab文件,权限设置到644以上,否则会初始化失败或者使用sudo权限初始化

3)将生成的test.keytab文件拷贝到Windows Server上,在CMD命令行进行初始化

(5)在火狐上访问集群的hdfs路径

1)直接访问hdfs的50070页面时,会弹出kerberos的客户端提示页面(前提是打开kerberos的客户端)

由于此时未将hdfs的ticket初始化所以不能正常访问,提示输入principal和密码

2)在集群的57服务器上找到hdfs的keytab文件hdfs.headless.keytab

3)在服务器上测试该keytab文件有效

kadmin.local

listprincs hdfs*

注意:可以使用listprincs列出的hdfs身份进行初始化

4)将hdfs.keytab文件拷贝到Windows机器上,通过CMD命令进行初始化

5)再次通过FireFox浏览器访问HDFS服务,正常访问

2.在此过程中遇到的问题:

(1)get ticket时,提示:Kerberos 5:Cannot find KDC for requested realm(error-1765328230)

原因是:在旧的集群10.247.33.57上创建的用户,但是本地的krb5.ini文件中配置的是新集群10.247.32.247的/etc/krb5.conf文件中的内容,所以提示该错误

解决办法:

修改本地的krb5.ini文件,复制老集群的文件


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/247695.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存