以下是CentOS 7部署Kerberos的实战详解,整合了多篇权威指南的核心步骤与关键配置要点:


​一、环境准备​

  1. ​系统要求​

    • 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)。
  2. ​安装依赖包​

    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

​三、客户端配置​

  1. ​安装客户端工具​

    sudo yum install -y krb5-workstation
  2. ​同步配置文件​

    复制服务端的/etc/krb5.conf到所有客户端。

  3. ​测试用户认证​

    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的实战详解的更多相关文章

  1. CentOS下部署巡风步骤详解

    本博客已经迁移到新的网站,www.je2se.com,请大家移步关注,互相交流,共同成长 巡风Centos 6.5部署指南 基础环境要求: Python2.7+ 安装Centos相关依赖 # Cent ...

  2. 阿里云linux centos 一键部署web环境--图文详解

    一.购买阿里云服务器ECS 1,登录阿里云,选择阿里云服务器ECS 2,创建实例 或 3,选好配置 4,完成配置 注:记住用户名和密码 二.一键配置linux环境 1,下载xshell,安装成功后,建 ...

  3. Linux中用postfix搭建邮件服务器实战详解

    Linux中用postfix搭建邮件服务器实战详解 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.Postfix试图更快.更容易管理.更安全,同时 ...

  4. C#二次开发BIMFACE系列61 File Management文件管理服务接口二次开发及实战详解

    系列目录     [已更新最新开发文章,点击查看详细] 在我的博客<C#二次开发BIMFACE系列61 File Management文件管理服务接口二次开发及实战详解>最后列出了 Fil ...

  5. 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING

    <Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th  2014 Email:skyseraph00@163.com 更多精彩请直接 ...

  6. 011-Scala中的apply实战详解

    011-Scala中的apply实战详解 object中的apply方法 class中的apply方法 使用方法 apply方法可以应用在类或者Object对象中 class类 必须要创建实例化的类对 ...

  7. 010-Scala单例对象、伴生对象实战详解

    010-Scala单例对象.伴生对象实战详解 Scala单例对象详解 函数的最后一行是返回值 子项目 Scala伴生对象代码实战 object对象的私有成员可以直接被class伴生类访问,但是不可以被 ...

  8. 008-Scala主构造器、私有构造器、构造器重载实战详解

    008-Scala主构造器.私有构造器.构造器重载实战详解 Scala主构造器实战 无参数的主构造器 分析 1.name 需要赋初值,一般通过占位符来代表空值 2.private 声明私有的age 生 ...

  9. 009-Scala的内部类实战详解

    009-Scala的内部类实战详解 Scala内部类详解 与java的区别 java的内部类是从属于外部类的 Scala的内部类是从属于对象的 内部类在调用方法的时候传递的内部类只能是由自己本身 欢迎 ...

  10. 007-Scala类的属性和对象私有字段实战详解

    007-Scala类的属性和对象私有字段实战详解 Scala类的使用实战 变量里的类必须赋初值 def函数时如果没参数可不带括号 2.不需要加Public声明 getter与setter实战 gett ...

随机推荐

  1. Django startproject, startapp后的配置 总结

    (1)在project的settings.py中的INSTALL_APPS中添加新建的各个app的名字. (2)设置templates文件夹的位置(容纳html文件):TEMPLATE_DIR=os. ...

  2. 仓颉开发语言入门教程:常见UI组件介绍和一些问题踩坑

    幽蓝君发现一个问题,仓颉开发语言距离发布马上一年了,一些知名App已经使用仓颉开发了许多功能,但是网络上关于仓颉开发语言的教程少之又少,系统性的教程更是没有,仓颉官网的文档也远远不如ArkTS详尽. ...

  3. BS直聘职位数据采集与分析(爬虫)

    一.项目介绍 在当今竞争激烈的就业市场中,及时掌握职位信息和市场动态变得尤为重要.本文将详细介绍如何使用Python开发一个爬虫项目,自动采集BOSS直聘网站的职位数据,并对数据进行处理和分析. 1. ...

  4. 在LLVM中的greedy Register Allocation pass代码详解

    LLVM 贪婪寄存器分配器(RAGreedy)详细处理流程 日期: 2025年5月29日 摘要 本文深入分析 LLVM 贪婪寄存器分配器(RAGreedy)的处理流程,详细描述从优先级队列获取虚拟寄存 ...

  5. DeepSeek为什么现在感觉不火了?

    DeepSeek为什么现在感觉不火了?一个技术圈老兵的冷静分析 作为一个在AI圈摸爬滚打多年的技术从业者,看到这个问题,我想从几个维度来聊聊DeepSeek这个现象级产品的起落轨迹. 说实话,Deep ...

  6. 在Linux下使用wxWidgets进行跨平台GUI开发

    在Linux下使用wxWidgets进行跨平台GUI开发 wxWidgets是一个功能强大的跨平台C++ GUI框架,支持Windows.Linux和macOS等多种平台.本文将详细介绍在Linux系 ...

  7. Vue3自定义指令实现权限控制

    使用Pinia(Vue.js的轻量级状态管理库,是Vuex的替代品)来管理用户权限,并结合自定义指令控制元素的显隐.步骤操作如下: 1.安装Pinia: npm install pinia 或 yar ...

  8. etcd详细介绍

    一.etcd介绍 etcd是一个分布式.可靠的key-value存储的分布式系统,它不仅仅可以用于存储,还提供共享配置和服务发现.这里提供配置共享和服务发现的系统较多,比较常用的有zookeeper. ...

  9. 鸿蒙运动项目开发:封装超级好用的 RCP 网络库(上)—— 请求参数封装,类型转化器与日志记录篇

    鸿蒙核心技术##运动开发## Remote Communication Kit(远场通信服务) 在鸿蒙运动项目开发中,网络通信是不可或缺的一部分.无论是获取运动数据.同步用户信息,还是加载运动视频资源 ...

  10. [书籍精读]《CSS世界》精读笔记分享

    写在前面 书籍介绍:本书从前端开发人员的需求出发,以"流"为线索,从结构.内容到美化装饰等方面,全面且深入地讲解前端开发人员必须了解和掌握的大量的CSS知识点.同时,作者结合多年的 ...