Kerberos认证原理与环境部署

一,概述

针对TCP/IP网络系统, Kerberos提出了一种可信第三方认证协议来进行身份认证。在该协议中,Keberos服务端采用了DES对称加密技术对数据进行加密和传输。由于Keberos在实际应用中具有广泛的前景,所以它已经成为了最流行和最安全的认证协议之一。然而,Keberos并不完全安全,它可能会被恶意攻击者利用来进行攻击。本文对Keberos的安全性做了详细地分析和讨论,提出了一种改进方案。Keberos原由美国麻省理工学院为Athena计划研制。

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

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

1)应用场景

Kerberos使用客户端/服务器(CS)架构和DES加密技术并能实现相互认证,也就是说客户端和服务器端都能认证对方身份,它是应用对称密钥体制管理密钥的系统。它具有良好的安全性、可扩展性、健壮性和可用性;其独特的安全机制使之在电子商务中得到广泛应用。本文介绍了Kerber OS的设计思想及其实现方法。并给出了一个实例。可应用于预防窃听,预防replay攻击和保护数据完整性。

2)功能特性

安全性方面

Kerberos公司提供了一种双向认证的方式,不但Server能够认证Client,而且Client还能够认证Server。在这个过程中,Server与Client之间采用了一种特殊的密钥交换协议——时间戳算法,该算法能够保证双方都能得到相同的时间戳,从而提高系统安全性。Server在认证Client成功后,将Client下发的时间戳返回给Client,为Client进行身份验证提供了一种方法。

可靠性高

认证服务为其它服务奠定了基础,而服务认证过程则有利于增强整个系统可用性与高可靠性。

可扩展性强

KDC,即秘钥分配中心,是秘钥体系中的一个重要组成部分,其目的在于降低密钥体制内在交换密钥过程中遇到的各种风险。通过对现有各种KDC算法进行分析比较,提出了一种新的基于公钥密码系统和非对称加密技术的可配置KDC方案,该方案能有效地抵抗多种攻击手段。用户可按要求对多台KDC进行扩充。

开放性

在计算机领域中, Kerberos已成为普遍认可的准则,因此利用Kerberos能够很方便地在各种平台上进行互操作。

二,核心概念Kerberos提出

在Kerberos中,有下列几个概念要理解:

KDC:密钥分发巾心管理签发票据和记录授权。

Realm:Kerberos在管理方面的标志。

principal:用户在Kerberos下面可以叫做Principal.每次增加用户或者服务时,需要在kdc中增加一个principals.principels的格式是:主名/实例名η领域名。

主名称:主名称既可作为用户名也可作为服务名来使用,它代表了用来提供多种网络服务的主要部分(例如hdfs,yam,,hive等)。

实例名:实例名中包含有用户的主机名和密码。

keytab文件:保存有用户加密密码。通常采用这一方法进行认证。

1)用户principal

用户principal格式:

@REALM name[/Instance]

其中Instance具有可选性,一般用来较好的限制用户类型。在实际应用中,用户可以根据自己的兴趣来选择合适的系统。在这种情况下,我们可以将系统分为多个子模块,每个子类都对应着不同的功能。例如一个管理员用户一般都拥有admin instance(Name-admin-@REALM)。

以下指几个principal实例,供使用者参考:

pippo@EXAMPLE.COM admin/admin@EXAMPLE.COM cnicetoupp/admin@EXAMPLE.COM

2)服务principal

用户principal格式:

Service/Hostname@REALM

第一部分为service,如imap、AFS、ftp等名称。第二部分主要讨论了在互联网环境中如何使用这些名称来描述一个数据库服务器上存储的数据和处理该数据所需的资源信息。第三部分给出了一个应用示例。第四部分为全文总结。通常‘host’这一名称是用来指出访问机器(telnent、rsh、ssh)的一般方法。

第二个例子是一个名为’component’的全限定域名(FQDNN)。在这一阶段,我们将从两个方面来分析该系统:第一、如何实现客户端与服务器之间的通信;第二、如何确定一个正确的端口号,使之能够有效地识别出网络上的恶意用户。此component跟随DNS逆向解析应用服务器IP地址之后获得主机名。

