【大数据安全-Kerberos】Kerberos-Windows本地认证

爱被打了一巴掌 2023-10-08 22:38 177阅读 0赞

【大数据安全-Kerberos】Kerberos-Windows本地认证

  • 1)文档编写目的
  • 2)Kerberos 安装
  • 3)Windows 中测试认证
    • 3.1.认证前的准备
    • 3.2.工具认证
    • 3.3.命令行认证
      • 3.3.1.通过密码认证
      • 3.3.2.通过 keytab 文件认证
  • 4)配置 FireFox 浏览器访问
  • 5)测试访问集群服务
    • 5.1.测试访问HDFS和Yarn
    • 5.2.keytab 合并使用
  • 6)总结

1)文档编写目的

在使用 CDH 的过程中,集群启用了 Kerberos 认证后,集群中的一些组件的 Web UI 也会启用 Kerberos 认证,例如 HDFS、Yarn、Hive 等组件,此时如果在 Windows 上对这些页面进行访问,是无法正常访问的,需要在 Windows 本地安装 Kerberos 客户端,并进行配置后才能够访问这些需要 Kerberos 认证的 Web UI,本文档将介绍如何在 Windows 10安装 Kerberos 客户端并配置 FireFox 浏览器访问 CDH 集群组件的 Web UI。

Kerberos详情可参考:【大数据安全-Kerberos】一篇文章搞定Kerberos认证

2)Kerberos 安装

(1)在Kerberos官网下载安装包,下载地址:http://web.mit.edu/kerberos/dist/

在这里插入图片描述

(2)本文档下载了64位的 安装包,下面按步骤进行安装

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(3)配置文件:C:\ProgramData\MIT\Kerberos5\krb5.ini

将安装 KDC Server 的服务器上的 /etc/krb5.conf 配置文件中的部分内容拷贝到该文件中。

在这里插入图片描述

注意:

不要直接替换 krb5.ini 文件,否则会出现文件格式问题,建议拷贝部分内容到 krb5.ini 文件中,同时注意内容格式,最好使用 Notepad 进行编辑,每行内容都定格编写,否则可能出现找不到 default realm 的情况,然后保存文件

(4)配置完成后,启动MIT Kerberos客户端,如下图所示:

在这里插入图片描述

(5)因为此工具的 kinit 命令可能与其他环境变量冲突,所以需要将此环境变量移动至最前面:

在这里插入图片描述

3)Windows 中测试认证

可以使用两种方式进行认证:

  • 直接使用上面安装的工具认证
  • 通过windows中的cmd命令认证

3.1.认证前的准备

(1)在 KDC Server 上创建一个用户(后面登录时需要用户名称):

执行命令:

1、进入kerberos 控制台:kadmin.local

2、创建 kerberos 用户:addprinc + 用户名

在这里插入图片描述

(2)测试正常:

在这里插入图片描述

(3)在 KDC Server 上生成keytab文件:

执行命令:

1、进入kerberos 控制台:kadmin.local

2、生成 keytab 文件:xst -norandkey -k + 想要生成的key文件名称(必须以.keytab为后缀) + principal(用户名 + @XXX.COM)

在这里插入图片描述

(4)测试 keytab 文件:

在这里插入图片描述

注意:

可能会出现 Bad encryption type 问题,在生成 Keytab 文件时指定 encyption 类型,使用参数 -e encryption type,多个 encyption 类型以逗号分隔,如果是使用的 MIT Kerberos 按上述方式使用 xst 来生成,如果使用的 kdc 是 freeIPA 方式,使用下面的命令来生成:

ipa-getkeytab -s <kdc server hostname> -p <principal name> -k <输出的keytab文件完整路径> -e aes128-cts-hmac-sha1-96, des3-cbc-sha1, arcfour-hmac

3.2.工具认证

(1)在 Winodw 端,通过 MIT Kerberos 客户端 Get Ticket:

principal用户名 + @XXX.COM

在这里插入图片描述

(2)在如下列表中可以看到获取的 ticket:

在这里插入图片描述

(3)销毁获取到的Ticket:

在这里插入图片描述

在这里插入图片描述

3.3.命令行认证

3.3.1.通过密码认证

