FreeIPA

出自 ArchWiki

本文或章节需要语言、wiki 语法或风格方面的改进。请参阅 Help:Style 以供参考。

原因:这篇文章只关于客户端吗?如果是,应该说明。(在 Talk:FreeIPA 中讨论)

本文或章节需要扩充。

原因:如何安装客户端?这里有 freeipa-clientAUR。(在 Talk:FreeIPA 中讨论)

FreeIPA 是一个开源的身份、策略和审计 (IPA) 套件,由红帽赞助,提供类似于 Microsoft 的 Active Directory 的服务

手动配置为 IPA 客户端

确保您的时钟已同步。否则 Kerberos 将无法工作。建议使用 NTP

以下章节描述了将客户端 client.example.com 注册到 example.com 域中的 FreeIPA 服务器 ipaserver.example.com 的手动过程,而不是使用 ipa-client-install 脚本进行自动客户端配置和注册。

配置 SSSD 和 Kerberos

按照 LDAP 身份验证说明 设置 SSSD。使用类似于以下的 SSSD 配置,替换必要的字段

/etc/sssd/sssd.conf
[sssd]
config_file_version = 2
services = nss, pam, sudo, ssh
domains = EXAMPLE.COM
#debug_level = 9

[domain/EXAMPLE.COM]
#debug_level = 9
cache_credentials = true
krb5_store_password_if_offline = true
id_provider = ipa
auth_provider = ipa
access_provider = ipa
chpass_provider = ipa
#ipa_domain=example.com  # Optional if you set SRV records in DNS
#ipa_server=ipaserver.example.com  # Optional if you set SRV records in DNS
ipa_hostname=client.example.com

以类似于 LDAP 的方式配置 pam,将 pam_ldap.so 替换为 pam_sss.so

为您的域创建一个 /etc/krb5.conf 文件

/etc/krb5.conf
[libdefaults]
        default_realm = EXAMPLE.COM
        dns_lookup_realm = false
        dns_lookup_kdc = false
        rdns = false
        ticket_lifetime = 24h
        forwardable = yes
        #allow_weak_crypto = yes  # Only if absolutely necessary. Currently FreeIPA supports strong crypto.

[realms]
        EXAMPLE.COM = {
                admin_server = freeipaserver.example.com
                kdc = freeipaserver.example.com:749
                default_admin = example.com
        }

[domain_realm]
        example.com = EXAMPLE.COM
        .example.com = EXAMPLE.COM

[logging]
        default = FILE:/var/log/krb5libs.log
        kdc = FILE:/var/log/krb5kdc.log
        admin_server = FILE:/var/log/kadmin.log

注册客户端

在 FreeIPA 服务器上,将客户端添加到 IPA 服务器 (来自 Fedora 文档)

  1. 登录并请求管理员会话
    $ kinit admin
  2. 创建一个主机条目
    $ ipa host-add --force --ip-address=192.168.166.31 client.example.com
    如果主机没有静态 IP,请使用
    $ ipa host-add client.example.com
  3. 设置客户端由 IPA 管理
    $ ipa host-add-managedby --hosts=ipaserver.example.com client.example.com
  4. 为客户端生成 keytab
    # ipa-getkeytab -s ipaserver.example.com  -p host/client.example.com -k /tmp/client1.keytab

在客户端上安装 keytab

$ scp user@ipaserver.example.com:/tmp/client1.keytab krb5.keytab
# mv krb5.keytab /etc/krb5.keytab

SSH 集成

authorized_keys

您可以配置 SSHD 以从 LDAP 目录中获取用户 SSH 公钥,方法是取消注释 /etc/ssh/sshd_config 中的这些行

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody

然后重启 sshd.service

您可以通过 Web 界面将您的 ssh 密钥添加到您的 FreeIPA 用户帐户,或者使用 -sshpubkey='ssh-rsa AAAA...' 参数到 ipa user-modipa user-create 命令。

测试它

$ sudo -u nobody sss_ssh_authorizedkeys <username>

您应该在标准输出上看到您的 ssh 公钥,并且在标准错误上没有错误消息。

known_hosts

您可以配置 SSH 以从 FreeIPA 中的目录条目中获取主机公钥信息,方法是在 /etc/ssh/ssh_config 中添加这些行

GlobalKnownHostsFile /var/lib/sss/pubconf/known_hosts
ProxyCommand /usr/bin/sss_ssh_knownhostsproxy -p %p %h

Kerberos/GSS API 认证

您可以通过取消注释和更改 /etc/ssh/ssh_config 中的以下行,为 SSH 客户端启用 Kerberos / GSS API 认证到 FreeIPA 成员主机

GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes

参见