跨境电商有哪些平台,seo谷歌,wordpress安装详细教程,网站收银系统建设Kerberos快速入门之基本概念与认证基本原理 文章目录 Kerberos快速入门之基本概念与认证基本原理Kerberos服务的简介基本概念RealmPrincipalKeytabTicketKDC Kerberos 认证基本原理1. Client发送明文消息给AS2. AS验证3. AS发送消息给Client#xff0c;消息为两条密文4. Clien…Kerberos快速入门之基本概念与认证基本原理 文章目录 Kerberos快速入门之基本概念与认证基本原理Kerberos服务的简介基本概念RealmPrincipalKeytabTicketKDC Kerberos 认证基本原理1. Client发送明文消息给AS2. AS验证3. AS发送消息给Client消息为两条密文4. Client处理AS过来的密文消息5. Client发送消息给TGS6. TGS验证消息7. TGS发送消息给Client消息为两条密文8. Client处理TGS过来的消息9. Client发送消息给Appcaition Server10. Appcaition Server验证Client的消息11. Client处理Appcaition Server过来的消息 MIT Kerberos官网
MIT Kerberos 使用帮助 CentOS 7.3环境中部署Kerberos集群
Kerberos服务的简介
Kerberos 服务是一种通过网络提供安全事务处理的客户机/服务器体系结构。
拥有的服务功能
用户身份验证。校验传递的数据的有效性完整性对传输过程中的数据进行加密保密性。
Kerberos 服务是单点登录系统这意味着您对于每个会话只需向服务进行一次自我验证即可自动保护该会话过程中所有后续事务的安全。
基本概念
Realm
表示Kerberos 中的一个领同一主 KDC 的一组系统的逻辑网络类似服务网络不同 Kerberos 环境可以通过 realm 进行区分。一个Kerberos服务中可以包含多个领域实现同时对多个领域的管理。实际使用过程中为了简单化就是一套Kerberos 服务器就只管理一个realm。
Principal
主体名称可以理解为账户或者身份标识。
principal 主要由三部分构成primaryinstance(可选) 和 realm。包含 instance 的 principal一般会作为 server 端的 principal。
示例
## hadoop.com域下以nn用户启动的NameNode服务
nn/hadoop3test1-01.test.comhadoop.com
## hadoop.com域下的普通用户
gudonghadoop.com创建用户 principal 时通常应使用 requires_preauth -allow_svr 选项以帮助减少字典攻击请参阅 “应对字典攻击风险”。 字典攻击 Keytab
秘钥文件里面可以包含一个或多个Principal的密码信息的文件可以被用来与KDC进行身份认证。
Ticket
票据Client与KDC交互后生成的包含身份信息的文件。
Ticket 有两种生命周期
Ticket Timelife 票据生命周期票据的过期期限。Renewable Lifetime可再生周期可以将票据的生效周期一直续期直到达到可再生周期的限制。
KDC
Key Distribution Center密钥分发中心有三个核心组成
Kerberos Database(KDB)账户数据库包含了一个realm下的所有账户信息。Authentication Server(AS)身份验证服务进行用户信息认证为客户端提供 Ticket Granting Tickets(TGT) 票证授予票证。Ticket Granting Server(TGS)票证授予服务验证 TGT 与 Authenticator为客户端提供 Service Tickets。
Kerberos 认证基本原理
Ticket-Granting TicketTGT票据中心授予票Client与Kerberos认证过程中的票据。 Service TicketClient与Application Server通信用 #mermaid-svg-cwtfKsdELIC2R1JH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-cwtfKsdELIC2R1JH .error-icon{fill:#552222;}#mermaid-svg-cwtfKsdELIC2R1JH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-cwtfKsdELIC2R1JH .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-cwtfKsdELIC2R1JH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-cwtfKsdELIC2R1JH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-cwtfKsdELIC2R1JH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-cwtfKsdELIC2R1JH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-cwtfKsdELIC2R1JH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-cwtfKsdELIC2R1JH .marker.cross{stroke:#333333;}#mermaid-svg-cwtfKsdELIC2R1JH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-cwtfKsdELIC2R1JH .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-cwtfKsdELIC2R1JH .cluster-label text{fill:#333;}#mermaid-svg-cwtfKsdELIC2R1JH .cluster-label span{color:#333;}#mermaid-svg-cwtfKsdELIC2R1JH .label text,#mermaid-svg-cwtfKsdELIC2R1JH span{fill:#333;color:#333;}#mermaid-svg-cwtfKsdELIC2R1JH .node rect,#mermaid-svg-cwtfKsdELIC2R1JH .node circle,#mermaid-svg-cwtfKsdELIC2R1JH .node ellipse,#mermaid-svg-cwtfKsdELIC2R1JH .node polygon,#mermaid-svg-cwtfKsdELIC2R1JH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-cwtfKsdELIC2R1JH .node .label{text-align:center;}#mermaid-svg-cwtfKsdELIC2R1JH .node.clickable{cursor:pointer;}#mermaid-svg-cwtfKsdELIC2R1JH .arrowheadPath{fill:#333333;}#mermaid-svg-cwtfKsdELIC2R1JH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-cwtfKsdELIC2R1JH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-cwtfKsdELIC2R1JH .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-cwtfKsdELIC2R1JH .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-cwtfKsdELIC2R1JH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-cwtfKsdELIC2R1JH .cluster text{fill:#333;}#mermaid-svg-cwtfKsdELIC2R1JH .cluster span{color:#333;}#mermaid-svg-cwtfKsdELIC2R1JH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-cwtfKsdELIC2R1JH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} KDC 1 2 3 4 5 6 7 8 9 10 11 Kerberos Database(KDB) Authentication Server(AS) Ticket Granting Server(TGS) client 某Application Server(APS) 1. Client发送明文消息给AS
明文消息包含
Client的ID/NAME(标识)请求访问服务的的ID/NAME(标识)Client的网络地址可以是多台机器的IP地址的列表如果想在任何一台机器上使用即为空请求的TGT有效期
2. AS验证
检查Client的ID是否存在于KDB中若AS检查没有异常用户不存在报异常KDC会随意生成一个Session Key用于Client与TGS的通信
3. AS发送消息给Client消息为两条密文
第一条消息由Client的秘钥加密。 请求访问服务的的ID/NAME时间戳有效期TGS 的 Session Key 第二条消息由TGS的秘钥加密。 Client的ID/NAME请求访问服务的的ID/NAMEClient的网络地址可以是多台机器的IP地址的列表如果想在任何一台机器上使用即为空TGT 的有效期TGS 的 Session Key
4. Client处理AS过来的密文消息
利用本地Client的秘钥解密第一条消息为了获取其中的TGS Session Key如果无法解密则代表认证失败。Client无法解密TGT将其保存在认证缓存中。
5. Client发送消息给TGS
第一条消息消息内有 请求访问服务的的ID/NAME(标识)服务票据的有效期 第二条消息使用TGS Session Key加密的身份认证器Authenticator包含 Client的ID/NAME时间戳 第三条消息TGT 即由AS发送给Client的TGT
6. TGS验证消息
TGS检查Client请求访问服务的ID/NAME是否KDB中。若检查成功则利用TGS的秘钥解析TGT得到TGS Session Key。若TGT解析成功再用TGS Session Key从Authenticator中解析出Client消息。TGS检查项 比较Authenticator中的Client ID与TGT中的Client ID比较Authenticator中的时间戳和TGT中的时间戳检查TGT的有效期是否过期检查Authenticator是否已经在TGS的缓存中避免重放攻击若原始请求中的网络地址不为空则比较源IP与TGT中的网络地址请求中的网络地址列表 若通过上述的TGS的检查项TGS会随机生成一个请求服务的Session Key简写为SSK。
7. TGS发送消息给Client消息为两条密文
第一条消息有TGS Session Key 加密包含内容 请求访问服务的ID/NAME时间戳验证过票据的有效期请求访问服务的Session Key 第二条消息Service Ticket由SSK加密包含内容 Client的ID/NAME请求访问服务的ID/NAMEClient的网络地址可以是多台机器的IP地址的列表如果想在任何一台机器上使用即为空时间戳有效票据的有效期请求访问服务的Session Key
8. Client处理TGS过来的消息
利用TGS Session Key解析第一条消息得到请求服务的Session KeyClient无法解密Service Ticket。
9. Client发送消息给Appcaition Server
请求服务的Service Ticket。由请求服务的Session Key加密的Authenticator消息包含 Client的ID/NAME时间戳
10. Appcaition Server验证Client的消息
APS利用自身的秘钥从Service Ticket中解析出SSK。再用解析出来的SSK从Authenticator中解析出Client信息。Appcaition Server检查项 比较Authenticator中的Client ID与Service Ticke中的Client ID比较Authenticator的时间戳与Service Ticke中的时间戳的差值2min以内2min属于可配置。检查Service Ticke是否过期检查Authenticator是否已经在Appcaition Server的缓存中避免重放攻击若原始请求中的网络地址不为空则比较源IP与Service Ticke中的网络地址请求中的网络地址列表 检查通过后Appcaition Serve将发送由SSK加密的消息给Client消息包含 Service ID时间戳
11. Client处理Appcaition Server过来的消息
Client使用缓存中的SSK解析消息得到消息中的Service ID和时间戳。校验消息的内容这个服务是不是Client需要访问的服务ID若校验通过则代表Client与Appcaition Server完成身份认证。继续使用缓存中的Service Ticke与Appcaition Server通信直到服务票据过期。 参考 Explain like I’m 5: Kerberos MIT Kerberos