kerberos详解

一、介绍

kerberos概述

Kerberos始于20世纪80年代早期麻省理工学院(MIT)的一个研究项目,是一个网络身份验证系统。Kerberos提供的完整定义是安全的、单点登录的、可信的第三方相互身份验证服务。

认证过程

image.png

相关概念

  1. KDC(key Distribution Center):密钥分发中心,是统一认证服务,负责管理发放票据,记录授权。
  2. KDC Server:作为密钥分发中心(KDC)的计算机或服务器。
  3. KDC Client:集群中针对KDC进行身份验证的任何计算机。
  4. Realm:kerberos管理的领域的标识。
  5. Principal:用于验证一个用户或者服务的唯一标识,相当于一个账号,需要为其设置密码。

Principal的形式为:主名称/实例名@领域名。
主名称可以是用户名或者服务名,标识用于提供各种网络服务(比如hdfs、hive);
实例名,对于用户主体,实例名是可选的,对于服务主体,实例则是必须的。
image.png

二、安装

安装server端

只需要在一台服务器上安装,如果提示没权限使用sudo安装

yum -y install krb5-libs krb5-workstation krb5-server

安装客户端

集群中每台节点都必须要安装客户端,如果提示没权限使用sudo安装

yum -y install krb5-libs krb5-workstation

配置

更改KDC配置文件

默认路径:/var/kerberos/krb5kdc/

sudo vi /var/kerberos/krb5kdc/kdc.conf

默认配置文件:

[kdcdefaults]
 kdc_ports = 88 # kdc 端口
 kdc_tcp_ports = 88 #kdc通信端口

[realms]
 EXAMPLE.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
  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
 }

修改后的配置文件:

[kdcdefaults]
 kdc_ports = 88 # kdc 端口
 kdc_tcp_ports = 88 #kdc通信端口

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

说明:
EXAMPLE.COM:自己设定的域,一般为了识别使用大写;
max_renewable_life:是否能进行ticket的renew,也就是票据刷新;
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要去掉;

更改krb5.conf

默认路径为:/etc/krb5.conf
默认配置文件:

# 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]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
# default_realm = EXAMPLE.COM
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
# EXAMPLE.COM = {
#  kdc = kerberos.example.com
#  admin_server = kerberos.example.com
# }

