Kerberos安装和配置(2)

接下来,这个新的管理员用户需要有合适的访问控制列表(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.keytab

tips:如果keytab.kdc02的路径不同,看情况调整。
你还可以在Keytab文件中列出这些实体,在解决故障时很有用,使用klist命令:

sudo klist -k /etc/krb5.keytab

-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.keytab

tips:保证在提取keytab之前有kdc01.example.com的主机。

使用kprop功能向Secondary KDC推送数据库:

sudo kprop -r EXAMPLE.COM -f /var/lib/krb5kdc/dump kdc02.example.com

tips:如果传输成功的话,应该会有一个成功的信息。如果是一个错误信息,请在secondary KDC上的/var/log/syslog中查看更多信息。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b735001d947f44c2335c3b4deb38bd84.html