Centos7.9安装kerberos

在这里插入图片描述

文章目录

  • 一、背景
  • 二、Kerberos安装部署
    • 2.1kerberos服务端必要软件安装
    • 2.2配置krb5.conf
    • 2.3配置kdc.conf
    • 2.4配置kadm5.acl
    • 2.5创建Kerberos数据库
    • 2.6启动Kerberos服务
    • 2.7创建Kerberos管理员principal
    • 2.8客户端安装kerberos
    • 2.9Kerberos功能验证
  • 本人其他相关文章链接

一、背景

亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。

项目背景:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。

举例说明:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。

需要安装openldap+kerberos,且ldap和kerberos安装在同一台服务器上,当前版本如下:

  • centos 7.9
  • openldap 2.4.44
  • phpldapadmin 1.2.5
  • 服务器IP:10.110.38.162
  • Kerberos :Kerberos 5 release 1.15.1

本博客参考的博客是:

  • ① Openldap安装部署
  • ② Kerberos基本原理、安装部署及用法
  • ③ Openldap集成Kerberos

注意:这个文章是真实可行的,但是有执行顺序,一定要先安装“Openldap安装部署”+“Kerberos基本原理、安装部署及用法”之后,确保安装无误后再去安装“Openldap集成Kerberos”。
在这里插入图片描述

我当时犯的毛病就是前两个没完全照着文档安装完成就直接安装的第三个,然后出现各种问题,我还不知道为点啥。人家博客都说了要先安装前两个,再看这个“Kerberos基本原理、安装部署及用法”。所以一定要注意安装顺序,遇到不懂得配置也没事先照着安。

二、Kerberos安装部署

2.1kerberos服务端必要软件安装

# yum -y install krb5-server openldap-clients

在安装完上述的软件之后,会在KDC主机上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf。

2.2配置krb5.conf

/etc/krb5.conf:包含Kerberos的配置。例如,KDC的位置,Kerberos的admin realms等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。(具体配置请参考附件文件)
请替换DOMAIN.COM为自定义域名:(本文档使用的是NODE3.COM)

# 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 = 24h#renew_lifetime = 7dforwardable = truerdns = falsepkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crtdefault_realm = NODE3.COM
# default_ccache_name = KEYRING:persistent:%{uid}[realms]NODE3.COM = {# kdc = kdc.node.com# admin_server = kdc.node.comkdc = 127.0.0.1admin_server = 127.0.0.1ldap_servers = ldap://127.0.0.1:389# kdc = node3.com:88# admin_server = node3.com:749# default_domain = NODE3.COM}[domain_realm].node3.com = NODE3.COMnode3.com = NODE3.COM

