一站式
企业服务平台
132-8122-9158

keberos的安全性(keberos的安全性分析)

广告位招租
联系电话:13518188210

一,概述

针对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加密技术并能实现相互认证,也就是说客户端和服务器端都能认证对方身份,它是应用对称密钥体制管理密钥的系统它具有良好的安全性、可扩展性、健壮性和可用性;其独特的安全机制使之在电子商务中得到广泛应用。本文介绍了KerberOS的设计思想及其实现方法。并给出了一个实例可应用于预防窃听,预防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格式:

@REALMname[/Instance]

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

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

pippo@EXAMPLE.COMadmin/admin@EXAMPLE.COMcnicetoupp/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.COMhost/hadoop-node1@EXAMPLE.COMafs/hadoop-node1@EXAMPLE.COM

3)Tickets.

Ticket分为两类:

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

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

三,Kerberos的架构和工作原理

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

AS_REP由AS对client进行答复,包括TGT(使用TGSsecretkey进行加密)andthesessionkey(使用发送请求用户secret进行加密)

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

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

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

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

keberos的安全性(keberos的安全性分析)

keberos的安全性(keberos的安全性分析)

Kerberos验证时序图:

keberos的安全性(keberos的安全性分析)

四、Kerberos安装

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

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

192.168.0.113hadoop-node1server.kerberos.c_m192.168.0.114hadoop-node2client1.kerberos.c_m192.168.0.115hadoop-node3client2.kerberos.c_m

主机的名称

IPA

人物

hadoop-node1

server.kerberos.c_m

192.168.0.113

KDC(KerberosServer、kadmin)

hadoop-node2

client1.kerberos.c_m

192.168.0.114

CustomerKerberos

hadoop-node3

client1.kerberos.c_m

192.168.0.115

CustomerKerberos

1)KerberosServer安装

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

1.yum的安装

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

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

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

$yuminstallkrb5-serverkrb5-workstationkrb5-libs.

2、配置krb5.conf

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

includedir/etc/krb5.conf.d/[logging]default=FILE:/var/log/krb5libs.logkdc=FILE:/var/log/krb5kdc.logadmin_server=FILE:/var/log/kadmind.log[libdefaults]dns_lookup_realm=falseticket_lifetime=24hrenew_lifetime=7dforwardable=truerdns=falsepkinit_anchors=/etc/pki/tls/certs/ca-bundle.crtdefault_realm=HADOOP.COM[realms]={kdc=server.kerberos.c_m:88admin_server=server.kerberos.c_m:749default_domain=kerberos.c_m}[domain_realm]=HADOOP.COM=HADOOP.COM[kdc]profile=/var/kerberos/krb5kdc/kdc.conf

3、配置kdc.conf

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

[kdcdefaults]kdc_ports=88kdc_tcp_ports=88[realms]={acl_file=/var/kerberos/krb5kdc/kadm5.acldict_file=/usr/share/dict/wordsadmin_keytab=/var/kerberos/krb5kdc/kadm5.keytabmax_file=24hmax_renewable_life=7dsupported_enctypes=aes256-cts:normalaes128-cts:normaldes3-hmac-sha1:normalarcfour-hmac:normalcamellia256-cts:normalcamellia128-cts:normaldes-hmac-sha1:normaldes-cbc-md5:normaldes-cbc-crc:normal}

4、配置kadm5.acl

温馨提醒:varkerberoskrb5kdckadm5.acl:与权限有关的分配

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

*/admin@HADOOP.COM*

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

principalpermissions

有关参数的描述:

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

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

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

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

例1

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

*/admin@HADOOP.COM*

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

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

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

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

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

5.初始化KDC数据库

$kdb5_utilcreate-rHADOOP.COM-s$ll-a/var/kerberos/krb5kdc/

-s:表示生成stashfile,并在其中存储masterserverkey(krb5kdc)

-r:指定realmname

keberos的安全性(keberos的安全性分析)

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

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

6.启动和停止Kerberos服务

开始:

$systemctlstartkrb5kdckadmin$systemctlstatuskrb5kdckadmin.

不再:

$systemctlstopkrb5kdckadmin.

7、kadmin.local

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

$kadmin.local

常见作业:

运行情况

阐述了

例1

add_principal,addprinc,ank

增加principal

add_principal-randkeytest@HADOOP.COM

cpw

修正密码

cpwtest@HADOOP.COM

delete_principal,delprinc

删除principal

delete_principaltest@HADOOP.COM

modify_principal,modprinc

修改principal

modify_principaltest@HADOOP.COM

rename_principal,renprinc

重命名principal

rename_principaltest@HADOOP.COMtest2@ABC.COM

get_principal,getprinc

获取principal

get_principaltest@HADOOP.COM

list_principals,listprincs,get_principals,getprincs.

展示全部principal

listprincs

ktadd,xr

导出词条至keytab

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

?

看看帮什么忙

?

keberos的安全性(keberos的安全性分析)

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

例1

addprinc-randkeyhdfs/adminaddprinc-pw123456hdfs/adminaddprinchdfs/admin输入密码:123456

2)KerberosClient安装

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

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

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

$yuminstallkrb5-develkrb5-workstation-y.

配置krb5.conf

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

includedir/etc/krb5.conf.d/[logging]default=FILE:/var/log/krb5libs.logkdc=FILE:/var/log/krb5kdc.logadmin_server=FILE:/var/log/kadmind.log[libdefaults]dns_lookup_realm=falseticket_lifetime=24hrenew_lifetime=7dforwardable=truerdns=falsepkinit_anchors=/etc/pki/tls/certs/ca-bundle.crtdefault_realm=HADOOP.COMdefault_ccache_name=KEYRING:persistent:%{uid}[realms]={kdc=server.kerberos.c_m:88admin_server=server.kerberos.c_m:749default_domain=kerberos.c_m}[domain_realm]=HADOOP.COM=HADOOP.COM

对连接server进行测试验证

$kadmin输入量:123456

keberos的安全性(keberos的安全性分析)

指定使用者

$kadmin-ptest@HADOOP.COM

keberos的安全性(keberos的安全性分析)

3)基本命令操作

1.kadmin,即数据库管理

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

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

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

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

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

$kadmin.localadd_principalroot/admin$kadmin.local-q"add_principalroot/admin"

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

$kinitroot/admin@HADOOP.COM$klist.

keberos的安全性(keberos的安全性分析)

3.推导keytab认证文件

利用xst命令或ktadd命令:

$kadmin.local-q"ktadd-norandkey-k/root/root.keytabroot/admin"$kadmin.localktadd-norandkey-k/root/root.keytabroot/admin或xst-k/root/v.keytabroot/admin或xst-norandkey-k/root/root.keytabroot/admin

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

keberos的安全性(keberos的安全性分析)

看密钥文件

$klist-kt/root/root.keytab.

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

$kdestroy

5.用户认证,登陆

以密码认证为基础

$klist$kinitroot/admin输入密码:123456$klist

基于密钥的认证,keytab

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

keberos的安全性(keberos的安全性分析)

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

赞(13) 联系作者
未经允许不得转载:【聚禄鼎】一站式企业服务平台 » keberos的安全性(keberos的安全性分析)

评论 抢沙发

让我们一起创建更加美好的网络世界

本站部分资源来自于网络收集,若侵犯了你的隐私或版权,请及时联系我们删除有关信息!

扫码添加站长微信

扫码添加小编微信

登录

找回密码

注册