以下指principal服务实例:

imap/hadoop-node1@EXAMPLE.COM host/hadoop-node1@EXAMPLE.COM afs/hadoop-node1@EXAMPLE.COM

3) Tickets.

Ticket分为两类:

Ticket Granting Ticket,TGT:这是KDC中的Authentication Server(简称AS)产生的,TGT是向Ticket Granting Server(TGS)用于表明自己真实身份的东西.

ServiceTicket:在刚诞生的KDC(Ticket Granting Server)(或TGS)被用来在应用服务器上显示身份

三, Kerberos的架构和工作原理

AS_REQ为初始化用户时(kinit, KDC, Authentication Server, AS_REQ)发送用户认证要求;

AS_REP由AS对client进行答复,包括TGT(使用TGS secret key进行加密)and the session key(使用发送请求用户secret进行加密);

这些数据包括从前条消息得到的TGT(使用TGS secret key进行加密)和客户端生成的authenticator(使用session key进行加密。

TGS_REP为TGS对为了对这些数据进行加密以防止非法访问,我们设计了一种新的密钥分发算法。这种加密技术采用两个方案:一是把所有的Sense都变成密文;二是把它们全部转换成明文。这包括service ticket(使用appservice中的secret key进行加密)以及由TGS生成的service sessinon key(以前AS生成的1条session key对其进行加密)

AP_REQ为客户端向appserver发送的访问服务请求,包含service ticket与authenticator(用TGS生成的service session key进行加密)

AP_REP为appserver向client返回的消息,这证明了该appserver的确为客户端所要访问server。然而,这个消息未必都会得到答复。如果客户端与App SServer之间存在安全问题,那么这个信息反馈会导致错误的响应结果。为了防止这种情况发生,我们可以利用一个特殊的技术来解决这个问题。这个技术就是用户认证。例如客户端与appserver之间需要互相认证时,客户端会发送请求给appserver,此时无需回复消息。

图片[1]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

图片[2]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

Kerberos验证时序图:

图片[3]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

四、Kerberos安装

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

温馨提示:此处的主机名及域名均为配置/etc/hosts

192.168.0.113 hadoop-node1 server.kerberos.com 192.168.0.114 hadoop-node2 client1.kerberos.com 192.168.0.115 hadoop-node3 client2.kerberos.com

主机的名称

IPA

人物

hadoop-node1

server.kerberos.com

192.168.0.113

KDC(Kerberos Server、kadmin)

hadoop-node2

client1.kerberos.com

192.168.0.114

Customer Kerberos

hadoop-node3

client1.kerberos.com

192.168.0.115

Customer Kerberos

1)Kerberos Server 安装

在hadoop-node1节点中执行以下指令来安装KerberosServer

1. yum的安装

krb5-server:Kerberos服务端程序是KDC中的一个节点。

krb5-workstation:包括某些基本的Kerberos程序如(kinit、klist、kdestroy、kpasswd等).用Kerberos编写的节点应全部部署。

krb5-libs:多种支持类库,如含有Kerberos程序。

$ yum install krb5-server krb5-workstation krb5-libs.

2、配置 krb5.conf

温馨提示/etc-krb5-conf:客户端基于文件内信息取入KDC

includedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt default_realm = HADOOP.COM [realms] = { kdc = server.kerberos.com:88 admin_server = server.kerberos.com:749 default_domain = kerberos.com } [domain_realm] = HADOOP.COM = HADOOP.COM [kdc] profile = /var/kerberos/krb5kdc/kdc.conf

3、配置 kdc.conf

温馨提醒:\var\kerberos\krb5kdc\kdc.conf:kdc独家配置,可根据个人需要对下一个kdc数据库存放目录进行修改。

[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] = { acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab max_file = 24h max_renewable_life = 7d supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }

4、配置 kadm5.acl

温馨提醒:\var\kerberos\krb5kdc\kadm5.acl:与权限有关的分配

在这些号码中,前面的号码为通配符代表那些像是被称为“abc-admin”或者“xxx-admin”的用户均可利用该工具来管理kerberos数据库(远程或者本地),而后面的号码则与权限相关,×代表全部权限。如果用户需要对该权限进行修改,则只需在系统中添加新的操作即可实现对Kerberos数据库的重新设置,而无需更改原有系统。最后通过实例说明了本方法的具体应用过程。HADOOP.COM在上配置了realm。

