以下是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配置,详见。

posted on 2025-07-15 13:44  LeeHang  阅读(107)  评论(0)    收藏  举报