说明

  • [logging]:表示server端的日志的打印位置
  • [libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
    • default_realm = NODE3.COM 默认的realm,必须跟要配置的realm的名称一致。
    • udp_preference_limit = 1 禁止使用udp,可以防止一个Hadoop中的错误
    • ticket_lifetime表明凭证生效的时限,一般为24小时
    • renew_lifetime表明凭证最长可以被延期的时限,一般为一周。当凭证过期之后,对安全认证的服务的后续访问则会失败。
  • [realms]:列举使用的realm。
    • kdc:代表kdc的位置,格式是:机器hostname或ip地址
    • admin_server:代表admin的位置,格式是:机器hostname或ip地址
    • default_domain:代表默认的域名
  • [appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。
      注:这里需要分发krb5.conf至所有client主机

2.3配置kdc.conf

默认放在/var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]kdc_ports = 88kdc_tcp_ports = 88[realms]NODE3.COM = {#master_key_type = aes256-ctsacl_file = /var/kerberos/krb5kdc/kadm5.acldict_file = /usr/share/dict/wordsadmin_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:normalmax_life = 25hmax_renewable_life = 8d
}

说明

  • NODE3.COM:是设定的realms,名字随意。Kerberos可以支持多个realms,会增加复杂度。一般为大写。
  • max_renewable_life = 8d 涉及到是否能进行ticket的renew必须配置。
  • master_key_type:和supported_enctyps默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,推荐不使用。
  • acl_file:标注了admin的用户权限。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
  • admin_keytab:KDC进行校验的keytab。
  • supported_enctypes:支持的校验方式。注意把aes256-cts去掉。

2.4配置kadm5.acl

修改服务端上的配置文件/var/kerberos/krb5kdc/kadm5.acl,以允许具备匹配条件的admin用户进行远程登录权限

*/admin@NODE3.COM	*

说明

  • 标注了admin的用户权限,需要用户自己创建。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。最简单的写法是*/admin@NODE3.COM * 代表名称匹配*/admin@NODE3.COM都认为是admin,权限是*代表全部权限。

2.5创建Kerberos数据库

在服务器上对数据库进行初始化,默认的数据库路径为/var/kerberos/krb5kdc,如果需要重建数据库,将该目录下的principal相关的文件删除即可,请牢记数据库密码(为了好记建议密码统一用123456)。

kdb5_util create -r NODE3.COM -s

说明

  • [-s] 表示生成stash file,并在其中存储master server key(krb5kdc)
  • [-r] 来指定一个realm name,当krb5.conf中定义了多个realm时使用
  • 当Kerberos database创建好了之后,在/var/kerberos/中可以看到生成的principal相关文件

2.6启动Kerberos服务

# 启动服务命令
systemctl start krb5kdc
systemctl start kadmin# 加入开机启动项
systemctl enable krb5kdc
systemctl enable kadmin

2.7创建Kerberos管理员principal

# 需要设置两次密码
kadmin.local -q "addprinc root/admin"

pincipal的名字的第二部分是admin,那么根据之前配置的kadm5.acl文件,该principal就拥有administrative privileges,这个账号将会被CDH用来生成其他用户/服务的principal。 注意:需要先kinit保证已经有principal缓存。

[root@master ~]# kinit root/admin
Password for root/admin@NODE3.COM: 
[root@master ~]# klist 				//查看当前票据,出现以下证明安装kerberos成功
Ticket cache: KEYRING:persistent:0:0
Default principal: root/admin@NODE3.COMValid starting       Expires              Service principal
07/14/2020 11:51:17  07/15/2020 11:51:16  krbtgt/NODE3.COM@NODE3.COMrenew until 07/21/2020 11:51:16

Kerberos客户端支持两种,一是使用principal + Password,二是使用principal + keytab。前者适合用户进行交互式应用,例如hadoop fs -ls 这种,后者适合服务,例如yarn的rm、nm等。principal + keytab就类似于ssh免密码登录,登录时不需要密码了。

2.8客户端安装kerberos

# yum -y install krb5-devel krb5-workstation

在安装完上述的软件之后,在kerberos客户端主机上生成配置文件/etc/krb5.conf。 把服务端的/etc/krb5.conf文件拷贝到其他各节点客户端同路径/etc/krb5.conf中,此操作只适用于集群部署,单机部署可略仅供了解。

2.9Kerberos功能验证

在这里插入图片描述
当出现以上内容证明kerberos安装成功,具体kerberos的其它命令操作可自行查询验证,在此不具体阐述。

本人其他相关文章链接

1.Centos7.9安装openldap
2.Centos7.9安装kerberos
3.Openldap集成Kerberos
4.Centos7.9安装phpldapadmin
5.java连接ldap实现用户查询功能
6.java连接kerberos用户认证
7.javax.security.auth.login.LoginException: Unable to obtain password from user
8.javax.security.auth.login.LoginException: null (68)
9.javax.security.auth.login.LoginException: Message stream modified (41)
10.javax.security.auth.login.LoginException: Checksum failed
11.javax.security.auth.login.LoginException: No CallbackHandler available to garner authentication info
12.javax.security.auth.login.LoginException: Cannot locate KDC
13.javax.security.auth.login.LoginException: Receive timed out
14.java: 无法访问org.springframework.context.ConfigurableApplicationContext
15.LDAP: error code 34 - invalid DN
16.LDAP: error code 32 - No Such Object
17.java: 无法访问org.springframework.ldap.core.LdapTemplate

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

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

相关文章

科普文章:怎么远程监控电脑屏幕?三种监控电脑屏幕的方法

远程监控公司电脑屏幕是一项重要的管理手段,它不仅有助于提升工作效率,还能确保公司信息安全和合规性。随着远程办公的普及,这一需求变得日益重要。下面我将详细介绍几种实现远程监控公司电脑屏幕的方法,以及实施过程中需要注意的…

线程池的简介

定义 线程池就是使用多线程的方式,将任务添加到队列中任务都是runnable或者callable的实现类 优点 线程和任务分离,任务可以复用线程池统一管理线程,线程可以复用避免因为开启和销毁线程造成的资源浪费 官方线程池的参数分析 深度理解 线程池…

JVM 相关知识整理

文章目录 前言JVM 相关知识整理1. 新生代和老年代2. 对象的分配过程3. Full GC /Major GC 触发条件4. 逃逸分析4.1.示例4.2. 使用逃逸分析,编译器可以对代码做如下优化 5. 对象的内存分配6. Minor GC 与 Major GC/Full GC的比较:7. 什么对象进入老年代7.1. 大对象直…

2024年金地杯山西省大学生数学建模竞赛B题D题论文代码分析

2024金地杯数学建模B题和金地杯数学建模D题32页论文和代码已完成,代码为B题D题全部问题的代码,论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解(问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求…

【ARMv8/v9 GIC 系列 4.1 -- GIC CPU Interface 访问支持情况】

文章目录 GIC CPU Interface 访问支持Bit[27:24]: GIC CPU接口汇编代码实现访问小结 GIC CPU Interface 访问支持 在ARMv8架构中,ID_AA64PFR0_EL1是一个系统寄存器,提供了有关处理器功能的详绀信息。这个寄存器的位[27:24]专门用于描述GIC(通…

Microsoft Edge浏览器安装crx拓展插件教程

1、首先打开edge浏览器,点击顶部地址栏。 2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。 3、进入后,将图示选项改为“已禁用”。 …

微信小程序轮播图

效果图 详情可见 微信小程序 参照&#xff1a;swiper | uni-app官网 代码&#xff1a; <!--轮播图-- > <swiper interval"2000" autoplay"true" circular"true" style"height: 300px;"><swiper-item style&qu…

华媒舍:8个让你东南亚媒体发稿事半功倍的方法

本文将为您介绍8个方法&#xff0c;可以帮助您在东南亚地区的媒体发稿过程中事半功倍。无论您是一名公关人员、市场营销专家还是普通的新闻工作者&#xff0c;这些方法都将对您极具帮助。 1. 了解目标受众 在东南亚地区发布媒体稿件时&#xff0c;首要的步骤是了解目标受众。不…

Python学习笔记15:进阶篇(四)文件的读写。

文件操作 学习编程操作中&#xff0c;我觉得文件操作是必不可少的一部分。不管是读书的时候学习的c&#xff0c;c&#xff0c;工作的前学的java&#xff0c;现在学的Python&#xff0c;没学过的php和go&#xff0c;都有文件操作的模块以及库的支持&#xff0c;重要性毫无疑问。…

备忘录模式(大话设计模式)C/C++版本

备忘录模式 C #include <iostream> #include <string> using namespace std;// Memento类&#xff0c;备忘录&#xff0c;此处为角色状态存储箱 class RoleStateMemento { private:int m_vit; // 生命力int m_atk; // 攻击力int m_def; // 防御力 public:RoleStat…

运算放大器(运放)输入偏置电流、失调电流

输入偏置电流定义 理想情况下&#xff0c;并无电流进入运算放大器的输入端。而实际操作中&#xff0c;始终存在两个输入偏置电流&#xff0c;即IB和IB-(参见图1)。 I B I_B IB​的值大小不一&#xff0c;在静电计AD549中低至60 fA(每三微秒通过一个电子)&#xff0c;而在某些高…

Matlab数学建模实战应用:案例3 - 投资组合优化

目录 前言 一、问题分析 二、模型建立 三、Matlab代码实现 完整代码示例 四、模型验证 五、模型应用 实例示范&#xff1a;投资组合优化 步骤 1&#xff1a;导入数据并计算统计量 步骤 2&#xff1a;建立优化模型并求解 步骤 3&#xff1a;绘制有效前沿&#xff08;…

CVPR 2024揭幕,清华大学论文接收量霸榜,轻松碾压斯坦福、麻省理工

CVPR2024 会议之眼 快讯 会议介绍 2024 年 CVPR &#xff08;Computer Vision and Pattern Recogntion Conference) 即国际计算机视觉与模式识别会议&#xff0c;于6月17日至21日正在美国西雅图召开。CVPR是计算机视觉和模式识别领域的顶级会议之一。与ICCV和ECCV并称为计算…

TikTok账号运营:静态住宅IP为什么可以防封?

静态住宅IP代理服务是一种提供稳定、静态IP地址并可隐藏用户真实IP地址的网络代理服务。此类代理服务通常使用高速光纤网络来提供稳定、高速的互联网体验。与动态IP代理相比&#xff0c;静态住宅IP代理的IP地址更稳定&#xff0c;被封的可能性更小&#xff0c;因此更受用户欢迎…

计算机网络 —— 应用层(DHCP)

计算机网络 —— 应用层&#xff08;DHCP&#xff09; 什么是DHCPDHCP工作过程DHCP DISCOVERDHCP OFFERDHCP RQUESTDHCP ACK DHCP租约机制中继代理工作原理功能与优势 我们今天来计网的DHCP&#xff1a; 什么是DHCP DHCP&#xff08;Dynamic Host Configuration Protocol&…

2024年,收付通申请开通流程

大家好&#xff0c;今天咱们来聊聊关于APP场景中开通微信收付通的一些实用小窍门。在如今的移动互联网时代&#xff0c;很多商家都选择通过APP来提供服务和产品&#xff0c;因此如何在APP中顺利集成微信收付通功能&#xff0c;让用户能够轻松完成支付&#xff0c;就显得尤为重要…

分支结构相关

1.if 语句 结构&#xff1a; if 条件语句&#xff1a; 代码块 小练习&#xff1a; 使用random.randint()函数随机生成一个1~100之间的整数&#xff0c;判断是否是偶数 import random n random.randint(1,100) print(n) if n % 2 0:print(str(n) "是偶数") 2.else语…

Vue中使用ElementUI组件Form组件的校验validate

先准备一些el-form元素 这里面el-form中:model(v-bind:model)是单项绑定的&#xff0c;如果你写成了v-model""可能会出现校验没有效果的情况。 这是校验过后的结果了 现在开始使用下吧&#xff01; 1.在el-form中绑定一个ref&#xff0c;名字自拟,后续触发检验结果…

QT-QPainter实现一个动态充电的电池

1、效果 2、核心代码 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer>

php反序列化的一些知识

问题 <?php $raw O:1:"A":1:{s:1:"a";s:1:"b";}; echo serialize(unserialize($raw)); //O:1:"A":1:{s:1:"a";s:1:"b";}?> php反序列化的时按理说找不到A这个类&#xff0c;但是他没有报错&#xff0c;…