*/admin@HADOOP.COM *

Kerberos kadmind用此文件管理访问Kerberos数据库权限。在影响principa运行时, ACL文件也控制着哪一个principA能够运行哪一个其它principB。最后我们利用此方法实现了一个通用的网络环境下基于PHP语言开发的Web应用系统的设计与实现。本文主要讨论了这个系统中所涉及到的一些关键技术问题和解决方案。这些技术包括。文件的格式是:

principal permissions

有关参数的描述:

principal:设置此principals权限,principalls每一部分均可用*。

如果字符不是大写,则在该页面中显示一个或多个字段,并将其添加到该页面中的相应位置上;permission:对该页面进行编辑;如果字符是大写,则禁止该操作;在用户定义了一个授权后,该授权就会被记录并保存到相应的文件上。如果字符是小写,则允许此操作。具有以下几种权限:a:[非]允许加入主体和战略。d:[没有]让被删除的主体和战略。e:[不]禁止在kerberos数据库上使用任何操作。f:[不]允许对主体和策略进行选择。g:[不]限制用户的输入范围。m:[没有]让被修改的主体和战略。c:[不可]让被摄者修改口令。i:[不]禁止在Kerberos数据集中添加新信息。l:[不]禁止访问Kerberos数据库系统中的任何策略。x:[所有权限],所有权限是指对数据进行操作时需要用到的资源。

target_principal:目标principals.目标princip als中每一部分均可用*。这两个词在很多方面是非常相似的。但是由于它们的功能和作用不同,所以我们应该如何区分呢?下面就来详细介绍一下它们之间的区别吧!1.名称不同。2。【备选】

restrictions:对权限做了一些补充规定,例如:对所建立principal票据最长时效进行了限定。用户可以根据自己的实际需要来定制该票据的有效期。使用这个功能时,我们只需在指定位置输入相应的标识即可对该票据进行有效控制和查询。【备选】

例1

kadm5.acl文件类型的下列项目赋予HADOOP.COM领域内任何含有admin示例的主体在Kerberos数据库上的全部权力:

*/admin@HADOOP.COM *

在kadm5.acl中,下列项目赋予test@EXAMPLE.COM本体对任何含有root示例的本体进行添加,列举,查询等操作的权利。

test@EXAMPLE.COM ali */root@EXAMPLE.COM

kadm5. acl文件的下列项目并没有赋予test@EXAMPLE.COM本体对任何包括root实例在内的本体进行添加,列举,查询等操作的权利。

test@EXAMPLE.COM ALI */root@EXAMPLE.COM

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

5.初始化KDC数据库

$ kdb5_util create -r HADOOP.COM -s $ ll -a /var/kerberos/krb5kdc/

-s:表示生成 stash file,并在其中存储 master server key(krb5kdc)

-r:指定 realm name

图片[4]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

kerberos数据库建立完成后默认将建立下列五个文件(除kdc.conf和kadm5.acl外).Kerberos数据库目录如下:/var.kerberos.krb5kdc.如需重构数据库时,可以将此五个文件删除,重做上述指令建立。

$ rm /var/kerberos/krb5kdc/.k5.HADOOP.COM /var/kerberos/krb5kdc/principal* -f

6.启动和停止Kerberos服务

开始:

$ systemctl start krb5kdc kadmin $ systemctl status krb5kdc kadmin.

不再:

$ systemctl stop krb5kdc kadmin.

7、kadmin.local

在Kerberos服务机器中,kadmin.local可用于进行多种管理。该系统允许用户在任何时间通过一个或多个客户端访问kadh.local,并且提供了一些特殊的功能,如加密和签名等。这些特性使它具有非常广泛的应用范围。1。输入kadmin.local无需输入密码:。

$ kadmin.local

常见作业:

运行情况

阐述了

例1

add_principal, addprinc, ank

增加 principal

add_principal -randkey test@HADOOP.COM

cpw

修正密码

