Kerberos-Anaconda Enterprise 4 仓库设置示例#
Kerberos认证为Anaconda Enterprise 4仓库增加了一层安全性。以下示例展示了如何设置一个最小的工作安装,涉及三台机器:一台运行anaconda服务器,一台运行MIT Kerberos密钥分发中心(KDC),以及一台客户端,我们将从该客户端连接到这两项服务。
对于这个例子,我们假设KDC和Anaconda Enterprise 4 Repository都已经配置好,并且这3个系统的网络时间协议(NTP)服务都在运行。
初始设置#
所有3台机器都在运行CentOS 7,但这里提到的配置适用于许多其他Linux发行版。我们将使用以下域名:
Anaconda Enterprise 4 仓库:
anaconda.kerberos.local
Kerberos KDC:
kdc.kerberos.local
客户端:
client.kerberos.local
确保配置文件中的信息正确
/etc/hostname
和 /etc/hosts
以允许反向DNS查找。
Kerberos领域的名称是KERBEROS.LOCAL
。这3台机器拥有相同的配置文件/etc/krb5.conf
:
[logging]
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
default = SYSLOG:NOTICE:DAEMON
[libdefaults]
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = KERBEROS.LOCAL
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
KERBEROS.LOCAL = {
kdc = kdc.kerberos.local
admin_server = kdc.kerberos.local
}
[domain_realm]
.kerberos.local = KERBEROS.LOCAL
kerberos.local = KERBEROS.LOCAL
在kdc.kerberos.local
上,文件/var/kerberos/krb5kdc/kdc.conf
和
/var/kerberos/krb5kdc/kadm5.acl
应相应地进行配置。
配置Anaconda仓库#
此时,Anaconda Enterprise 4 仓库已经启动并运行,它安装在
/home/anaconda-server/repo
,本例中的管理员账户是
superuser
。为了允许身份验证,我们首先创建一个服务主体和
包含该主体的密钥表。这是通过在
anaconda.kerberos.local
上的终端以 root 身份运行以下命令来完成的。
kadmin -q "addprinc HTTP/anaconda.kerberos.local"
kadmin -q "ktadd -k /home/anaconda-server/repo/etc/anaconda-server/http.keytab HTTP/anaconda.kerberos.local"
chown anaconda-server:anaconda-server \
/home/anaconda-server/repo/etc/anaconda-server/http.keytab
chmod 600 /home/anaconda-server/repo/etc/anaconda-server/http.keytab
现在编辑配置文件
/home/anaconda-server/repo/etc/anaconda-server/config.yaml
并添加以下行:
AUTH_TYPE: KERBEROS
KRB5_KTNAME: /home/anaconda-server/repo/etc/anaconda-server/http.keytab
最后,为Kerberos领域的管理员账户添加主体:
kadmin -q "addprinc [email protected]"
重启服务器以使更改生效。
客户端配置#
要使用Kerberos身份验证登录Anaconda Enterprise 4 Repository,需要一个支持该身份验证协议的浏览器。在这个例子中,我们使用的是Firefox。需要进行一些额外的调整。
打开Firefox并在导航栏中输入about:config,如有必要点击确认按钮以继续进入配置页面。
在搜索字段中输入negotiate以过滤选项,双击network.negotiate-auth.trusted-uris并在文本框中输入
.kerberos.local
。对network.negotiate-auth.delegation-uris执行相同的操作。
最后,superuser
的票据应该存储在本地机器上。以下命令将请求它:
kinit [email protected]
现在可以在火狐浏览器上打开anaconda服务器,在这种情况下,URL是
anaconda.kerberos.local:8080
,点击登录后,用户应该
能够立即登录,无需输入任何凭据。