CentOS 7部署Kerberos的实战详解
以下是CentOS 7部署Kerberos的实战详解,整合了多篇权威指南的核心步骤与关键配置要点:
一、环境准备
系统要求
- CentOS 7及以上版本,至少2GB内存。
- 时钟同步:所有节点需配置NTP服务,时间偏差≤5分钟(否则认证失败)。
sudo yum install -y ntp && sudo systemctl start ntpd && sudo systemctl enable ntpd
- 域名解析:确保所有主机可通过DNS或
/etc/hosts解析KDC主机名(如kdc.example.com)。
安装依赖包
sudo yum install -y krb5-server krb5-workstation krb5-libs openldap-clients
️ 二、服务端配置(KDC)
1. 核心配置文件
/etc/krb5.conf(全局配置):[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
udp_preference_limit = 1 # 禁用UDP防Hadoop兼容问题
[realms]
EXAMPLE.COM = {
kdc = kdc.example.com:88
admin_server = kdc.example.com:749
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
注:替换
EXAMPLE.COM为实际域名(如MYCOMPANY.COM),kdc.example.com为KDC服务器主机名。
/var/kerberos/krb5kdc/kdc.conf(KDC专用配置):[kdcdefaults]
kdc_ports = 88
[realms]
EXAMPLE.COM = {
acl_file = /var/kerberos/krb5kdc/kadm5.acl
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal # 避免aes256(需Java额外包)
}
2. 初始化Kerberos数据库
sudo kdb5_util create -s -r EXAMPLE.COM
输入数据库主密码(建议强密码),
-s生成密钥存储文件。
3. 配置管理员权限
- 编辑
/var/kerberos/krb5kdc/kadm5.acl:*/admin@EXAMPLE.COM *
表示所有
*/admin主体拥有完全权限。
4. 创建管理员Principal
sudo kadmin.local -q "addprinc admin/admin" # 设置两次密码
5. 启动服务
sudo systemctl start krb5kdc kadmin
sudo systemctl enable krb5kdc kadmin
三、客户端配置
安装客户端工具
sudo yum install -y krb5-workstation
同步配置文件
复制服务端的/etc/krb5.conf到所有客户端。测试用户认证
kinit username@EXAMPLE.COM # 输入密码获取TGT
klist # 验证票据缓存
四、服务主体与Keytab生成
为服务(如SSH)配置Kerberos
sudo kadmin.local -q "addprinc -randkey host/server.example.com"
sudo kadmin.local -q "ktadd host/server.example.com" # 生成keytab
将生成的
/etc/krb5.keytab分发至服务主机。
SSH集成示例
编辑/etc/ssh/sshd_config:
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
重启SSHD:sudo systemctl restart sshd。
️ 五、防火墙与故障排查
防火墙规则
sudo firewall-cmd --add-service=kerberos --permanent
sudo firewall-cmd --reload
开放端口:UDP/TCP 88(KDC)、749(kadmin)。
常见问题解决
| 问题 | 原因与解决方案 |
|---|---|
| 时钟偏差(KRB_AP_ERR_SKEW) | 检查NTP同步,误差需≤5分钟。 |
| 认证超时 | 检查KDC服务状态(systemctl status krb5kdc)及防火墙规则。 |
| UDP丢包 | 强制使用TCP:在krb5.conf的[libdefaults]添加udp_preference_limit = 1。 |
总结
通过以上步骤,CentOS 7已部署高可用Kerberos认证系统。关键要点:
时间同步与域名解析是认证成功的前提。
服务端配置需注意加密算法兼容性(避免aes256)。
使用
keytab替代密码认证提升服务安全性。
进阶场景(如Hadoop集成或LDAP联动)需调整ACL策略与SPN配置,详见。
CentOS 7部署Kerberos的实战详解的更多相关文章
- CentOS下部署巡风步骤详解
本博客已经迁移到新的网站,www.je2se.com,请大家移步关注,互相交流,共同成长 巡风Centos 6.5部署指南 基础环境要求: Python2.7+ 安装Centos相关依赖 # Cent ...
- 阿里云linux centos 一键部署web环境--图文详解
一.购买阿里云服务器ECS 1,登录阿里云,选择阿里云服务器ECS 2,创建实例 或 3,选好配置 4,完成配置 注:记住用户名和密码 二.一键配置linux环境 1,下载xshell,安装成功后,建 ...
- Linux中用postfix搭建邮件服务器实战详解
Linux中用postfix搭建邮件服务器实战详解 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.Postfix试图更快.更容易管理.更安全,同时 ...
- C#二次开发BIMFACE系列61 File Management文件管理服务接口二次开发及实战详解
系列目录 [已更新最新开发文章,点击查看详细] 在我的博客<C#二次开发BIMFACE系列61 File Management文件管理服务接口二次开发及实战详解>最后列出了 Fil ...
- 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
<Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th 2014 Email:skyseraph00@163.com 更多精彩请直接 ...
- 011-Scala中的apply实战详解
011-Scala中的apply实战详解 object中的apply方法 class中的apply方法 使用方法 apply方法可以应用在类或者Object对象中 class类 必须要创建实例化的类对 ...
- 010-Scala单例对象、伴生对象实战详解
010-Scala单例对象.伴生对象实战详解 Scala单例对象详解 函数的最后一行是返回值 子项目 Scala伴生对象代码实战 object对象的私有成员可以直接被class伴生类访问,但是不可以被 ...
- 008-Scala主构造器、私有构造器、构造器重载实战详解
008-Scala主构造器.私有构造器.构造器重载实战详解 Scala主构造器实战 无参数的主构造器 分析 1.name 需要赋初值,一般通过占位符来代表空值 2.private 声明私有的age 生 ...
- 009-Scala的内部类实战详解
009-Scala的内部类实战详解 Scala内部类详解 与java的区别 java的内部类是从属于外部类的 Scala的内部类是从属于对象的 内部类在调用方法的时候传递的内部类只能是由自己本身 欢迎 ...
- 007-Scala类的属性和对象私有字段实战详解
007-Scala类的属性和对象私有字段实战详解 Scala类的使用实战 变量里的类必须赋初值 def函数时如果没参数可不带括号 2.不需要加Public声明 getter与setter实战 gett ...
随机推荐
- Django startproject, startapp后的配置 总结
(1)在project的settings.py中的INSTALL_APPS中添加新建的各个app的名字. (2)设置templates文件夹的位置(容纳html文件):TEMPLATE_DIR=os. ...
- 仓颉开发语言入门教程:常见UI组件介绍和一些问题踩坑
幽蓝君发现一个问题,仓颉开发语言距离发布马上一年了,一些知名App已经使用仓颉开发了许多功能,但是网络上关于仓颉开发语言的教程少之又少,系统性的教程更是没有,仓颉官网的文档也远远不如ArkTS详尽. ...
- BS直聘职位数据采集与分析(爬虫)
一.项目介绍 在当今竞争激烈的就业市场中,及时掌握职位信息和市场动态变得尤为重要.本文将详细介绍如何使用Python开发一个爬虫项目,自动采集BOSS直聘网站的职位数据,并对数据进行处理和分析. 1. ...
- 在LLVM中的greedy Register Allocation pass代码详解
LLVM 贪婪寄存器分配器(RAGreedy)详细处理流程 日期: 2025年5月29日 摘要 本文深入分析 LLVM 贪婪寄存器分配器(RAGreedy)的处理流程,详细描述从优先级队列获取虚拟寄存 ...
- DeepSeek为什么现在感觉不火了?
DeepSeek为什么现在感觉不火了?一个技术圈老兵的冷静分析 作为一个在AI圈摸爬滚打多年的技术从业者,看到这个问题,我想从几个维度来聊聊DeepSeek这个现象级产品的起落轨迹. 说实话,Deep ...
- 在Linux下使用wxWidgets进行跨平台GUI开发
在Linux下使用wxWidgets进行跨平台GUI开发 wxWidgets是一个功能强大的跨平台C++ GUI框架,支持Windows.Linux和macOS等多种平台.本文将详细介绍在Linux系 ...
- Vue3自定义指令实现权限控制
使用Pinia(Vue.js的轻量级状态管理库,是Vuex的替代品)来管理用户权限,并结合自定义指令控制元素的显隐.步骤操作如下: 1.安装Pinia: npm install pinia 或 yar ...
- etcd详细介绍
一.etcd介绍 etcd是一个分布式.可靠的key-value存储的分布式系统,它不仅仅可以用于存储,还提供共享配置和服务发现.这里提供配置共享和服务发现的系统较多,比较常用的有zookeeper. ...
- 鸿蒙运动项目开发:封装超级好用的 RCP 网络库(上)—— 请求参数封装,类型转化器与日志记录篇
鸿蒙核心技术##运动开发## Remote Communication Kit(远场通信服务) 在鸿蒙运动项目开发中,网络通信是不可或缺的一部分.无论是获取运动数据.同步用户信息,还是加载运动视频资源 ...
- [书籍精读]《CSS世界》精读笔记分享
写在前面 书籍介绍:本书从前端开发人员的需求出发,以"流"为线索,从结构.内容到美化装饰等方面,全面且深入地讲解前端开发人员必须了解和掌握的大量的CSS知识点.同时,作者结合多年的 ...