[From] https://blog.csdn.net/lovebomei/article/details/79807484

1.Kerberos协议: 
Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On)。由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性

2.1. 环境配置

  安装kerberos前,要确保主机名可以被解析。

主机名     内网IP        角色
cdh1 192.168.60.19 master KDC
cdh2 192.168.60.20 kerberos client
cdh3 192.168.60.21 kerberos client

2.2 Configuring a Kerberos Server

2.2.1 确保环境可用

  确保所有的clients与servers之间的时间同步以及DNS正确解析

2.2.2 选择一个主机来运行KDC,并在该主机上安装krb-5libs,krb5-server,已经krb5-workstation:

yum install krb5-server krb5-libs krb5-auth-dialog

KDC的主机必须非常自身安全,一般该主机只运行KDC程序。本文中我们选择vmw201作为运行KDC的主机。 
在安装完上述的软件之后,会在KDC主机上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf,它们分别反映了realm name 以及 domain-to-realm mappings。

2.2.3 配置kdc.conf

默认放在 /var/kerberos/krb5kdc/kdc.conf。或者通过覆盖KRB5_KDC_PROFILE环境变量修改配置文件位置。

配置示例:

[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
HADOOP.COM = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
max_renewable_life = 7d
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}

说明:

HADOOP.COM:是设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。 
max_renewable_life = 7d 涉及到是否能进行ticket的renwe必须配置。 
master_key_type:和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,更多参考2.2.9关于AES-256加密:。推荐不使用。 
acl_file:标注了admin的用户权限。文件格式是 
Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。 
admin_keytab:KDC进行校验的keytab。后文会提及如何创建。 
supported_enctypes:支持的校验方式。注意把aes256-cts去掉。

2.2.4 配置krb5.conf

/etc/krb5.conf: 包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。

配置示例:

[logging]
default=FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = HADOOP.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
# udp_preference_limit = 1
[realms]
HADOOP.COM = {
kdc = vmw201
admin_server = vmw201
}
[domain_realm]
.hadoop.com = HADOOP.COM
hadoop.com = HADOOP.COM

说明:

[logging]:表示server端的日志的打印位置 
[libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置 
default_realm = HADOOP.COM 默认的realm,必须跟要配置的realm的名称一致。 
udp_preference_limit = 1 禁止使用udp可以防止一个Hadoop中的错误 
oticket_lifetime表明凭证生效的时限,一般为24小时。 
orenew_lifetime表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后, 
对安全认证的服务的后续访问则会失败。 
kdc:代表要kdc的位置。格式是 机器:端口 
admin_server:代表admin的位置。格式是机器:端口 
default_domain:代表默认的域名

2.2.5 创建/初始化Kerberos database

初始化并启动:完成上面两个配置文件后,就可以进行初始化并启动了。

[root@vmw201 ~]# /usr/sbin/kdb5_util create -s -r HADOOP.COM

其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);还可以用[-r]来指定一个realm name —— 当krb5.conf中定义了多个realm时才是必要的。

保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可

在此过程中,我们会输入database的管理密码。这里设置的密码一定要记住,如果忘记了,就无法管理Kerberos server。

当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:

kadm5.acl 
kdc.conf 
principal 
principal.kadm5 
principal.kadm5.lock 
principal.ok

2.2.6 添加database administrator

我们需要为Kerberos database添加administrative principals (即能够管理database的principals) —— 至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。

在maste KDC上执行:

[root@vmw201 /]# /usr/sbin/kadmin.local -q "addprinc admin/admin"

并为其设置密码

kadmin.local

可以直接运行在master KDC上,而不需要首先通过Kerberos的认证,实际上它只需要对本 
地文件的读写权限。

2.2.7 为database administrator设置ACL权限

在KDC上我们需要编辑acl文件来设置权限,该acl文件的默认路径是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。Kerberos的kadmind daemon会使用该文件来管理对Kerberos database的访问权限。对于那些可能会对pincipal产生影响的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。

我们现在为administrator设置权限:将文件/var/kerberos/krb5kdc/kadm5.acl的内容编辑为

*/admin@HADOOP.COM 
代表名称匹配/admin@HADOOP.COM 都认为是admin,权限是 。代表全部权限。

2.2.8 在master KDC启动Kerberos daemons

