接下来,这个新的管理员用户需要有合适的访问控制列表(ACL)权限。它被配置在/etc/krb5kdc/kadm5.acl文件中:
steve/admin@EXAMPLE.COM这赋予steve/admin对域中所有principals进行任何操作的能力。你可以对principals配置更加严格的权限。这是很方便的,如果你需要一个admin principal在kerberos客户端中具有较低的权限。更多细节请查看kadm5.acl文件。
现在重ikrb5-admin-server 使新的ACL生效:
sudo service krb5-admin-server restart
现在这个新的user principal 可以通过kinit命令进行测试:
kinit steve/admin steve/admin@EXAMPLE.COM's Password:输入密码后,使用klist命令查看TGT的信息:
klist Credentials cache: FILE:/tmp/krb5cc_1000 Principal: steve/admin@EXAMPLE.COM Issued Expires Principal Jul 13 17:53:34 Jul 14 03:53:34 krbtgt/EXAMPLE.COM@EXAMPLE.COM其中的缓存文件krb5cc_1000由krb5cc_ 前缀和用户的id(uid)组成,这里是1000.你应该在/etc/host文件中添加一个入口,这样客户端才能访问到KDC。比如:
192.168.0.1 kdc01.example.com kdc01把 192.168.0.1 替换成你的KDC的ip地址。这经常发生在你的Kerberos域包含被路由分割的不同的网络。
使客户端自动定位KDC的Realm的最佳方式,是实用DNS SRV 记录。添加下面的内容到 /etc/named/db.example.com:
_kerberos._udp.EXAMPLE.COM. IN SRV 1 0 88 kdc01.example.com. _kerberos._tcp.EXAMPLE.COM. IN SRV 1 0 88 kdc01.example.com. _kerberos._udp.EXAMPLE.COM. IN SRV 10 0 88 kdc02.example.com. _kerberos._tcp.EXAMPLE.COM. IN SRV 10 0 88 kdc02.example.com. _kerberos-adm._tcp.EXAMPLE.COM. IN SRV 1 0 749 kdc01.example.com. _kpasswd._udp.EXAMPLE.COM. IN SRV 1 0 464 kdc01.example.com.tips:用你的主机名,主KDC和从KDC替换掉EXAMPLE.COM, kdc01, 和 kdc02
参考 域名解析服务 (DNS) 获得设置DNS相关细节.
现在,你的新Kerberos域已经为认证客户端准备好。
Secondary KDC一旦你在你的网络中有了一个KDC,拥有一个Secondary KDC是一个好的实践,以防主KDC不可用。如果你的Kerberos客户端在不同的网络中(可能被使用NAT的路由分隔开),在每一个网络中配置secondary KDC是一个明智的选择。
首先,安装包,当被询问Kerberos和管理服务器名时填入主KDC的名字:
sudo apt-get install krb5-kdc krb5-admin-server
一旦包被安装后,创建Secondary KDC的主机实体。在命令提示符下输入:
kadmin -q "addprinc -randkey host/kdc02.example.com"tips:随后,使用任何kadmin的命令是,你将被提示输入username/admin@EXAMPLE.COM实体的密码。
提取keytab文件:
kadmin -q "ktadd -norandkey -k keytab.kdc02 host/kdc02.example.com"
现在在你当前目录应该有一个keytab.kdc02的文件,把他移动到/etc/krb5.keytab:
sudo mv keytab.kdc02 /etc/krb5.keytabtips:如果keytab.kdc02的路径不同,看情况调整。
你还可以在Keytab文件中列出这些实体,在解决故障时很有用,使用klist命令:
-k选项表示这是一个keytab文件。
接下来在每个KDC节点上需要有kpropd.acl文件来列出所有域中的KDC,在主KDC和secondary KDC,创建/etc/krb5kdc/kpropd.acl:
host/kdc01.example.com@EXAMPLE.COM host/kdc02.example.com@EXAMPLE.COM
在Secondary KDC上创建一个空的数据库:
sudo kdb5_util -s create
现在,开启kpropd守护进程,用来监听kprop功能的连接。kprop是用来传输转储文件的。
sudo kpropd -S
在主KDC的终端创建实体数据库的转储文件:
sudo kdb5_util dump /var/lib/krb5kdc/dump
提取主KDC的keytab文件并拷贝到/etc/krb5.keytab:
kadmin -q "ktadd -k keytab.kdc01 host/kdc01.example.com" sudo mv keytab.kdc01 /etc/krb5.keytabtips:保证在提取keytab之前有kdc01.example.com的主机。
使用kprop功能向Secondary KDC推送数据库:
sudo kprop -r EXAMPLE.COM -f /var/lib/krb5kdc/dump kdc02.example.comtips:如果传输成功的话,应该会有一个成功的信息。如果是一个错误信息,请在secondary KDC上的/var/log/syslog中查看更多信息。