1 Kerberos 介绍

Kerberos 这一名词来源于希腊神话 “三个头的狗——地狱之门守护者”。

系统设计上采用客户端/服务器结构与DES 加密技术,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止 replay 攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。

支持 SSO(Single Sign On),用户只需输入一次身份验证信息就可以凭借此验证获得的票据 (ticket-granting ticket) 访问多个服务。

由于在每个 Client 和 Service 之间建立了共享密钥,使得该协议具有相当的安全性。

2 认证原理解析

2.1 准备阶段

先看下图:

这里出现的角色有三个分别是:

KDC(Key Distribution Center)

Client

Service

其中 KDC 有两个服务:

AS (Authentication Server): 认证服务,用于签发 “Ticket-Granting Tickets” (TGT)

TGS(Ticket Granting Server): 许可证服务,用于签发 service tickets(各种服务的 tickets)

密钥两个:

KDC 与 Client 之间的共享密钥(密钥 A,其实就是用户密码)

KDC 与 Service 之间的共享密钥 (密钥 B)

2.2 认证过程

第一步:

用户发送自己的用户信息给 KDC,KDC 访问 AS 服务,获得 TGT,并用密钥 A 加密 TGT 以及一个 Session Key 给用户。用户得到加密数据后,使用密钥 A 解密得到 TGT 和 Session Key(这里简称为 SK)。

其中,TGT 用于第二步请求各种服务的 tickets;SK 主要用于 Service 对 Client 的身份鉴别,在步骤二中会体现。

第二步:

如图:

Client 将之前获得 TGT 和要请求的服务信息 (服务名等) 发送给 KDC,认证用户合法后,KDC 中的 TGS 将 SK(第一步中产生) 和用户名,用户地址(IP),服务名,有效期, 时间戳一起包装成一个 Ticket,并用密钥 B 加密,发送给 Client;

此时 Client 没有密钥 B 所以他无法查看 Ticket 中的内容,于是 Client 将 Ticket 直接转发给 Service。

同时 Client 将自己的用户名,用户地址(IP)打包成 Authenticator,用之前获得的 SK 加密也发送给 Service。

Service 收到 Ticket 后利用它与 KDC 之间的密钥 B 将 Ticket 中的信息解密出来,从而获得 SK 和用户名,用户地址(IP),服务名,有效期。然后再用 SK 将 Authenticator 解密从而获得用户名,用户地址(IP)将其与之前 Ticket 中解密出来的用户名,用户地址(IP)做比较,从而验证 Client 的身份。

如果 Service 有返回结果,将其返回给 Client。

2 KDC 安装

本文档中将 KDC 服务安装在 Cloudera Manager Server 所在服务器上(KDC 服务可根据自己需要安装在其他服务器)

测试环境测试时,kdc 安装在 dp199 机器上,cdh 在 dp197 上。

2.1 在 Cloudera Manager 服务器上安装 KDC 服务(可以在别的机器上装 kdc)

2.1.1 直接安装

[root@ip-172-31-6-148~]# yum -y --installroot=/usr/local install krb5-server krb5-libs krb5-auth-dialog krb5-workstation

2.1.2 源码安装

目前依赖的包都在 10.57.30.218 下。

cd /root/kdc/src

wget http://10.57.30.218:1080/downloads/gcc/gcc-c++.tar.gz

wget http://10.57.30.218:1080/downloads/krb5/byacc.tar.gz

wget http://10.57.30.218:1080/downloads/krb5/krb5-1.17.tar.gz

cd gcc

tar zxvf gcc-c++.tar.gz

cd gcc-c++

yum -y install *

tar zxf perl-5.30.0.tar.gz

cd perl-5.30.0

./Configure

#一路回车

make && make install

cd byacc-20190617

./configure --prefix=/usr/local/byacc

make && make install

cd krb5-1.17/src

./configure --prefix=/usr/local/krb5

make && make install

2.2 环境变量添加

ln -s /usr/local/byacc/bin/yacc /usr/local/bin/yacc

cat >> /etc/profile << EOF

KDC_HOME=/usr/local/krb5

PATH=$PATH:$KDC_HOME/bin:$KDC_HOME/sbin

EOF

source /etc/profile

3 KDC 配置

3.1 /etc/krb5.conf 配置

cat > /etc/krb5.conf << EOF

# Configuration snippets may be placed in this directory as well

