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 文档)
- 登录并请求管理员会话
$ kinit admin
- 创建一个主机条目
$ ipa host-add --force --ip-address=192.168.166.31 client.example.com
如果主机没有静态 IP,请使用$ ipa host-add client.example.com
- 设置客户端由 IPA 管理
$ ipa host-add-managedby --hosts=ipaserver.example.com client.example.com
- 为客户端生成 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-mod
或 ipa 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
参见
- Wikipedia:FreeIPA
- Freeipa30_SSSD_OpenSSH_integration.pdf[死链 2023-07-30 ⓘ]