[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM

修改后的配置文件:

# 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]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
 default_realm = HADOOP.COM
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 HADOOP.COM = {
  kdc = hadoop162
  admin_server = hadoop162
 }

[domain_realm]
 .hadoop.com = HADOOP.COM
 hadoop.com = HADOOP.COM

文件说明:
[logging]:表示日志存储位置
[libdefaults]:每种连接的配置
default_realm:默认的realm,必须和配置的realm一致;
udp_preference_limit = 1 :禁止使用udp可以防止一个Hadoop中的错误;
ticket_lifetime:凭证有效时间,一般为24小时;
renew_lifetime:凭证最长可以被延期的时限,一般为一周,凭证过期后对安全认证的服务访问会失败;
kdc:代表要kdc的位置。格式是 机器:端口;
admin_server:代表admin的位置。格式是机器:端口;
default_domain:代表默认的域名;

更改完成后将krb5.conf同步到其他节点

xsync /etc/krb5.conf

kadm5.acl

默认位置:/var/kerberos/krb5kdc/kadm5.acl

*/admin@EXAMPLE.COM     *

说明:
/admin代表admin实例的全部用户主体
HADOOP.COM代表领域
最后一个
代表所有权限
这里授权的意思就是admin实例的全部主体拥有HADOOP.COM领域的所有权限

创建kerberos数据库

在服务端对数据库进行初始化,默认的数据库路径为:/var/kerberos/krb5kdc;需要设置初始化密码;

kdb5_util create -r HADOOP.COM -s

image.png
说明:
-r:指定一个realm_name,当krb5.conf配置多个realm时使用;
-s:表示生成 stash file ,并在其中存储master server key(krb5kdc);
创建成功后在/var/kerberos/krb5kdc可以看到生成的相关principal文件:
image.png

启动kerberos

启动服务命令
systemctl start krb5kdc
systemctl start kadmin

服务对应的日志文件:
/var/log/krb5kdc.log
/var/log/kadmind.log

设置开机自启
systemctl enable krb5kdc
systemctl enable kadmin

kerberos操作

创建管理员

kadmin.local -q "addprinc admin/admin"

image.png
kadmin.local需在server端即KDC所在服务器执行
也可以在server端执行kadmin.local命令先登陆kerberos数据库,下图是支持的操作:
image.png

其它操作

创建用户
kadmin.local -q "addprinc test"
为新用户生成keytab文件
kadmin.local -q "xst -norandkey -k etc/test.keytab test"
# 或
kadmin.local -q "ktadd -norandkey -k /etc/test.keytab test"

[-norandkey] 表示创建keytab时,principal的密码不发生改变。如果不使用该参数,直接ktadd -k则会修改principal的密码。

查看keytab文件
klist -kte /etc/test.keytab
认证用户
kinit -kt /etc/test.keytab test
# 或者
kinit test
查看认证缓存(当前认证的用户)
klist -e

image.png
[-e] 查看当前kerberos账号的加密方式

退出当前认证的用户
kdestroy
查看所有principal主体
kadmin.local -q "list_principals"

也可以用kadmin然后输入admin管理员密码,然后list_principals

删除principal主体
kadmin.local -q "delete_principal test"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/208594.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML5 的全局属性 hidden 和 display:none 的关系

目录 1,hidden 和 display:none 的关系2,其他隐藏元素的方式2.1,语意上的隐藏2.2,视觉上的隐藏 1,hidden 和 display:none 的关系 hidden - MDN 参考 一句话总结:hidden 是HTML5 新增的全局布尔属性&…

Python | 轻量ORM框架Peewee的基础使用(增删改查、自动创建模型类、事务装饰器)

文章目录 01 简介02 安装03 自动创建模型类04 基础使用4.1 查询4.2 新增4.3 更新4.4 删除 05 事务 01 简介 在使用python开发的过程中,有时需要一些简单的数据库操作,而Peewee正是理想的选择,它是一个小巧而灵活的 Python ORM(对…

Hdoop学习笔记(HDP)-Part.7 安装MySQL

七、安装MySQL mysql主从复制的原理: 1)master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)&#…

(六)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)

