CentOS 7.3环境中部署Kerberos集群

CentOS 7.3环境中部署Kerberos集群

文章目录

  • CentOS 7.3环境中部署Kerberos集群
    • 环境
      • 安装服务包
    • Kerberos MS 规划
    • 安装 KDC Master Server
      • 配置文件
        • `/etc/krb5.conf`
        • `/var/kerberos/krb5kdc/kdc.conf`
        • `/var/kerberos/krb5kdc/kadm5.acl`
      • 创建Kerberos数据库
      • 启动与停止服务
      • 创建管理员
      • 创建普通用户
    • 安装 KDC Salve Server
      • 创建集群的`host keytab`文件
      • 分发文件到KDC Salve Servers
      • 创建与主KDC服务相同库密码也相同
      • 新增配置文件`kpropd.acl`
      • 启动kpropd服务
      • Master备份账户信息,并发送到salve服务器
      • 启动与停止服务
    • 安装KDC Client
      • 配置文件`/etc/krb5.conf`
      • 用户登录
      • 查询登录情况
      • 验证刷新票据
    • 遇到的问题

官网介绍

环境

Linux版本:Centos 7.3

操作用户:root

Kerberos分为客户端(kerberos client)和服务端(kerberos server)

HA的的实现是主从复制的形式,由主服务将数据库备份,然后发送给从服务。

安装服务包

检查服务器上是否安装kerberos 服务

yum list installed | grep krb5

kerberos server安装命令

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

kerberos client安装安装命令

 yum -y install krb5-devel krb5-workstation

Kerberos MS 规划

IP地址hostname、域名服务包启动服务
192.168.1.1hadoop3test1-09.test.comkerberos server、kerberos clientKDC、 KADMIN
192.168.1.2hadoop3test1-10.test.comkerberos server、kerberos clientKDC
192.168.1.3hadoop3test1-11.test.comkerberos client

realm就采用EXAMPLM.COM

安装 KDC Master Server

配置文件

kdc服务涉及三个配置文件/etc/krb5.conf/var/kerberos/krb5kdc/kdc.conf/var/kerberos/krb5kdc/kadm5.acl

/etc/krb5.conf
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/[logging]default = FILE:/var/log/krb5libs.logkdc = FILE:/var/log/krb5kdc.logadmin_server = FILE:/var/log/kadmind.log[libdefaults]dns_lookup_realm = falseticket_lifetime = 24hrenew_lifetime = 7dforwardable = truerdns = falsedefault_realm = EXAMPLE.COM# default_ccache_name = KEYRING:persistent:%{uid}[realms]EXAMPLE.COM = {kdc = 192.168.1.1kdc = 192.168.1.2admin_server = 192.168.1.1
#  default_domain = kerberos.com}[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM

相关参数说明:

  • [logging]:日志的位置
  • [libdefaults]:每种连接的默认配置
    • dns_lookup_realm:是否通过 dns 查找需使用的 realm。false代表禁用。
    • ticket_lifetime:凭证的有效时限
    • renew_lifetime:凭证最长可以被延期的时限
    • forwardable:ticket 是否可以被转发(如果用户已经有了一个TGT,当他登入到另一个远程系统,KDC会为他重新创建一个TGT,而不需要让用户重新进行身份认证)
    • rdns:如果为 true,则除根据 hostname 正向查找外,同时反向查找对应的 principal。如果 dns_canonicalize_hostname 设置为 false,则此标志不起作用。
    • pkinit_anchors:受信任锚(根)证书的位置;如果用户在命令行上指定X509_anchors,则不使用该配置。在KDC中配置pkinit的位置
    • default_realm:默认的 realm,必须跟要配置的 realm 名称一致
    • default_ccache_name:指定默认凭据缓存的名称。默认值为 DEFCCNAME。不推荐使用该参数。
  • [realms]:列举使用的 realm
    • kdc:kdc服务器地址。格式 [主机名或域名]:端口, 默认端口是88,默认端口可不写
    • admin_server:kdc 数据库管理服务运行的机器,地址格式 [主机名或域名]:端口, 默认端口749,默认端口可不写
  • [domain_realm]:指定DNS域名和Kerberos域名之间映射关系。配置 domain name 或 hostname 对应的 releam

参考支持的日期与时间的格式,时间单位:d代表天数;h代表小时数;m代表分钟数;s代表秒数。

