Kerberos是怎么工作的?
Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。 采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。
关键要素
KDC:Key Distribution Center – Each user and service shares a secret key with the KDC – The KDC generates and distributes session keys – Communicating parties prove to each other that they
KDC 包含两部分:
– Authentication Server (AS) ● Issues “Ticket-Granting Tickets” (TGT) – Ticket Granting Server (TGS) ● Issues service tickets
交互过程
- client向KDS发用户名和服务端名称
- KDC回应TGT,使用用户密码加密;
- client输入密码,解密TGT
- 到手的TGT,用来和KDC通信(我已经有TGT了,属于被你信任的列表中,给我我想要的东西吧),进一步获取service tickets. img:k1.jpg
- KDC返回用户service tickets,
- 用户拿service tickets和Server通信,请求授权;
- server端授权完成,建立session;
交互流程图: 
用户命令
- kinit # 与KDC通信,请求授权
- klist # 查看已授权列表
colin@n6-131-078:~$ klist
Ticket cache: FILE:/tmp/krb5cc_1098
Default principal: colin@XXX.COM
Valid starting Expires Service principal
06/21/2016 11:43:29 06/22/2016 11:43:26 krbtgt/BYTEDANCE.COM@BYTEDANCE.COM # TGT
06/21/2016 11:43:45 06/22/2016 11:43:26 host/10.2.26.137@ # host service ticket
06/21/2016 11:43:45 06/22/2016 11:43:26 host/10.2.26.137@BYTEDANCE.COM
Kerberos principals
Clients (users or services) are identified by “principals” Principals look like: primary/instance@realm
– Primary: user or service name – Instance: optional for user principals, but required for service principals – Realm: the Kerberos realm
Examples:
– User: joe@FOO.COM – Service: imap/bar.foo.com@FOO.COM
如何搭建一个Kerberos KDC?
准备工作:
- Configure NTP (time synchronization) across all machines
- Configure DNS
Configuration files
– /etc/krb5.conf – /etc/kadm5.acl
Prepare the Kerberos database – Initialize the Kerberos database – Add administrator’s principal – Start the KDC and KDC administration processes
- Create user principals – Note: service principals are created when configuring your other services to support Kerberos authentication
如何搭建一个Kerberos 客户端?
Configuration file /etc/krb5.conf You can just copy this from the KDC
- Service principals
- PAM (Pluggable Authentication Modules) (重点是这个,我们需要配置登录到服务器,就配置这个) – Needed if you want to be able to authenticate users logging into this machine via Kerberos
参考
- http://www.logicprobe.org/~octo/pres/pres_kerberos.pdf
- http://web.mit.edu/kerberos/krb5-1.12/doc/index.html
Kerberos是怎么工作的?的更多相关文章
- 图解Kerberos认证工作原理
本文是我在看了这篇英文说明之后的总结 https://technet.microsoft.com/zh-cn/library/cc961976.aspx 是总结,不是翻译,所以是我看后按自己的理解写的 ...
- HBase + Kerberos 配置示例(一)
用过hbase的朋友可能都有过这样的疑问,我写一个java client,好像就提供了zookeeper quorum地址就连上hbase了,那么是不是存在安全问题?的确是,如何解决?hbase中引入 ...
- Kerberos的基本概念
1.Princal(安全个体):被认证的个体,有一个名字和口令.(客户端或者服务端) 2.KDC(key distribution center):是一个网络服务,提供ticket和临时会话密钥. ...
- Kerberos和NTLM - SQL Server
当我们使用Windows Authentication去连接SQL Server的时候,SQL Server可能会使用Kerberos或者是NTLM来进行认证,有时间就会因为认证失败的缘故造成各种登录 ...
- [转帖]Kerberos和NTLM - SQL Server
Kerberos和NTLM - SQL Server https://www.cnblogs.com/dreamer-fish/p/3458425.html 当我们使用Windows Authenti ...
- 深入详解windows安全认证机制ntlm&Kerberos
0x01 为什么要理解windows 安全认证机制: 加深对后续各种漏洞利用的理解深度,还是那句话,要知其然,更要知其所以然,不废话,咱们直接开始 0x02 windows认证协议主要有以下两种: 基 ...
- Kerberos认证浅析
1 引言 在希腊神话中Kerberos是守护地狱之门的一条凶猛的三头神犬,而我们在本文中所要介绍的Kerberos认证协议是由美国麻省理工学院(MIT)首先提出并实现的,是该校雅典娜计划的一部分.这个 ...
- 开源认证组件汇总 Kerberos和CAS
一.Kerberos 1.Kerberos原理和工作机制 概述:Kerberos的工作围绕着票据展开,票据类似于人的驾驶证,驾驶证标识了人的信息,以及其可以驾驶的车辆等级. 1.1 客户机初始验证 ...
- Kerberos基本原理、安装部署及用法
1. 概述 Kerberos是一种认证机制. 目的是,通过密钥系统为客户端/服务器应用程序提供强大的认证系统:保护服务器防止错误的用户使用,同时保护它的用户使用正确的服务器,即支持双向验证:Kerbe ...
随机推荐
- LL谱面分析和难度标定
LL谱面分析和难度标定 先介绍一下LL谱面的存储方式:TimeLine序列(简称TL序列),TL序列中的每一个元素(即音符)可以由一个C语言中的结构体来表示: struct note{ int lin ...
- java 日期转时间戳,时间戳转为日期
package date; import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Dat ...
- z-index
1.定位对象能够遮盖非定位对象,除非定位对象的z-index值为负数. 2.同层级定位对象z-index大的能够覆盖z-index值小的. 2.1 同层级的子集相互比较要先看父集(即同层级)的大小; ...
- javaSE第三篇
1.classpath: set classpath = 类路径 用来找class文件 set classpath = .;(默认表示当前路径 2.数组的拷贝 方法一:Arrays.copyOf( ...
- Linux编译源码的方式安装Qt4开发环境(基于Ubuntu系统)
1.到官网http://qt-project.org/downloads或者ftp://ftp.qt-project.org/上下载Qt的源码包,要安装当然要先有源码咯,我下载的是qt-everywh ...
- vsftpd.conf
引用:http://www.linuxidc.com/Linux/2012-08/67389.htm 研究嵌入式开发,开始使用的是Linux平台,用的是Ubuntu环境,但是发现Ubuntu的图形界面 ...
- IUS database
仿真中的database主要存放关于signal transition以及时间点的信息. IUS中的的database包括: 1) SHM, Verilog/VHDL/mixed-language的d ...
- C# byte数组与Image的相互转换
功能需求: 1.把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库. 2.把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示. 3.从图片byte ...
- C++预定义字符函数
利用 get 成员函数可读取文件中的一切字符,包括空白字符.文件结尾.用 >> 读取文件,会自动忽略空白字符(空格.换行符.制表符) C++ 预定义的字符函数(均在 cctype 库中定义 ...
- 修改项目生成Gemfile的模板
修改项目生成Gemfile的模板 gedit $rvm_path/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/generators/rails/app/ ...