includedir /etc/krb5.conf.d/

[logging]

default = FILE:/var/log/krb5libs.log

kdc = FILE:/var/log/krb5kdc.log

admin_server = FILE:/var/log/kadmind.log

[libdefaults]

default_realm = TONGDUN.COM

dns_lookup_realm = false

dns_lookup_kdc = false

ticket_lifetime = 24h

renew_lifetime = 7d

forwardable = true

# pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt

# default_realm = EXAMPLE.COM

# default_ccache_name = KEYRING:persistent:%{uid}

[realms]

TONGDUN.COM = {

kdc = k8s-01

admin_server = k8s-01

}

[domain_realm]

.k8s-01 = TONGDUN.COM

k8s-01= TONGDUN.COM

EOF

k8s-01 为主机别名,根据情况修改

TONGDUN.COM 为域名,统一

default_ccache_name 一定要屏蔽掉,否则会报错。

3.2 修改/usr/local/krb5/var/krb5kdc/kadm5.acl 配置

cat > /usr/local/krb5/var/krb5kdc/kadm5.acl <

*/admin@TONGDUN.COM *

EOF

其中 TONGDUN.COM 为之前配置的域名

3.3 /usr/local/krb5/var/krb5kdc/kdc.conf 配置

cat > /usr/local/krb5/var/krb5kdc/kdc.conf <

[kdcdefaults]

kdc_ports = 88

kdc_tcp_ports = 88

[realms]

TONGDUN.COM= {

#master_key_type = aes256-cts

master_key_type = aes256-cts

max_life = 1d 0h 0m 0s

max_renewable_life= 900d 0h 0m 0s

acl_file = /usr/local/krb5/var/krb5kdc/kadm5.acl

dict_file = /usr/share/dict/words

admin_keytab = /usr/local/krb5/var/krb5kdc/kadm5.keytab

supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal

}

EOF

3.4 krb5kdc 启动

[root@k8s-01 krb5kdc]# krb5kdc

3.5 kadmind 启动

[root@k8s-01 krb5kdc]# kadmind

4 创建 Kerberos 数据库

kdb5_util create –r TONGDUN.COM -s

此处需要输入 Kerberos 数据库的密码,测试中密码输入为 admin

5 创建 Kerberos 的管理账号

[root@k8s-01 src]# kadmin.local

Authenticating as principal root/admin@TONGDUN.COM with password.

kadmin.local: addprinc admin/admin@TONGDUN.COM

WARNING: no policy specified for admin/admin@TONGDUN.COM; defaulting to no policy

Enter password for principal "admin/admin@TONGDUN.COM":

Re-enter password for principal "admin/admin@TONGDUN.COM":

Principal "admin/admin@TONGDUN.COM" created.

kadmin.local: exit

[root@k8s-01 src]#

此处 admin/admin@TONGDUN.COM 为管理员账号,需要输入密码,测试中使用 admin 作为密码。

6 测试 Kerberos 的管理员账号

[root@k8s-01 krb5kdc]# kinit admin/admin@TONGDUN.COM

Password for admin/admin@TONGDUN.COM:

[root@k8s-01 krb5kdc]# klist

Ticket cache: FILE:/tmp/krb5cc_0

Default principal: admin/admin@TONGDUN.COM

Valid starting Expires Service principal

2019-07-25T14:34:33 2019-07-26T14:34:33 krbtgt/TONGDUN.COM@TONGDUN.COM

renew until 2019-07-25T14:34:33

7 kdc 日志查看

kdc 的日志有如下两个:

/var/log/kadmind.log

/var/log/krb5kdc.log

8 创建 princ 和 keytab 文件

创建自己输入密码的 princ:

addprinc admin/test@CY.TONGDUN.COM

创建随机密码的 princ:

addprinc -randkey admin/test@CY.TONGDUN.COM

创建 keytab(指定加密算法为 aes256):

ktadd -e aes256-cts:normal -k admintest1.keytab admin/test@CY.TONGDUN.COM

