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

1 Kerberos 介绍

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

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

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

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

2 认证原理解析

2.1 准备阶段

先看下图:

f9c6a8c35b401f9986b5cfae4fecf69a.png

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

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 的身份鉴别,在步骤二中会体现。

第二步:

如图:

6f1cd629392ef174fdb401cb1c9702e5.png

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值