(1)windows+R 搜索 cmd 进入 windows 命令黑窗口:

在这里插入图片描述

(2)命令行下初始化(需要输入密码):

在这里插入图片描述

(3)通过工具可以查看到已经成功完成认证:

在这里插入图片描述

3.3.2.通过 keytab 文件认证

(1)将服务器上的 keytab 文件(如果没有,可通过上面准备工作中的步骤生成)保存至 windows 本地

(2)windows+R 搜索 cmd 进入 windows 命令黑窗口:

在这里插入图片描述

(3)命令行下初始化(无需输入密码):

执行命令:kinit -kt keytab文件所在绝对路径\xxx.keytab 用户名@XXX.COM

在这里插入图片描述

(4)通过工具可以查看到已经成功完成认证:

在这里插入图片描述

(5)命令行下 kdestroy,客户端也同步进行票据的销毁:

在这里插入图片描述

在这里插入图片描述

4)配置 FireFox 浏览器访问

(1)打开 FireFox 浏览器,在地址栏输入about:config

在这里插入图片描述

(2)修改配置:

1、network.negotiate-auth.trusted-uris = cdh178.macro.com,cdh177.macro.com,cdh176.macro.com

2、network.auth.use-sspi = false

在这里插入图片描述

注意:

network.negotiate-auth.trusted-uris 这个参数配置的是访问服务的 hostname,配置多个的话以 “,” 分隔

5)测试访问集群服务

这里我们以 HDFS 和 Yarn 举例

5.1.测试访问HDFS和Yarn

(1)由于此时未初始化 HDFS 的 Ticket,所以无法访问

在这里插入图片描述

(2)进入到 /var/run/cloudera-scm-agent 目录下,到最新的 HDFS 的目录中找到 HDFS 的 keytab 文件

在这里插入图片描述

在这里插入图片描述

(3)测试 HDFS 的 keytab 文件是否能够正常使用

在这里插入图片描述

(4)将HDFS的keytab文件拷贝到Windows本地,并进行 kinit

在这里插入图片描述

在这里插入图片描述

(5)再次通过FireFox访问HDFS服务,能够正常访问

在这里插入图片描述

(6)访问Yarn资源管理服务,访问正常

在这里插入图片描述

在这里插入图片描述

5.2.keytab 合并使用

(1)将需要合并的 keytab 文件同意的放在同一个目录下

在这里插入图片描述

(2)使用ktutil命令合并keytab文件,操作如下:

keytab 合并成功,默认生成的 keytab 文件权限是 600,如果是用非 root 用户执行需要注意权限问题。
在这里插入图片描述

注意:

使用合并后的 keytab 文件,无论用哪个系统用户的身份进行认证,配置成功后都能够通过 FireFox 浏览器访问服务的页面。

6)总结

1、Windows 本地的 krb5.ini 文件不能直接使用 krb5.conf 文件更名替换,否则会出现文件格式的问题导致 MIT Kerberos 客户端无法正常启动。

2、在生成 keytab 文件时需要加上 ”-norandkey” 参数,否则会导致 kinit 时密码错误。

3、在 Windows 本地安装了 Java 环境后,由于 Java 里也有 kinit、klist 等命令,所以需要在 Path 环境变量里面,将 Kerberos 的环境变量位置调整到Java环境变量的前面,保证在 Windows 本地使用的 kinit、klist 等命令是使用的 Kerberos 的命令,否则就会导致命令冲突。

注意:实际操作过程中,使用kinit -kt 命令时大部分情况下的报错都是由于这个原因导致,很坑,本人亲测。

在这里插入图片描述

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,177人围观)

还没有评论,来说两句吧...

相关阅读

    相关 安全认证机制

    1、HTTP简单基本认证方式  这个是早期交互用得比较多的一种方式,主要是使用用户名和密码来交互,由于在每次的交互中,用户名和密码都会暴露给第三方,那么这么做是不可取的,风

    相关 安全登录认证

    用户登录是任何一个应用系统的基本功能,特别是对于网上银行系统来说,用户登录的安全性尤为重要。如何设计一个网站的安全登录认证程序,是本文主要讨论的问题。   静态密码存在着比较