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 的票据应该存储在本地机器上。以下命令将请求它:

现在可以在火狐浏览器上打开anaconda服务器,在这种情况下,URL是 anaconda.kerberos.local:8080,点击登录后,用户应该 能够立即登录,无需输入任何凭据。