一、无人机模型简介: 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、Tiki-taka算法(TTA&#xf…

Windows环境 dockertopdesk 部署gitlab

1.在dockertopdesk里搜索 gitlab镜像 (pull)拉取镜像 2.运行镜像到容器 mkdir gitlab gitlab/etc gitlab/log gitlab/opt docker run -id -p 3000:80 -p 9922:22 -v /root/gitlab/etc:/etc/gitlab -v /root/gitlab/log:/var/log/gitlab -v /root/gitlab/opt:/var/opt/gitla…

IntelliJ IDEA 之初体验(上)

IntelliJ IDEA 是一款由 JetBrains 公司开发的强大的集成开发环境(IDE),专注于 Java 开发,同时支持多种其他编程语言。本文将详细介绍 IntelliJ IDEA 的安装过程以及一些常用的基本操作。 第一步:下载与安装 IntelliJ…

【LeetCode每日一题合集】2023.11.20-2023.11.26 (二叉树中的伪回文路径)

文章目录 53. 最大子数组和解法1——DP解法2——分治(维护区间、类似线段树的思想) 2216. 美化数组的最少删除数(贪心)2304. 网格中的最小路径代价1410. HTML 实体解析器(模拟)2824. 统计和小于目标的下标对…

k8s ingress 无法找到端点

文章目录 ingress rule无法找到端点这个注解是什么意思呢?为何不生效呢?端点无法更新?如何确认ingressclass呢?修复端点无法发现的问题多个ingress controller 架构 ingress rule无法找到端点 在vnnox-cn集群创建ingress&#xf…

IntelliJ IDEA创建springboot项目时不能选择java8的问题解决方案

最近博主也有创建springboot项目,发现了IntelliJ IDEA在通过Spring Initilizer初始化项目的时候已经没有java8版本的选项了。 基于这个问题,有了这篇文章的分享,希望能够帮助大家克服这个困难。 如图,现在创建springboot项目的时…

win10 修改任务栏颜色 “开始菜单、任务栏和操作中心” 是灰色无法点击,一共就两步,彻底解决有图有真相。

电脑恢复了一下出厂设置、然后任务栏修改要修改一下颜色,之前会后来忘记了,擦。 查了半天文档没用,最后找到官网才算是看到问题解决办法。 问题现象: 解决办法: 往上滑、找到这里 浅色改成深色、然后就可以了,就这么简单。 w…

Drift plus penalty 漂移加惩罚Part2——性能分析

文章目录 正文Performance analysisAverage penalty analysis 平均惩罚分析Average queue size analysis 平均队列大小分析Probability 1 convergenceApplication to queues with finite capacityTreatment of queueing systemsConvex functions of time averages Delay tradeo…

服务器数据恢复—服务器断电导致XenServer数据文件丢失的数据恢复案例

服务器数据恢复环境: 某品牌720服务器搭配该品牌某型号RAID卡,使用4块STAT硬盘组建了一组RAID10阵列。服务器上部署XenServer虚拟化平台,系统盘 数据盘两个虚拟机磁盘。虚拟机上安装的是Windows Server操作系统,作为Web服务器使用…

【算法刷题】Day9

文章目录 611. 有效三角形的个数题干:题解:代码: LCR 179. 查找总价格为目标值的两个商品题干:题解:代码: 1137. 第 N 个泰波那契数题干:原理:1、状态表示(dp表里面的值所…

如何让Win11的右键菜单恢复到Win10的样式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言如何让Win11的右键菜单恢复到Win10的样式1. winr打开运行,输入cmd后回车2.输入命令并回车3.重启计算机 前言 提示:这里可以添加本文要记…

敌方坦克发射思路[java坦克大战]

1.在敌人坦克类,创建Vector用于保存Shot对象 2.当每创建一个敌人坦克对象,就给该敌人坦克对象初始化一个Shot对象(注意子弹初始位置以及必须在设置完敌人坦克初始方向),将该对象加入Vector后,立即启动shot发…

熬夜会秃头——beta冲刺Day7

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day7团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 一、团队成员会议总结 1、成员工作…

时序预测 | Python实现TCN时间卷积神经网络时间序列预测(多图,多指标)

时序预测 | Python实现TCN时间卷积神经网络时间序列预测(多图,多指标) 目录 时序预测 | Python实现TCN时间卷积神经网络时间序列预测(多图,多指标)预测效果基本介绍环境准备程序设计参考资料预测效果 基本介绍

专注数据采集分析系统研发 做设备与MES系统中转站

数据采集是实现MES系统与设备对接的核心环节。通过采集设备产生的实时数据,将其传输给MES系统进行处理和分析。数据采集可以通过直接连接设备的传感器或者通过设备上安装的采集设备实现。采集的数据可以包括设备的运行状态、产量数据、测量数据、能耗数据等。通过数…

c语言-快速排序

目录 一、实现快速排序三种方法 1、hoare法 2、挖坑法 3、双指针法 4、快速排序的优化 5、测试对比 结语: 前言: 快速排序作为多种排序方法中效率最高的一种,其底层原理被广泛运用,他的核心思想与二叉树结构中的递归逻辑相似…

在re:Invent上IBM宣布与亚马逊云科技携手,Amazon RDS for DB2正式亮相

11月29日,IBM在亚马逊云科技re:Invent 2023上宣布,与亚马逊云科技合作推出Amazon Relational Database Service(Amazon RDS)for Db2。这项全新的完全托管云服务旨在简化客户在混合云环境中管理人工智能(AI)…