手动启动:

[root@vmw201 /]# service krb5kdc start
[root@vmw201 /]# service kadmin start

设置开机自动启动:

[root@vmw201 /]# chkconfig krb5kdc on
[root@vmw201 /]# chkconfig kadmin on

现在KDC已经在工作了。这两个daemons将会在后台运行,可以查看它们的日志文件(/var/log/krb5kdc.log 和 /var/log/kadmind.log)。 
可以通过命令kinit来检查这两个daemons是否正常工作。

2.2.9关于AES-256加密

对于使用 centos5. 6及以上的系统,默认使用 AES-256 来加密的。这就需要集群中的所有节点上安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。 
下载的文件是一个 zip 包,解开后,将里面的两个文件放到下面的目录中:$JAVA_HOME/jre/lib/security

2.3 Configuring Kerberos Clients

2.3.1 Installing Kerberos Client(CentOS7可以省略此步骤)

在另外两台主机(vmw202,vmw203)上安装kerberos客户端。

yum install krb5-workstation krb5-libs krb5-auth-dialog

2.3.2 配置krb5.conf

配置这些主机上的/etc/krb5.conf,这个文件的内容与KDC中的文件保持一致即可。

  1. kerberos的日常操作与常见问题

3.1 管理员操作

3.1.1 登录

登录到管理员账户: 如果在本机上,可以通过kadmin.local直接登录。其它机器的,先使用kinit进行验证。 
 

3.1.2增删改查账户

在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。

kadmin.local: addprinc test
kadmin.local: delprinc test
kadmin.local: listprincs

3.1.3生成keytab:使用xst命令或者ktadd命令

kadmin:xst -k /xxx/xxx/kerberos.keytab hdfs/hadoop1

3.2 用户操作

3.2.1 查看当前的认证用户

3.2.3 认证用户

kinit -kt /xx/xx/kerberos.keytab hdfs/hadoop1

3.2.4 删除当前的认证的缓存

kdestroy

3.3 常见问题

3.3.1 查看ticket是否是renewable

通过klist命令来查看 

如果Valid starting的值与renew until的值相同,则表示该principal的ticket 不是 renwable。

3.3.2 ticket无法更新

如果过了Expires,可以通过命令kinit –R来更新ticket 
但如果ticket无法更新

[root@vmw201 ~]$ kinit -R
kinit: Ticket expired while renewing credentials

这是因为krbtgt/HADOOP.COM@ HADOOP.COM的[renewlife]被设置成了0,这一点可以通过[kadmin.local => getprinc krbtgt/ HADOOP.COM @ HADOOP.COM]看出来。

将krbtgt/HADOOP.COM@HADOOP.COM的[renewlife]修改为7days即可,方法

kadmin.local: modprinc -maxrenewlife 1week krbtgt/HADOOP.COM@HADOOP.COM

tips:配置JCE,这是因为CentOS6.5及以上系统默认使用AES-256加密,因此需要所有节点安装并配置JCE,JCE下载路径: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