/var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]kdc_ports = 88kdc_tcp_ports = 88[realms]EXAMPLE.COM = {#master_key_type = aes256-ctsacl_file = /var/kerberos/krb5kdc/kadm5.acldict_file = /usr/share/dict/wordsmax_renewable_life = 7dadmin_keytab = /var/kerberos/krb5kdc/kadm5.keytabsupported_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 默认配置
    • kdc_ports:UDP 端口号
    • kdc_tcp_ports:TCP 端口号
  • [realms]:realm 数据库配置
    • master_key_type:主密钥的密钥类型;默认值为 aes256-cts-hmac-sha1-96。
    • acl_file:用于指定哪些用户可以访问 kdc 数据库的控制文件;如果不需要现在用户访问,该值可以设为空
    • dict_file:字典文件位置,该文件中的单词不能被用于密码;如果文件为空,或者没有为用户分配策略,则不会执行密码字典检查。
    • admin_keytab:KDC 进行校验的 keytab。
    • supported_enctypes:支持的加密方式。
/var/kerberos/krb5kdc/kadm5.acl
*/admin@EXAMPLE.COM     *

示例

kadm5.acl 文件中的以下项授予 HADOOP.COM 领域中包含 admin instance 实例的任何主体对 Kerberos 数据库的所有权限:

*/admin@HADOOP.COM     *

Kerberos kadmind 使用该文件来管理对 Kerberos 数据库的访问权限。对于影响 principa 的操作,ACL 文件还控制哪些 principa 可以对哪些其他 principa 进行操作。文件格式如下:principal permissions [target_principal [restrictions] ]

ACL 文件中的行顺序很重要,会使用第一个匹配的行来设置用户权限。

principal:设置该 principal 的权限;principal 的每个部分都可以使用 *

permissions: 权限,见下表。如果字符是大写,则不允许该操作。如果字符是小写,则允许该操作

target_principal:目标 principal,目标 principal 的每个部分都可以使用 *。【可选】

restrictions:针对权限的一些补充限制,如:限制创建的 principal 的票据最长时效。【可选】

权限说明
a允许添加 principals 或policies
c允许更改 principals 的密码
d允许删除 principals 或policies
e允许提取principal 的的keys信息
i允许查询 principals 或policies
l允许列出所有 principals 或policies
m允许修改 principals 或policies
p允许主数据库的传播(用于增量数据库传播)
s允许显式设置 principal 的密钥
xadmcilsp的缩写。所有权限(e除外)
*x

服务端和客户端的/etc/krb5.conf配置一致。

创建Kerberos数据库

 kdb5_util create -r EXAMPLE.COM -s

-s:表示生成 stash file,并在其中存储 master server key(krb5kdc)

-r:指定 realm name

Kerberos 数据库的目录为:/var/kerberos/krb5kdc,如果需要重建数据库,可删除改目录/var/kerberos/krb5kdc/principal

启动与停止服务

启动服务

systemctl start krb5kdc;
systemctl start kadmin;

检查服务

systemctl status krb5kdc.service;
systemctl status kadmin.service;

停止kdc服务

systemctl stop krb5kdc;
systemctl stop kadmin;

创建管理员

Kerberos 服务管理机器上可以使用 kadmin.local来执行各种管理的操作。为了方便密码都是123456。

创建管理员主体,其Instance必然使用admin

kadmin.local -q "addprinc root/admin"

或者进入kadmin.local创建管理用户给客户端可以进行管理操作

kadmin.local; 
add_principal root/admin@EXAMPLE.COM
[root@hadoop3test1-09 ~]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:  add_principal root/admin@EXAMPLE.COM
WARNING: no policy specified for root/admin@EXAMPLE.COM; defaulting to no policy
Enter password for principal "root/admin@EXAMPLE.COM": 
Re-enter password for principal "root/admin@EXAMPLE.COM": 
Principal "root/admin@EXAMPLE.COM" created.

Kerberos 客户端机器上可以使用 kadmin 命令与管理员主体与密码进行登录操作。

创建普通用户

 # 在EXAMPLE.COM领域下创建用户bigdata与huatuo,指定其密码为123456kadmin.local -q "addprinc -pw 123456 bigdata@EXAMPLE.COM";kadmin.local -q "addprinc -pw 123456 huatuo@EXAMPLE.COM";# 为bigdata和huatuo用户产生秘钥文件keytabkadmin.local -q "ktadd -norandkey -kt /opt/keytabs/bigdata.keytab bigdata@EXAMPLE.COM";kadmin.local -q "ktadd -norandkey -kt /opt/keytabs/huatuo.keytab huatuo@EXAMPLE.COM";# 分发秘钥文件供客户端登录使用scp /opt/keytabs/huatuo.keytab root@192.168.1.3:/opt/keytabs/huatuo.keytabscp /opt/keytabs/bigdata.keytab root@192.168.1.3:/opt/keytabs/bigdata.keytabkadmin.local -q "addprinc -pw 123456 gudong@EXAMPLE.COM";kadmin.local -q "ktadd -norandkey -kt /opt/keytabs/gudong.keytab gudong@EXAMPLE.COM";scp /opt/keytabs/gudong.keytab root@192.168.1.3:/opt/keytabs/gudong.keytab

安装 KDC Salve Server

创建集群的host keytab文件

在KADMIN(Master Server)上创建集群节点主体账户,集群节点host账户格式host/主机名,生成集群的host keytab文件,默认/etc/krb5.keytab

# 创建
kadmin.local -q "addprinc -randkey host/hadoop3test1-06.test.com";
kadmin.local -q "addprinc -randkey host/hadoop3test1-07.test.com";# 生成keytab文件,在/etc/krb5.keytab.
kadmin.local -q "ktadd  host/hadoop3test1-06.test.com";
kadmin.local -q "ktadd  host/hadoop3test1-07.test.com";

分发文件到KDC Salve Servers

将Master上的下列文件分发到salves

  • /etc/krb5.conf
  • /var/kerberos/krb5kdc/kdc.conf
  • /var/kerberos/krb5kdc/kadm5.acl
  • /etc/krb5.keytab
 scp root@192.168.1.1:/etc/krb5.keytab /root/gd/keytabsscp /root/gd/keytabs/krb5.keytab  root@192.168.1.2:/etc/krb5.keytab 

创建与主KDC服务相同库密码也相同

kdb5_util create -r EXAMPLE.COM -s

新增配置文件kpropd.acl

vim /var/kerberos/krb5kdc/kpropd.acl。文件内容需要master的host账户和此salve的账户。

host/hadoop3test1-06.test.com@EXAMPLE.COM
host/hadoop3test1-07.test.com@EXAMPLE.COM

启动kpropd服务

kpropd -S

Master备份账户信息,并发送到salve服务器

在Master Server上执行

[root@hadoop3test1-09 ~]# kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
[root@hadoop3test1-09 ~]# ll /var/kerberos/krb5kdc/
总用量 56
-rw-r--r-- 1 root root    26 69 11:42 kadm5.acl
-rw-r--r-- 1 root root   452 69 10:41 kdc.conf
-rw------- 1 root root  2922 69 11:47 krb5.keytab
-rw------- 1 root root 20480 69 14:59 principal
-rw------- 1 root root  8192 69 14:25 principal.kadm5
-rw------- 1 root root     0 69 14:25 principal.kadm5.lock
-rw------- 1 root root     0 69 14:59 principal.ok
-rw------- 1 root root 11135 69 15:01 slave_datatrans
-rw------- 1 root root     1 69 15:01 slave_datatrans.dump_ok
[root@hadoop3test1-09 ~]# kprop -f /var/kerberos/krb5kdc/slave_datatrans hadoop3test1-07.test.com
Database propagation to hadoop3test1-07.test.com: SUCCEEDED

启动与停止服务

启动服务

systemctl start krb5kdc;

检查服务

systemctl status krb5kdc.service;

停止kdc服务

systemctl stop krb5kdc;

安装KDC Client

配置文件/etc/krb5.conf

这个配置文件可以直接用服务端的。

用户登录

 # 命令交互式,输入密码kinit gudong@EXAMPLE.COM# 秘钥文件认证方式kinit -kt /opt/keytab/root.keytab gudong@EXAMPLE.COM

查询登录情况

klist

[root@hadoop3test1-06 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: gudong@EXAMPLE.COMValid starting       Expires              Service principal
2025-06-09T17:25:35  2025-06-10T17:25:35  krbtgt/EXAMPLE.COM@EXAMPLE.COMrenew until 2025-06-16T17:25:35

验证刷新票据

kinit -R

[root@hadoop3test1-06 ~]# kinit -R
[root@hadoop3test1-06 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: gudong@EXAMPLE.COMValid starting       Expires              Service principal
2025-06-09T17:31:21  2025-06-10T17:31:21  krbtgt/EXAMPLE.COM@EXAMPLE.COMrenew until 2025-06-16T17:25:35

遇到的问题

1、执行创建库kdb5_util create -r EXAMPLE.COM -s,长时间卡在loading random data

网上建议:因为/dev/random的随机数据产生的很少,可以适当的让网卡传输数据,这样有助于产生随机数据。解决:在等待loading random data,期间重新开启一个创建控制台窗口,执行cat /dev/vda > /dev/urandom命令,加快消耗CPU,增加随机数采集,从而加快创建库的操作。

#使用 lsblk 命令可以列出所有可用的块设备 找到i系统盘对于的块名称
lsblkNAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                  11:0    1  434K  0 rom  
vda                 252:0    0   75G  0 disk 
├─vda1              252:1    0  500M  0 part /boot
└─vda2              252:2    0 74.5G  0 part ├─systemvg-rootlv 253:0    0   10G  0 lvm  /├─systemvg-swaplv 253:1    0   10G  0 lvm  ├─systemvg-usrlv  253:2    0   10G  0 lvm  /usr├─systemvg-homelv 253:3    0    2G  0 lvm  /home├─systemvg-tmplv  253:4    0    2G  0 lvm  /tmp├─systemvg-varlv  253:5    0    8G  0 lvm  /var└─systemvg-optlv  253:6    0 32.5G  0 lvm  /opt
vdb                 252:16   0  100G  0 disk 
└─datavg1-datalv    253:7    0  100G  0 lvm  /data

但是无效果。

当服务器执行了一次创建Kerberos数据库之后,清理/var/kerberos/krb5kdc/principal后,再次执行创建库的操作,必然出现loading random data卡主的情况,无法缓解。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1 Studying《Arm A715 Software Optimization Guide》

目录 1 Introduction 1.1 Product revision status 1.2 Intended audience 1.3 Scope 1.4 Conventions 1.5 Useful resources 2 Overview 2.1 Pipeline overview 3 Instruction characteristics 3.1 Instruction tables 3.2 Legend for reading the utilized pipeli…

第二十四章 24.QoS(CCNA)

第二十四章 24.QoS(CCNA) 介绍了switch QoS的配置方法 注释: 学习资源是B站的CCNA by Sean_Ning CCNA 最新CCNA 200-301 视频教程(含免费实验环境) PS:喜欢的可以去买下他的课程,不贵,讲的很细 To be continued……

什么是稳定币?

稳定币(Stablecoin)是一种特殊的加密货币,其核心目标是维持价格稳定,通常与某种稳定资产(如美元、黄金等)挂钩。 一、为什么需要稳定币? 普通加密货币(如比特币、以太坊&#xff09…

伺服学习(IS620N)

DI 端子的基本概念 DI 端子是伺服驱动器上的数字输入接口,用于接收外部开关、按钮或PLC的24V/0V信号。每个端子的功能可通过参数灵活配置(如启停、限位等)。 核心要点 功能设置:通过驱动器参数组(如H03)…

基于Python的气象数据分析及可视化研究

目录 一.🦁前言二.🦁开源代码与组件使用情况说明三.🦁核心功能1. ✅算法设计2. ✅PyEcharts库3. ✅Flask框架4. ✅爬虫5. ✅部署项目 四.🦁演示效果1. 管理员模块1.1 用户管理 2. 用户模块2.1 登录系统2.2 查看实时数据2.3 查看天…

Excel处理控件Aspose.Cells教程:使用 C# 在 Excel 中应用数据验证

Excel 中的数据验证可确保用户在工作表中仅输入有效数据。在设计表单、收集数据或构建财务模型时,数据验证有助于维护结构并最大限度地减少用户错误。在本文中,我们将向您展示如何使用 C# 以编程方式在 Excel 中应用数据验证。 Aspose.Cells 最新版下载…

AI应用:计算机视觉相关技术总结

计算机视觉概述 计算机视觉(Computer Vision, CV)是一门让计算机从图像或视频中 “理解” 和 “解释” 视觉信息的技术,涉及多学科交叉(如数学、统计学、机器学习、信号处理等)。以下从技术体系、核心任务、关键技术、…

人口贩卖暑期威胁消解:算法协同提升安全预警

随着暑期的到来,人员流动加剧,人口贩卖等恶性犯罪活动进入高发阶段,景区、车站、商场等公共场所成为潜在风险区域。传统安防手段在应对此类隐蔽性强、危害性大的犯罪时显得力不从心。为此,引入基于视觉分析的多维度算法技术&#…

【DSP笔记 · 第3章】数字世界的“棱镜”:离散傅里叶变换(DFT)完全解析

数字世界的“棱镜”:离散傅里叶变换(DFT)完全解析 在上一章,我们探索了Z变换和离散时间傅里叶变换(DTFT)。我们知道,DTFT是一个无比强大的理论工具,它能将一个时域离散序列的“基因…

卷积神经网络的参数量及尺度变化计算

文章目录 前言1.卷积2.参数量的计算2.1案例一2.2案例二 3.奇怪的优化思想3.1使用小核卷积替换大核卷积3.2卷积核11的应用 4.输出图像尺寸的计算4.1Same convolution4.2具体计算规则4.3转置卷积 小结 前言 本篇博客主要介绍卷积基本概念,卷积神经网络的参数量计算、…

OpenCV——图像平滑

图像平滑 一、图像的噪声1.1、噪声来源1.2、噪声类型1.3、噪声模拟 二、滤波器三、线性滤波3.1、均值滤波3.2、方框滤波3.3、高斯滤波 四、非线性滤波4.1、中值滤波4.2、双边滤波 图像在采集和传输过程中容易受到各种因素的影响而产生噪声,而噪声会对图像的正确解读…

鸿蒙系统备份恢复

鸿蒙系统尝试者,在纯血鸿蒙与鸿蒙4.2/4.3之前反复横跳,中间折腾… 目录 鸿蒙4.2/4.3升级鸿蒙5.0系统备份 鸿蒙5.0回退鸿蒙4.2/4.3系统备份备份恢复 华为手机助手注意 鸿蒙4.2/4.3升级鸿蒙5.0 系统备份 云空间备份手机本地备份华为手机助手备份 鸿蒙5.…

JS进阶 Day03

1.两种面向编程思想 2.构造函数实现封装以及存在的问题 下面就引出了原型对象 3.原型对象prototype 共享原理图&#xff1a; 4.数组扩展案例-求最大值和数组求和 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><…

visual studio小番茄插件某些快捷键失效

问题 AltO 切换头文件和源文件失效。 背景 最近升级了 visual studio&#xff0c;多了一些插件 原因 Alt O 快捷键被其他插件占用了 解决方案 工具 → 选项 → 环境 → 键盘 搜索这个 VAssistX.OpenCorrespondingFile&#xff08;切换头/源文件&#xff09; 发现命令的快…

基于单片机的PT100温度变送器设计

基于单片机的PT100温度变送器设计 文章目录 基于单片机的PT100温度变送器设计前言一、资源分享二、系统框架三、硬件准备1.主控制器2、PT100温度传感器3、显示屏4、WIFI模块5、USB转RS485模块6、SP3485EN7、K11-11D3 四、设计PCB1、安装下载立创EDA专业版2、画原理图3、摆放元器…

Git 清理指南:如何从版本库中移除误提交的文件(保留本地文件)

场景 在 Git 项目中&#xff0c;我们可能会不小心提交了本应忽略的文件&#xff08;如 node_modules/、.env、*.log 等&#xff09;&#xff0c;导致仓库体积膨胀或敏感信息泄露。本文介绍如何从 Git 历史中彻底删除这些文件&#xff0c;同时保留本地文件。 解决方案 1. 确认…

服务器数据恢复—重装系统导致XFS文件系统分区无法访问的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台服务器上通过磁盘柜RAID卡组建的riad5磁盘阵列&#xff0c;服务器上层安装Linux操作系统&#xff0c;搭建XFS文件系统。服务器上层分配一个LUN&#xff0c;并划分了两个分区。通过LVM扩容的方式将sdc1分区加入到了root_lv中&#…

在QtCreator中使用GitHubCopilot

文章目录 1.github copilot账号2. 安装node.js3.安装 GitHub Copilot Neovim plugin4.在Qt中启用4.1.在extension中启用4.2.在配置中启用4.3.使用/禁用 5.评价 在最新版的QtCreator中&#xff0c;已经通过Extension集成了GitHubCopilot进来。 我用的是16.0.2版本的&#xff08;…

岛屿周长问题的三种解法:直接计数法、数学计算法与深度优先搜索

问题描述 给定一个二维网格 grid&#xff0c;其中1表示陆地&#xff0c;0表示水域。网格中的格子水平和垂直方向相连&#xff08;对角线不相连&#xff09;。网格中恰好有一个岛屿&#xff08;即一个或多个相连的陆地格子&#xff09;&#xff0c;需要计算这个岛屿的周长。 解…

将包含父子关系的扁平列表 List<Demo> 转换成树形结构的 List<DemoVO>,每个节点包含自己的子节点列表

1.stream递归操作 private List<DemoVO> createtree(List<Demo> datas) {//得到父节点return datas.stream().filter(m -> TargetConstants.ROOT.equalsIgnoreCase(m.getParentId())).map(m -> {DemoVO vo new DemoVO();vo.setTaxonomyId(m.getPlatformTaxo…