kdc服务器密码修改,KDC服务安装及配置 · ZHY ZONE相关推荐

  1. dns服务器zones文件,DNS服务安装与配置

    DNS域名解析服务器,dns服务器程序包名称为bind,程序名named. 安装DNS服务器:yum install bind -y 配置文件: /etc/named.conf        主配置文 ...

  2. 服务器数据库密码修改了,服务器密码修改后数据库

    服务器密码修改后数据库 内容精选 换一换 将GaussDB(DWS)提供的ODBC DRIVER(psqlodbcw.so)配置到数据源中便可使用.配置数据源需要配置"odbc.ini&qu ...

  3. 服务器密码修改后怎么生效,服务器密码修改后数据库

    服务器密码修改后数据库 内容精选 换一换 本章节介绍使用CDM整库迁移功能,将本地MySQL数据库迁移到云服务RDS中.当前CDM支持将本地MySQL数据库,整库迁移到RDS上的MySQL.Postg ...

  4. 服务器 安装协议,服务器网管协议的安装与配置

    服务器网管协议的安装与配置 内容精选 换一换 Joomla是一套全球知名的内容管理系统,即Joomla CMS(Content Management System).Joomla是使用PHP语言加上M ...

  5. 025-Cinder服务--安装并配置一个本地存储节点(ISCSI)

    一:Cinder提供块级别的存储服务,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和卷类型的功能,块存储服务通常包含下列组件: ci ...

  6. NFS服务安装与配置方案

    NFS服务搭建方案 一.NFS简介 NFS它是Network File system 的缩写,即网络文件系统,我们可以通过NFS达到文件的共享,NFS 服务器设置一个共享目录或者文件给NFS 客户机, ...

  7. KDC服务安装及配置

    KDC服务安装在Cloudera Manager Server所在服务器上(KDC服务可根据自己需要安装在其他服务器) 1.在Cloudera Manager服务器上安装KDC服务: yum -y i ...

  8. win7系统ftp服务器密码修改,win7 ftp服务器密码

    win7 ftp服务器密码 内容精选 换一换 本章主要介绍了如何使用AMH搭建网站.该指导具体操作以搭建DEDECMS系统为例.如果需要用IP访问,将IP地址填在域名栏里即可添加虚拟主机01本示例上传 ...

  9. 网站ftp服务器密码修改,ftp服务器忘记密码修改

    ftp服务器忘记密码修改 内容精选 换一换 远程登录的账号和密码是多少?登录云服务器的用户名和密码:Windows操作系统用户名:AdministratorLinux操作系统用户名:root登录云服务 ...

  10. linux7创建vsftp服务器,Centos 7 FTP(vsftp)服务安装及配置

    作为前端工程师,要想在中国有一席之地,你不得不作出不可能的努力,把自己变成一个全能的人.你不仅仅要会 HTML.CSS.JavaScript.PhotoShop.Node.js.Angular.js. ...

最新文章

  1. 生成随机验证图片--ASP.NET中常用代码之二
  2. UWP crop image control
  3. Algs4-2.1.37部分有序
  4. 微信小程序——获取所有资讯接口数据
  5. python3 的 str bytes 区别
  6. Angular中数据文本绑定、绑定Html、绑定属性、双向数据绑定的实现方式
  7. python文本词频统计是字典吗_Python文本挖掘: 词频统计,词云图
  8. 微信小程序视频弹幕效果
  9. 年近而立,Java何去何从?
  10. matlab 输入方程组,弱弱地问,如何输入以下方程组?
  11. Android ------ handler 异步处理消息
  12. fcpx教程,如何在 final cut pro 中导出视频的图文?
  13. 小程序坑 redirectTo 计时器 setInterval clearInterval
  14. GPS Programming Tips for Windows Mobile
  15. 怎么把java文件编译为class文件
  16. aardio部署_用aardio给python写个图形界面
  17. Linux开放MySql 3306端口
  18. 什么是FD.IO/VPP?
  19. BIM技术在住宅园区物业管理中的应用及其优势
  20. js序列化与反序列化和C#中json序列化与反序列化

热门文章

  1. 世界级软件平台企业,永洪科技要的就是这个范儿
  2. 解决mangos60级后生命值为什么不变
  3. 有线路由器加无线路由器的组网方法
  4. 国外的一个网站不能够访问
  5. c语言小游戏 贪吃蛇
  6. 2021年9月基因编辑/CRISPR最新研究进展
  7. Unity的C#编程教程_17_Variables 挑战 3 折扣计算器
  8. Vue 中使用Echarts构建3D地球
  9. 《一个广告人的自白》读书笔记
  10. 一文学会Maven私服的搭建