Kerberos

Kerberos

Kerberos 服务(kerberos官网)是一种通过网络提供安全验证处理的客户机/服务器体系结构。通过验证,可保证网络事务的发送者和接收者的身份真实。

Kerberos 术语:

Principal: 

kerberos中认证的实体。Principal是用来表示客户端和服务端身份的实体。Principal 是由三个部分组成:名字(name),实例(instance),REALM(域)。比如一个标准的 Kerberos 的用户是:name/instance@REALM

Name

在代表客户方的情况,它是一个用户名;在代表主机的情况,它是写成 host

Instance

name 的进一步描述,例如 name 所在的主机名或 name 的类型等,可省略。它与第一部分之间用‘ / ’分隔,但是作为主机的描述时写成 host/Instance

Realm

Kerberos 在管理上的划分,在 KDC 中所负责的一个域数据库称作为 Realm。这个数据库中存放有该网络范围内的所有 Principal 和它们的密钥,数据库的内容被 Kerberos 的认证服务器 AS 和票据授权服务器 TGS 所使用。Realm 通常是永远是大写的字符,并且在大多数 Kerberos 系统的配置中,一般 Realm 和该网络环境的 DNS 域是一致的。与第二部分之间用‘@’分隔,缺省为本地的 Realm

Kerberos原理

Kerberos 服务是单点登录系统,这意味着您对于每个会话只需向服务进行一次自我验证,即可自动保护该会话过程中所有后续事务的安全。服务对您进行验证后,即无需在每次使用基于 Kerberos 的服务时进行验证。因此,无需在每次使用这些服务时都在网络上发送口令(增强了安全性)

Kerbores中有三种角色:
KDC:负责分发密钥的密钥分配中心
Client:需要使用kerbores服务的客户端
Service:提供具体服务的服务端
其中,Client需要和KDCService都进行通信。协议授权流程分两个部分:

1) 获取原始票据
首先,ClientKDC发送自己的身份信息,KDC从授予票据服务(Ticket Granting Service)得到可用的票据(ticket-granting ticket),并用协议开始前KDCClient之间的密钥将票据加密回复给clientclient收到KDC回复的加密票据后利用与client先前协议的密钥将票据解密,从而获得票据,此步骤主要是允许client进行Kerberos的验证,是进行访问服务的先决条件。

2) 获取服务票据以及访问服务
client
利用之前获得的票据向KDC请求服务票据,从而通过服务的身份验证。获取服务票据以及访问服务总共有如下四步:
. client将之前获得的票据和要请求的服务信息发送给KDCKDC中的授予票据服务将clientservice之间生成一个会话密钥(Session Key)用于服务器与client的身份验证。然后KDC将这个会话密钥和用户名,用户地址(IP),服务名,有效期,时间戳一起包装成一个票据(这张票据用于serviceclient的身份验证)通过client转发给service
. 为了让票据对client保密,所以KDC用协议开始之前KDC与服务端之间的密钥将票据加密后再发给client,同时为了让clientservice之间共享那个会话密钥,KDCclient与它之间的密钥将会话密钥加密返回给client
. 为了完成票据的传递,client将刚才收到的票据转发到service,由于client不知道KDCservice的密钥,所以它无法修改票据的信息,同时client将收到的会话密钥解压出来,然后将自己的用户名,用户地址(IP)打包成验证包用会话密钥加密也发给service
. Service收到票据后利用它与KDC之间的密钥将票据中的信息解密出来,从而获得会话密钥和用户名,用户地址(IP),服务名,有效期。然后再用会话密钥将验证包解密从而获得用户名,用户地址(IP)将其与之前票据中解密出来的用户名,用户地址(IP)做比较从而验证client的身份,如果service有返回结果,将其返回给client

161403404066531.png

安装Kerberos

1 安装package

CentOS中可以使用yum来安装

yum install -y krb5-libs krb5-server krb5-client

2 配置DNS

使用dnsmasq配置一个简单的本地DNS,保证需要解析的主机名在/etc/hosts中。

yum install -y dnsmasq

vim /etc/dnsmasq.conf

domain=debugo.com

local=/debugo.com/

expand-hosts

no-resolv

cache-size=500

log-queries

service dnsmasq start

Starting dnsmasq:                                          [  OK  ]

设置客户端DNS Server

修改网卡配置文件或/etc/resolv.conf

DNS1=192.168.1.221

# 检查域名解析

nslookup pure01.debugo.com

Server: 192.168.1.221

Address: 192.168.1.221#53


Name: pure01.debugo.com

Address: 192.168.1.221

这样DNS已经OK

3 配置/etc/krb5.conf,使其指定到正确的realm

[logging]

 default = FILE:/var/log/krb5libs.log

 kdc = FILE:/var/log/krb5kdc.log

 admin_server = FILE:/var/log/kadmind.log


[libdefaults]

 default_realm = DEBUGO.COM

 dns_lookup_realm = false

 dns_lookup_kdc = false

 ticket_lifetime = 24h

 renew_lifetime = 7d

 forwardable = true


[realms]

 DEBUGO.COM = {

  kdc = kerberos.debugo.com

  admin_server = kerberos.debugo.com

 }


[domain_realm]

 .debugo.com = DEBUGO.COM

 debugo.com = DEBUGO.COM

4 创建KDC配置文件

vim /var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]

 kdc_ports = 88

 kdc_tcp_ports = 88


[realms]

 DEBUGO.COM = {

  #master_key_type = aes256-cts

  acl_file = /var/kerberos/krb5kdc/kadm5.acl

  dict_file = /usr/share/dict/words

  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab

  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal

 }

5 配置acl文件

vim /var/kerberos/krb5kdc/kadm5.acl 

*/admin@CTBJ.COM        *

6 使用kdb5_util创建kdc数据库

kdb5_util create -r DEBUGO.COM -s

Loading random data

Initializing database '/usr/local/var/krb5kdc/principal' for realm 'DEBUGO.COM',

master key name 'K/M@DEBUGO.COM'

You will be prompted for the database Master Password.

It is important that you NOT FORGET this password.

Enter KDC database master key: 

Re-enter KDC database master key to verify: 


kadmin.local 

Authenticating as principal root/admin@DEBUGO.COM with password.





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值