以下是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  阅读(257)  评论(0)    收藏  举报