Kerberos模型认证原理是什么?

Kerberos模型认证原理是什么?,第1张

Kerberos的认证原理:

Kerberos采用可信赖第三方服务器进行密钥分发和身份确认,包括:

① 对用户认证

② 对应用服务的提供者进行认证。

此外,还可根据用户要求提供客户/服务器间的数据加密与完整性服务。

RFC1510协议文件对V5作了如下说明:

Kerberos提供了在开放型网络中进行身份认证的方法,认证实体可以是用户或用户服务。这种认证不依赖宿主机的 *** 作系统或主机的IP地址,不需要保证网络上所有主机的物理安全性,并且假定数据包在传输中可被随机窃取篡改。

2�Kerberos的主要概念及一个工作

模型

DES:对信息加密的算法。V4只支持这一DES(数据加密标准)算法,V5采用独立的加密模块,可用其它加密算法替换。

主体Principal:用户或服务,具体格式为〈登录名Primary name,实体名lnstance,域名realm〉

许可证Ticket:向Kerberos server认证的凭证。

格式〈Primary name,会话密钥Sessionkey,时间戳Timestamp〉会话密钥Session key:两个主体通信的临时密钥。

KDC(密钥发送中心):包括认证服务器AS(Authenticatin server)

用于用户的初始认证服务。

和TGS(Ticket Granting server)许可证认证服务器。

AS和TGS同驻于一台主机上。

认证符Authenticator.用户创建的令牌。发送给服务器用于证明用户身份

格式〈primary name ,timestamp>

一个Kerberos服务器也称为密钥分发中心KDC,维护着一个数据库.里面保存着所辖域内的用户及服务器的DES密钥。DES密钥基于用户口令而生。用户首次注册时,系统根据用户口令生成密钥。应用服务器向KDC注册也生成密钥,这个密钥既存放在KDC上,也存于该服务器的主机上。

现在假定一用户需要某应用服务器提供服务,工作模型如下:

从此例可以看出,基于Needham-schroeder密钥协议的Kerberos系统保障了网络传输和通信的安全。

但用户的负担十分繁重:用户的目的是得到应用服务器S的服务,却不得不积极地申请许可证!

在KerberosV4版里,为防止“重放”攻击,nonce由时间戳实现,这就带来了时间同步问题。即使利用网络时间协议(Network Time Protocol)或国际标准时间(Coordinated universal time)能在一定程度上解决时间同步问题,用户需要承担的责任也令人忍受。

Kerberos V5 版允许nonce可以是一个数字序列,但要求它唯一。由于服务器无法保证不同用户的nonce不冲突,偶然的冲突可能将合法用户的服务器申请当作重放攻击而拒之门外。

简言之,从没有网络安全知识的用户角度来看,Kerberos以加大用户参与安全保证的力度(而他们并不具备这方面的知识更没有耐心)来保障通信的安全,这种做法并不可行。

官网:https://www.kerberos.org/

官方文档:http://web.mit.edu/kerberos/krb5-current/doc/

Kerberos中有以下一些概念需要了解:

用户principal的形式:

其中Instance是可选 的,通常用于更好地限定用户的类型。比如,一个管理员用户通常会有admin instance,即 Name/admin@REALM 。

下面是指代用户的 一些principal的例子:

用户principal的形式:

下面是指代服务principal的例子:

Ticket分两种:

Kerberos认证时序图:

官方文档:https://kerberos.org/dist/index.html

在 hadoop-node1 节点上执行如下命令安装Kerberos Server

其中前一个 号是通配符,表示像名为“abc/admin”或“xxx/admin”的人都可以使用此工具(远程或本地)管理kerberos数据库,后一个 跟权限有关,*表示所有权限。HADOOP.COM是上面配置的realm。

Kerberos kadmind 使用该文件来管理对 Kerberos 数据库的访问权限。对于影响 principa 的 *** 作,ACL 文件还控制哪些 principa 可以对哪些其他 principa 进行 *** 作。文件格式如下:

相关参数说明:

【示例】

kadm5.acl 文件中的以下项授予 HADOOP.COM 领域中包含 admin 实例的任何主体对 Kerberos 数据库的所有权限:

kadm5.acl 文件中的以下项 授予 test@EXAMPLE.COM 主体添加、列出和查询包含 root 实例的任何主体的权限。

kadm5.acl 文件中的以下项 不授予 test@EXAMPLE.COM 主体添加、列出和查询包含 root 实例的任何主体的权限。

详细说明可参考官网文档:https://web.mit.edu/kerberos/krb5-latest/doc/admin/conf_files/kadm5_acl.html

kerberos数据库创建完之后,默认会创建以下5个文件(kdc.conf、kadm5.acl除外的其他几个),Kerberos 数据库的目录为: /var/kerberos/krb5kdc ,如果需要重建数据库,可删除这五个文件重新执行上面的命令创建。

启动:

停止:

Kerberos 服务机器上可以使用 kadmin.local 来执行各种管理的 *** 作。进入 kadmin.local,不需要输入密码:

常用 *** 作:

【示例】

在hadoop-node2和hadoop-node3节点上安装client

配置 krb5.conf

测试验证连接server

指定用户

管理KDC数据库有两种方式:

创建用户,注意自己设置的密码

使用xst命令或者ktadd命令:

其中 /root/root.keytab为自己指定的路径与文件名,以.keytab结尾;root/admin为之前创建的凭证用户

查看密钥文件

基于密码认证

基于密钥认证(keytab)

常见的基础 *** 作就到这里了,更多 *** 作命令,可以查看官方文档和查看帮助。后续会分享kerberos认证实战文章,请小伙伴耐心等待~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10708713.html

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

发表评论

登录后才能评论

评论列表(0条)

保存