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 后,用户应该能够立即登录,而无需输入任何凭据。