- kerberos是一种网络身份验证协议
一些概念
-
客户端
- CT_SK加密信息:客户端在访问TGS时发送的
- 客户端名称
- 客户端IP
- 时间戳:TGS根据时间戳判断是否超时,默认5min
- CS_SK加密信息:客户端在访问服务端时携带
- 客户端名称
- 客户端IP
- 时间戳
- ST有效时间
- CT_SK加密信息:客户端在访问TGS时发送的
-
KDC:密钥分发中心
- AS:认证服务器
- TGS公钥加密信息
- 客户端名称
- 客户端IP
- TGS名称
- TGT有效时间
- CT_SK
- 客户端加密信息
- CT_SK(session key):用来对客户端向TGS发送的信息加密
- TGS名称
- TGT有效时间
- 时间戳
- TGS公钥加密信息
- TGS:票证授予服务器
- Server公钥加密信息
- 客户端名称
- 客户端IP
- 服务端IP
- ST有效时间
- 时间戳
- CS_SK
- CT_SK加密信息
- CS_SK
- 时间戳
- ST有效时间
- Server公钥加密信息
- AS:认证服务器
-
Realm:领域,身份验证管理域,领域确定了管理边界,所有主题均属于特定的kerberos域
-
principal:主体,principal主体用于标识身份,每个参与Kerberos认证协议的用户和服务都需要一个主体来唯一标识自己。Principal由三部分组成:名字,实例,域,例如一个标准的Kerberos用户/服务表示为:name/instance@REALM.
- name :表示用户名
- instance:对name的进一步描述,例如name所在的主机名或name的类型,可以省略,与第一部分用/分割
- realm:表示Kerberos在管理上的划分,在KDC中所负责的一个域数据库称作realm,这个数据库中存放有该网络范围内所有Principal和他们的密钥
- eg:
- 用户principal:zhangsan/admin@example.com,形式是 用户名/角色/realm域
- 服务principal:ftp/site.example.com@example.com,形式是 服务名/地址/realm域
-
keytab: Kerberos认证有两种方式:密钥文件和密码,keytab就是密钥文件,该文件包括principal主体的用户名及密码,客户端可以通过keytab密钥文件进行身份验证
-
kadmin:运行在主kerberos节点,负责存储KDC数据库,管理principal信息
-
认证流程:
- 客户端访问AS,AS验证过后发票(一个TGS公钥加密信息A,一个客户端公钥加密信息B)
- 客户端拿到此票可以访问TGS,将TGT加密信息原封不动+服务端名称+CT_SK加密信息发送给TGS,TGS发票(Server公钥加密信息+CT_SK加密)
- 客户端拿着TGS发的Server公钥加密信息+CS_SK信息,再去访问服务端
- Kerberos优势
- 密码无需进行网络传输,基于ticket实现身份认证,保证密钥安全性
- 双向认证,整个认证过程中,不仅需要客户端进行认证,待访问的服务也需要进行身份认证
- 高性能。密钥采用对称加密方式,相比SSL的密钥操作快几个数量级,一旦Client获得访问某个Server的ticket,该Server就能根据这个Ticket实现对client的验证,无须KDC的再次参与