知识解析
-
什么是 Kerberos?
Kerberos 是一种网络认证协议,用于在非安全网络环境中对用户和服务进行身份验证。它通过“票据(ticket)”机制实现双向认证,避免密码在网络上明文传输,提高系统安全性。
-
Kerberos 的核心组件:
KDC(Key Distribution Center):包含认证服务(AS)和票据授予服务(TGS),负责发放和管理票据。
Realm(领域):Kerberos 管理的逻辑网络范围,如 kdc.com。
Principal(主体):用户或服务的唯一身份标识,如 alice@kdc.com。
Keytab 文件:存储服务主体密钥的文件,用于无密码认证。
-
主备 KDC 的作用:
主 KDC:处理所有认证请求和票据发放,管理数据库。
备 KDC:作为主 KDC 的冗余节点,在主节点故障时接管服务,实现高可用性。
-
故障转移(Failover)机制:
客户端配置多个 KDC 地址后,会在主 KDC 不可用时自动尝试备用 KDC,确保认证服务不中断。
-
时间同步的重要性:
Kerberos 依赖严格的时间同步(通常使用 NTP),防止票据因时间偏差被拒绝。票据具有生命周期(如 24 小时),超时将失效。
-
kadmin.local 工具:
本地管理工具,用于在不经过认证的情况下直接操作 Kerberos 数据库,适用于初始配置和管理员主体创建。
-
krb5.conf 配置文件结构:
[libdefaults]:设置默认领域和票据生命周期。
[realms]:定义各领域的 KDC 和 admin server 地址。
[domain_realm]:域名与领域的映射关系。
-
kpropd 与数据库同步:
用在主备 KDC 之间同步 Kerberos 数据库,确保备节点数据与主节点一致。
任务拓扑
任务环境
主KDC服务器:K1(rocky9.2)
主机名:k1.internet.com
IP地址:10.1.1.128/24
备KDC服务器:K2(rocky9.2)
主机名:k2.internet.com
IP地址:10.1.1.129/24
客户机:A1(rocky9.2)
主机名:a1.internet.com
IP地址:10.1.1.130/24
任务要求
- 服务器基本配置(IP地址设置、FQDN);
- 在k1、k2、a1上修改hosts文件,配置时间同步;
- 在K1上部署KDC服务,创建名为kdc.coom的kerberos领域,并设置默认票据生命周期为1天;
- 在K2上部署KDC服务,配置其为K1的备份节点;
- 在K1上使用kadmin.local工具,创建管理员主体 admin/admin@kdc.com、用户主体 alice@kdc.com 及服务主体 host/a1.internet.com@kdc.com;
- 在主KDC上配置客户端故障转移(指定k1和k2),为服务主体生成keytab文件,并将其安全部署至客户机A1;
- 在A1上安装Kerberos客户端,配置其指向主备KDC,并分别测试从用户alice和服务主体发起的认证,验证主备KDC的故障转移功能是否正常;
操作步骤
-
服务器基本配置(IP地址设置、FQDN)
(略)
-
修改hosts文件,配置时钟同步
在k1、k2、a1上修改hosts文件
在k1上配置主时间服务器
开启并重启服务
在k2、a1上配置时间服务
开启并重启服务
-
在k1上部署KDC服务
-
创建Kerberos数据库并创建密码
-
配置KDC服务
修改krb5.conf主配置文件
设置客户端请求票据默认有效期为24h
设置默认使用的kerberos领域
设置按顺序自动故障转移,并指定kadmin管理服务地址
修改kdc.conf配置文件
设置KDC.COM领域并强制服务端最大生命周期为24h
修改kerberos数据库权限管理配置文件,并设置admin主体拥有完全管理权限
-
在k1上创建kerberos主体
创建必要账户
启动kerberos服务
-
在k2.internet.com上安装KDC服务
-
修改主配置
-
创建Kerberos数据库并创建同k1数据库的密码
-
在k1.internet.com上导出数据库
-
在k2.internet.com上导入数据库
-
设置只允许主KDC传播数据库更新
-
启动kerberos服务
-
在a1上安装kerberos客户端
-
复制k1的配置文件
-
在k1上生成keytab并部署至a1
测试
-
测试用户密码认证
-
测试keytab认证
-
断开k1,测试备服务
-
测试时间同步