热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Kerberos安装教程及使用详解

Kerberos协议主要用于计算机网络的身份鉴别(Authentication),其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-grantingticket)访问多个服务。这篇文章主要介绍了Kerberos安装教程及使用详解的相关资料,需要的朋友可以参考下

Kerberos协议:

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

2. 安装 Kerberos

2.1. 环境配置

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

  主机名 内网IP 角色

Vmw201 172.16.18.201 Master KDC
Vmw202 172.16.18.202 Kerberos client
Vmw203 172.16.18.203 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表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,

对安全认证的服务的后续访问则会失败。
[realms]:列举使用的realm。

kdc:代表要kdc的位置。格式是 机器:端口

admin_server:代表admin的位置。格式是机器:端口

default_domain:代表默认的域名

[appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。

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中的文件保持一致即可。

3. 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

以上所述是小编给大家介绍的Kerberos安装教程及使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


推荐阅读
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • 深入解析:存储技术的演变与发展
    本文探讨了从单机文件系统到分布式文件系统的存储技术发展过程,详细解释了各种存储模型及其特点。 ... [详细]
  • 本文介绍如何通过整合SparkSQL与Hive来构建高效的用户画像环境,提高数据处理速度和查询效率。 ... [详细]
  • 大数据领域的职业路径与角色解析
    本文将深入探讨大数据领域的各种职业和工作角色,帮助读者全面了解大数据行业的需求、市场趋势,以及从入门到高级专业人士的职业发展路径。文章还将详细介绍不同公司对大数据人才的需求,并解析各岗位的具体职责、所需技能和经验。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 本文详细介绍了 `org.apache.hadoop.hdfs.server.namenode.FSNamesystem.shouldUseDelegationTokens()` 方法的用途和实际应用场景,并提供了多个代码示例以帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文介绍了如何在 MapReduce 作业中使用 SequenceFileOutputFormat 生成 SequenceFile 文件,并详细解释了 SequenceFile 的结构和用途。 ... [详细]
  • Hadoop Datanode DataXceiver 错误处理问题
    Ambari 每分钟会向 Datanode 发送一次“ping”请求以确保其正常运行。然而,Datanode 在处理空内容时没有相应的逻辑,导致出现错误。 ... [详细]
  • 本文介绍了Hadoop的核心组件,包括高可靠性和高吞吐量的分布式文件系统HDFS、分布式的离线并行计算框架MapReduce、作业调度与集群资源管理框架YARN以及支持其他模块的工具模块Common。 ... [详细]
  • Linux 防火墙与端口管理必备命令
    在使用 Linux 系统进行服务部署和问题排查时,防火墙和端口管理是不可或缺的操作。本文将详细介绍如何查看防火墙状态、端口占用情况,以及如何开放和关闭端口,帮助初学者更好地掌握这些技能。 ... [详细]
  • 通过马老师的视频学习了Java中的容器相关内容,包括Collection、Set、List、Map及其常见实现类,并深入了解了这些容器的基本操作方法。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
author-avatar
小涵竹叶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有