[关闭]
@xtccc 2015-09-22T01:34:46.000000Z 字数 2520 阅读 3100

Understanding Kerberos

给我写信
Github

此处输入图片的描述
Kerberos


参考:
+ Kerberos Infrastructure HOWTO
+ What is a keytab, and how do I use one?

What is Kerberos

Kerberos是一个用于鉴定身份(authentication)的协议, 它采取对称密钥加密(symmetric-key cryptography),这意味着密钥不会在网络上传输。在Kerberos中,未加密的密码(unencrypted password)不会在网络上传输,因此攻击者无法通过嗅探网络来偷取用户的密码。

Kerberos利用对称加密受信任的第三方(即KDC, key distribution center)来鉴别要求使用网络服务的用户的身份。所有有KDC和secondary KDC管理的主机构成了一个域(realm)。

当一个用户的身份通过了KDC的验证后,KDC会向该用户发送一个证书/票据(该证书/票据是与这次会话绑定的),其他kerberized services会在该用户的主机上搜索该ticket,而不是要求用户使用密码来验证他的身份。



Concepts of Kerberos

  1. prinicipal
    一个用户会以一个独一无二的身份来被KDC认证,该身份被称为principal。一个Principal由三个部分组成:primary, instance以及realm,其组成形式为primary/instance@realm

    • primary : 可以是OS中的username,也可以是service name;
    • instance : 用于区分属于同一个user或者service的多个principals,该项为optional;
    • realm : 类似于DNS中的domain,定义了一组principals

  2. Keytab文件
    参考 What is a keytab, and how do I use one?

  3. Kerberos clietnt

  4. Kerberos server

  5. Kerberos KDC
    KDC可以有多个,其中1个是master KDC,其余的是secondary KDC,这样可以通过冗余来保证可用性。

    通过KDC验证的servers可以被realm中的其他所有主机信任。



Authentication Process

  1. 当用户在一个kerberos-aware网络中登录到他的workstation之后,authentication server将向KDC发送一个TGT请求(a request for a ticket-granting ticket),而他的principal将作为其中的组成部分。该请求可以由登录程序来负责发送(这样该过程对用户透明),也可以在用户登录后通过执行kinit来发送。

  2. KDC在其数据库中检查该pricipal。

  3. 如果找到了该principal,则KDC将创建一个TGT,并用user key进行加密,然后将加密后的TGT发送给该用户。这里,user key并不是用户的密码,而是由用户密码计算而来(例如hash)。

  4. 用户所在主机的Kerberos client的登录程序或者kinit程序在收到加密的TGT后,用该用户的user key进行解密。user key只会在client主机上被使用,绝不会在网络上传输。KDC发送的ticket将被保存在一个本地文件中(credentials cache),它可以被kerberized services查验。

  5. 用户的身份验证完成后,servers(运行着kerberized applciations & services)可以查验被识别的principals及其keys(这将被保存在keytab中),而不必用kinit来查验。


Kerberos的身份验证步骤

TGT有一个可设定的失效期(通常为10~24小时),这会被保存在client所在主机的credential cache中。在ticket过期之前,用户在请求kerberized services的服务时不需要再次输入用户密码,除非他们登出后再登录。

每当用户需要访问一个network service时,client会利用TGT向TGS(ticket-granting server)请求获得针对该特定网络服务的一个新的ticket。之后,用户可以利用该service ticket来向该network service实现authentication。


Commands & Applications

Name Description
Cient Applications
kinit obtain and cache a TGT
kdestroy destroy Kerberos credentials
klist list cached Kerberos credentials
Administrative Applications
kadmin administer the Kerberos V5 database
kdb5_util create and perform low-level administrative fucntions on the Kerberos V5 database
Server Applications
kadmind start the KADM5 administration server
Configuration Files
krb5.conf configurations for the Kerberos V5 library
kdc.conf configurations for the Kerberos V5 AS and KDC



How Kerberos works

KDC就是受信任的第三方(trusted third party arbitrator),KDC上运行着2个重要的Kerberos daemons,即 kadmindkrb5kdc
+ kadmind: 这是管理Kerberos server的进程,一个名为kadmin 的程序使用 kadmind 来维护principal database和policy configuration。
+ krb5kdc:在Kerberos authentication的过程中担负trusted third party arbitrator的职责。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注