[root@cent-1 UnlimitedJCEPolicyJDK8]# ll
total 16
-rw-rw-r--. 1 root root 3035 Dec 21 2013 local_policy.jar
-rw-r--r--. 1 root root 7323 Dec 21 2013 README.txt
-rw-rw-r--. 1 root root 3023 Dec 21 2013 US_export_policy.jar
[root@cent-1 security]# cp /home/centos/UnlimitedJCEPolicyJDK8/ /usr/java/jdk1.8.0_11/jre/lib/security/
local_policy.jar README.txt US_export_policy.jar
[root@cent-1 security]# cp /home/centos/UnlimitedJCEPolicyJDK8/US_export_policy.jar /usr/java/jdk1.8.0_11/jre/lib/security/
cp: overwrite `/usr/java/jdk1.8.0_11/jre/lib/security/US_export_policy.jar'? y
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lovebomei/article/details/79807484

[转] kerberos安装配置与使用的更多相关文章

  1. kerberos安装配置

    目录 前言 服务端安装 组件安装 配置krb5.conf 配置kdc.conf 配置kadm5.acl 创建kdc数据库 在server端创建一个管理员账号,方便远程登录管理kerberos 正式启动 ...

  2. 【大数据安全】Kerberos集群安装配置

    1. 概述 Kerberos是一种计算机网络认证协议,它允许某实体在非安全网络环境下通信,向另一个实体以一种安全的方式证明自己的身份.它也指由麻省理工实现此协议,并发布的一套免费软件.它的设计主要针对 ...

  3. Kerberos+SSH安装配置使用教程

    一.背景说明 最早听说KDC和Kerberos应该是大三的<应用密码学>,当时感觉这套对称密钥分发机制比非对称密钥的PKI分发机制要好理解.但几年下来由于现实中使用SSL的场景比较比(主要 ...

  4. Kerberos安装及使用

    转载请注明出处:http://www.cnblogs.com/xiaodf/ 2. 安装 Kerberos2.1. 环境配置 安装kerberos前,要确保主机名可以被解析. 主机名 内网IP 角色 ...

  5. MongoDB C Driver and APIinstances linux MongoDB安装配置

    <一,linux平台MongoDB安装配置>在这我们使用的Centos6 yum部署的,你想搞编译,自个干!

  6. Kerberos主从配置文档

    Kerberos主从配置文档   1. Kerberos主从同步机制 在Master上通过以下命令同步数据: kdb5_util dump /var/kerberos/krb5kdc/slave_db ...

  7. kerberos系列之kerberos安装

    最近搞了一下kerberos,准备写一个系列,介绍kerberos的安装,和常用组件kerberos配置,今天进入第一篇:kerberOS安装 具体kerberos是什么东西,大家可以百度查一下,这里 ...

  8. Hive安装配置指北(含Hive Metastore详解)

    个人主页: http://www.linbingdong.com 本文介绍Hive安装配置的整个过程,包括MySQL.Hive及Metastore的安装配置,并分析了Metastore三种配置方式的区 ...

  9. Hive on Spark安装配置详解(都是坑啊)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...

随机推荐

  1. win10 家庭版使用注册表关闭windows defender

    管理员身份运行 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /v " ...

  2. Web测试实践-任务进度-Day02

    小组成员 华同学.郭同学.覃同学.刘同学.穆同学.沈同学 任务进度 在经过任务分配阶段后,大家都投入到了各自的任务中,以下是大家今天任务的进度情况汇总. 华同学 & 刘同学(任务1) 1.对爱 ...

  3. twitter集成第三方登录是窗口一直出现闪退的解决方法

    需要创建自己的token,如下图

  4. [GO]revoer的应用

    error的函数只是用来报一些低等级的错误,panic是报那些会导致程序崩溃的错误,但是会有一个问题就是panic也会导致程序中断 ,如果我们需要程序在报错之后继续运行并报出错误的信息 就需要使用到r ...

  5. C# 集合的使用List<T>的使用

    C# List<T>用法 所属命名空间:using System.Collections.Generic; List<T>类是  ArrayList 类的泛型等效类. 该类使用 ...

  6. HDU 6007 Mr. Panda and Crystal (背包+spfa)

    题意:你生活在一个魔法大陆上,你有n 魔力, 这个大陆上有m 种魔法水晶,还有n 种合成水晶的方式,每种水晶价格告诉你,并且告诉你哪些水晶你能直接造出来,哪些你必须合成才能造出来,问你n魔力最多能卖多 ...

  7. 【Android开发精要笔记】Android的Intent机制

    Android的Intent机制 Intent对象的作用和构成 android意图机制最核心的设计思想,就是引入了组件管理服务作为连接组件的管理者. 该服务的作用: 通过组件的配置信息了解系统中每个组 ...

  8. APUE(3)---文件I/O (3)

    十二.函数sync.fsync和fdatasync 延迟写:传统的Unix系统在内核中设有缓冲区或页高速缓冲,大多数磁盘I/O都通过缓冲区进行,当我们向文件写入数据时,内核通常先将数据复制到缓冲区,然 ...

  9. Maven整理笔记のMaven使用

    POM 就像Make的Makefile,Ant的build.xml一样,Maven项目的核心是pom.xml.POM(Project Object Model项目对象模型),定义了项目的基本信息,用于 ...

  10. jQuery控制iframe框架内元素

    用jQuery在IFRAME里取得父窗口的某个元素的值只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮$(window.frames[" ...