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

交互过程

  1. client向KDS发用户名和服务端名称
  2. KDC回应TGT,使用用户密码加密;
  3. client输入密码,解密TGT
  4. 到手的TGT,用来和KDC通信(我已经有TGT了,属于被你信任的列表中,给我我想要的东西吧),进一步获取service tickets. img:k1.jpg
  5. KDC返回用户service tickets,
  6. 用户拿service tickets和Server通信,请求授权;
  7. 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?

准备工作:

  1. Configure NTP (time synchronization) across all machines
  2. Configure DNS
  3. Configuration files

    – /etc/krb5.conf – /etc/kadm5.acl

  4. Prepare the Kerberos database – Initialize the Kerberos database – Add administrator’s principal – Start the KDC and KDC administration processes

  5. 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是怎么工作的?的更多相关文章

  1. 图解Kerberos认证工作原理

    本文是我在看了这篇英文说明之后的总结 https://technet.microsoft.com/zh-cn/library/cc961976.aspx 是总结,不是翻译,所以是我看后按自己的理解写的 ...

  2. HBase + Kerberos 配置示例(一)

    用过hbase的朋友可能都有过这样的疑问,我写一个java client,好像就提供了zookeeper quorum地址就连上hbase了,那么是不是存在安全问题?的确是,如何解决?hbase中引入 ...

  3. Kerberos的基本概念

    1.Princal(安全个体):被认证的个体,有一个名字和口令.(客户端或者服务端) 2.KDC(key  distribution center):是一个网络服务,提供ticket和临时会话密钥. ...

  4. Kerberos和NTLM - SQL Server

    当我们使用Windows Authentication去连接SQL Server的时候,SQL Server可能会使用Kerberos或者是NTLM来进行认证,有时间就会因为认证失败的缘故造成各种登录 ...

  5. [转帖]Kerberos和NTLM - SQL Server

    Kerberos和NTLM - SQL Server https://www.cnblogs.com/dreamer-fish/p/3458425.html 当我们使用Windows Authenti ...

  6. 深入详解windows安全认证机制ntlm&Kerberos

    0x01 为什么要理解windows 安全认证机制: 加深对后续各种漏洞利用的理解深度,还是那句话,要知其然,更要知其所以然,不废话,咱们直接开始 0x02 windows认证协议主要有以下两种: 基 ...

  7. Kerberos认证浅析

    1 引言 在希腊神话中Kerberos是守护地狱之门的一条凶猛的三头神犬,而我们在本文中所要介绍的Kerberos认证协议是由美国麻省理工学院(MIT)首先提出并实现的,是该校雅典娜计划的一部分.这个 ...

  8. 开源认证组件汇总 Kerberos和CAS

    一.Kerberos 1.Kerberos原理和工作机制 概述:Kerberos的工作围绕着票据展开,票据类似于人的驾驶证,驾驶证标识了人的信息,以及其可以驾驶的车辆等级. 1.1 客户机初始验证   ...

  9. Kerberos基本原理、安装部署及用法

    1. 概述 Kerberos是一种认证机制. 目的是,通过密钥系统为客户端/服务器应用程序提供强大的认证系统:保护服务器防止错误的用户使用,同时保护它的用户使用正确的服务器,即支持双向验证:Kerbe ...

随机推荐

  1. 关于C#垃圾回收

    1.C#垃圾收集器(GC)原理 在C#中托管的资源是无法由程序员管理的,创建销毁都要通过GC来执行.但垃圾收集器有个特点,它是懒惰的,它并不会在变量出了作用域和生命期后立即回收,而是在它认为适当的时候 ...

  2. JavaScript在A页面判断B页面加载完毕(iframe load)

    今天遇到一个需求,在A页面上判断B页面是否加载完毕(B页面是第三方页面),加载完毕时隐藏loading动画... 而平时我们一般做的事是在B页面上判断B页面是否加载完毕,进行操作. if(docume ...

  3. csuoj 1392: Number Trick

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1392 1392: Number Trick Time Limit: 1 Sec  Memory L ...

  4. TortoiseGit 连接oschina不用每次输入用户名和密码的方法

    每次git clone 和push 都要输入用户名和密码.虽然安全,但在本机上每次都输有些麻烦,如何记住用户名和密码呢? 在网上看了各种方法,太杂,很多可能环境不一样,一直行不通.最后找到一种有效的方 ...

  5. PHP扩展开发及内核应用

    目录中汉字部分代表已经翻译完成的章节,带链接的表示已经发布的,未待链接的表示正在校正即将发布的. PHP的生命周期 让我们从SAPI开始 PHP的启动与终止 PHP的生命周期 线程安全 小结 PHP变 ...

  6. simvision使用

    Access Design Source Code: 1)通过file---open来打开, 2)通过send to source viewer来看, 双击信号,进行driver的trace,显示在左 ...

  7. 很久以前写的一个 ShareRestrictedSD 类

    代码中一开始的 几个 USES 单元,可能是多余的. unit ShareRestrictedSD; interface uses Windows, Messages, SysUtils, Class ...

  8. rabbitmq 小记

    如果消息由生产者生产之后,没有消费端来消费(此处生产者也负责队列的创建) 在超时之后需要对消息进行删除(如果一直保留队列里,在消费端启动后消费了此消息,会和生产端的数据产生冲突,添加程序的复杂度) 因 ...

  9. openWrt 安装与实践 II

    1. 启动ubuntu上面的openwrt虚拟机之后, 设置一下虚拟机的网卡: 第1个网卡: Host-only 第2个网卡: NAT 2. 查看网络配置: root@OpenWrt:/etc/con ...

  10. java 建造者模式

    package de.bvb.test3; /** * 建造者模式: 假如一个类有4个字段,每个字段或者每几个字段的组合都需要设置为构造函数,构造函数就比较麻烦 * 而且如果再加一个字段进去也不好拓展 ...