Kerberos-Anaconda 存储库设置示例

Kerberos 身份验证为 Anaconda 存储库增加了一层安全性。以下示例展示了如何使用三台机器设置最小的工作安装:一台运行 anaconda 服务器,一台运行 MIT Kerberos 密钥分发中心 (KDC),以及一个客户端,我们将通过该客户端连接到这两个服务。

对于本示例,我们假设 KDC 和 Anaconda 存储库都已配置,并且这 3 个系统的网络时间协议 (NTP) 服务正在运行。

初始设置

所有 3 台机器都运行 CentOS 7,但这里提到的配置适用于许多其他 Linux 发行版。我们将使用以下域名:

  • 蟒蛇存储库: 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 Repository 已启动并运行,它已安装在 上 /home/anaconda-server/repo,本示例中的管理员帐户是 superuser。为了允许身份验证,我们首先创建一个服务主体和包含该主体的密钥表。这是通过从终端以 root 身份运行以下命令来完成的anaconda.kerberos.local

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 superuser@KERBEROS.LOCAL"

重新启动服务器以使更改生效。

客户端配置

要使用 Kerberos 身份验证登录到 Anaconda 存储库,需要支持所述身份验证协议的浏览器。在本例中,我们使用的是 Firefox。需要一些额外的调整。

  • 打开 Firefox 并在导航栏中输入about:config,如有需要点击确认按钮进入配置页面。
  • 类型协商在搜索字段筛选出的选项,双击network.negotiate-auth.trusted-的URI,并输入.kerberos.local 在文本框中。
  • network.negotiate-auth.delegation-uris执行相同的操作

最后一张票superuser应该存储在本地机器上。以下命令将请求它:

kinit superuser@KERBEROS.LOCAL

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