cpw test@HADOOP.COM

delete_principal, delprinc

删除 principal

delete_principal test@HADOOP.COM

modify_principal, modprinc

修改 principal

modify_principal test@HADOOP.COM

rename_principal, renprinc

重命名 principal

rename_principal test@HADOOP.COM test2@ABC.COM

get_principal, getprinc

获取 principal

get_principal test@HADOOP.COM

list_principals, listprincs, get_principals, getprincs.

展示全部principal

listprincs

ktadd, xr

导出词条至keytab

xst -k /root/test.keytab test@HADOOP.COM

?

看看帮什么忙

?

图片[5]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

温馨提示:-randkey为密码随机,-nokey为密码非随机【预设】,必须人工输入密码。

例1

addprinc -randkey hdfs/admin addprinc -pw 123456 hdfs/admin addprinc hdfs/admin 输入密码:123456

2)Kerberos Client 安装

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

krb5-workstation:包括某些基本的Kerberos程序如(kinit、klist、kdestroy、kpasswd等).用Kerberos编写的节点应全部部署。

krb5-devel:含有编译Kerberos程序头文件以及部分类库。

$ yum install krb5-devel krb5-workstation -y.

配置 krb5.conf

温馨提示/etc-krb5-conf:客户端基于文件内信息取入KDC

includedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt default_realm = HADOOP.COM default_ccache_name = KEYRING:persistent:%{uid} [realms] = { kdc = server.kerberos.com:88 admin_server = server.kerberos.com:749 default_domain = kerberos.com } [domain_realm] = HADOOP.COM = HADOOP.COM

对连接server进行测试验证

$kadmin输入量:123456

图片[6]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

指定使用者

$ kadmin -p test@HADOOP.COM

图片[7]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

3)基本命令操作

1. kadmin,即数据库管理

kadmin可用于在Kerberos客户端机器运行多种管理,服务端可用于kadmin及kadmin.local指令。但对于大多数企业来说,这些功能都是通过用户注册或登陆才能实现的。而这些功能也只是对员工进行基本的权限控制,不能很好地保护用户隐私信息。首先需要在KerbersServer中创建一个登录principal.默认{当前使用者}\admin@realm。

管理KDC数据库的方法主要分为两类:

一种是在KDC(server端)上直接进行的,它可无需输入密码即可登录【指令:kadmin.local】

一类是客户端的指令,要求输入密码【指令:kadmin】,server端、client端均可。

创建一个用户并关注你所设密码

$ kadmin.local add_principal root/admin $ kadmin.local -q “add_principal root/admin”

2. kinit(用户客户端认证)

$ kinit root/admin@HADOOP.COM $ klist.

图片[8]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

3.推导keytab认证文件

利用xst命令或ktadd命令:

$ kadmin.local -q “ktadd -norandkey -k /root/root.keytab root/admin” $ kadmin.local ktadd -norandkey -k /root/root.keytab root/admin 或xst -k /root/v.keytab root/admin 或xst -norandkey -k /root/root.keytab root/admin

在这些路径和文件名中,/root.keytab提供了其指定路径和文件名以便。net作为连接文件和数据库之间的通道。在完成了以上所有功能之后,将此系统应用到实际工作中并测试其可行性。keytab末尾;root/admin是先前建立凭证用户

图片[9]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

看密钥文件

$ klist -kt /root/root.keytab.

4. kdestroy,即去掉当前认证缓存

$ kdestroy

5.用户认证,登陆

以密码认证为基础

$ klist $ kinit root/admin 输入密码:123456 $ klist

基于密钥的认证,keytab

$ kdestroy $ klist $ kinit -kt /root/root.keytab root/admin $ klist.

图片[10]-Kerberos认证原理与环境部署-【聚禄鼎】一站式企业服务平台

普通基础操作到此结束,操作命令较多,可查官方文档、查帮助。相信大家对基础操作都有一定了解吧?在本期杂志中我们将为你介绍一系列实用的基础技能。相信你一定能从中获益哦!快来加入我们的团队吧!随后将分享关于kerberos认证的实战,敬请伙伴们耐心等着吧~

原文链接:http://www.sfdkj.com/19906.html

 

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片