以下是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配置,详见。
浙公网安备 33010602011771号