FreeIPA
FreeIPA 是一個基於Linux開源身份認證、身份管理、授權和審計解決方案,旨在為組織提供集中式身份和策略管理服務。
這是一個類似於微軟 Active Directory 域服務,整合了 LDAP、Kerberos、DNS、NTP、Dogtag Certificate System、389 Directory Syrver、SSSD 和 Apache HTTPServer,由紅帽提供支持。
安裝[編輯 | 編輯原始碼]
FreeIPA 分為服務端和客戶端,目前(截至本文檔創建:日期2024年4月) Arch Linux 官方並不提供 FreeIPA 的服務端和客戶端的軟件包,若想安裝服務端,建議參照官方文檔使用紅帽系列發行版(如:Fedora \ Red Hat Enterprise Linux \ CentOS \ Debian )或使用容器進行安裝和部署。本文檔僅提供客戶端簡要配置說明。
客戶端版本可使用安裝 freeipa-clientAUR,當然也可以不使用安裝包,而使用手動配置與 FreeIPA 服務端進行連接,可以根據自己所需選擇對應功能模塊進行安裝配置。
下面是將當前客戶端註冊到 FreeIPA 服務端指定的域和領域。
# ipa-client-install --server=ipa.example.org --domain=example.org --realm=EXAMPLE.ORG
手動安裝客戶端[編輯 | 編輯原始碼]
freeipa客戶端 安裝時已經默認將下列軟件作為依賴進行安裝,手動僅為滿足某些設備僅實現部分功能。為了確保能與服務端進行連接,可根據需求安裝下面軟件包。
- Kerberos — 用於Kerberos身份認證(必選項)。
- SSSD — 用於LADP和Kerberos認證的代理客戶端(必選項)。
- https://sssd.io/ || sssd包
- certmonger — 證書管理服務,實現於 FreeIPA 服務端自動化證書頒發和續定(可選項)。
配置[編輯 | 編輯原始碼]
手動配置客戶端[編輯 | 編輯原始碼]
SSSD[編輯 | 編輯原始碼]
在目錄/etc/sssd/conf.d/
下添加配置文件。
/etc/sssd/conf.d/80-freeipa-example.conf
[sssd] config_file_version = 2 services = nss, pam, sudo, ssh domains = EXAMPLE.ORG #debug_level = 9 [domain/EXAMPLE.ORG] #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.org # 可選項 #ipa_server=ipaserver.example.org # 可選項 ipa_hostname=client.example.org
NSCD 使用 sssd 認證代理,修改文件 /etc/nsswitch.conf。
/etc/nsswitch.conf
passwd: files systemd sss group: files [SUCCESS=merge] systemd sss shadow: files systemd sss gshadow: files systemd sudoers: files sss publickey: files hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns networks: files protocols: files services: files ethers: files rpc: files netgroup: files
使用下面命令查詢或驗證 sssd 與 FreeIPA 的連接信息。
sssctl domain-status example.org
krb5[編輯 | 編輯原始碼]
修改文件/ect/krb5.conf
,添加域
/ect/krb5.conf
[libdefaults] default_realm = EXAMPLE.ORG 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.ORG = { admin_server = freeipaserver.example.org kdc = freeipaserver.example.org:749 default_admin = example.org } [domain_realm] example.org = EXAMPLE.ORG .example.org = EXAMPLE.ORG [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmin.log
註冊客戶端[編輯 | 編輯原始碼]
現在服務端上註冊客戶端主機,下面操作請在服務端上執行;
- 登錄到管理員會話
$ kinit admin
- 創建客戶端記錄
$ ipa host-add --force --ip-address=192.168.1.100 client.example.org
提示:需要根據您的實際情況修改對應的地址和域名,若您的主機沒有固定的IP地址,可使用下列命令創建。$ ipa host-add client.example.org
- 授權主機 ipaserver 允許管理客戶端 client
$ ipa host-add-managedby --hosts=ipaserver.example.org client.example.org
- 為客戶端生成密鑰
# ipa-getkeytab -s ipaserver.example.org -p host/client.example.org -k /tmp/client1.keytab
將剛生成的密鑰下載到客戶端,下面操作請在客戶端上執行;
$ scp user@ipaserver.example.org:/tmp/client1.keytab /tmp/krb5.keytab # mv /tmp/krb5.keytab /etc/krb5.keytab
SSH整合[編輯 | 編輯原始碼]
私鑰認證[編輯 | 編輯原始碼]
您可配置 SSHD 從 LDAP 服務上拉取用戶 SSH 公鑰,以此完成私鑰認證。只需在/etc/ssh/sshd_config.d/
目錄下創建一個sshd的配置文件。
/etc/ssh/sshd_config.d/80-freeipa-example.conf
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys AuthorizedKeysCommandUser nobody
然後再重啟 sshd.service
服務。
接下來添加公鑰。您可用使用freeipa管理頁面端進行添加,操作步驟:「身份」 -> 選擇 "用戶類別" -> 選擇對應 "用戶名" -> 在 "賬戶設置" 中找到 『SSH公鑰』,點擊"添加",將您的 公鑰文本 粘貼到出的對話框中,點擊 「設置」 後完成操作。
除了網頁端添加還可使用命令行進行添加,示例如下:
- 創建用戶時指定公鑰信息。
ipa user-add --sshpubkey="ssh-rsa AAAA..." 用戶名
- 修改已有用戶公鑰信息。
ipa user-mod --sshpubkey="ssh-rsa AAAA..." 用戶名
驗證配置:
$ sudo -u nobody sss_ssh_authorizedkeys 用戶名
如果配置正確,執行過程中應無報錯信息。
主機信任[編輯 | 編輯原始碼]
您可配置 SSHD 從 sssd 服務上獲取主機 SSH 公鑰信息,以此完成主機指紋信任。只需在/etc/ssh/sshd_config.d/
目錄下創建一個sshd的配置文件。
/etc/ssh/sshd_config.d/81-sssd-knownHosts.conf
GlobalKnownHostsFile /var/lib/sss/pubconf/known_hosts ProxyCommand /usr/bin/sss_ssh_knownhostsproxy -p %p %h
Kerberos 認證[編輯 | 編輯原始碼]
SSH 客戶端啟用 Kerberos 認證。需在/etc/ssh/sshd_config.d/
目錄下創建一個sshd的配置文件。
/etc/ssh/sshd_config.d/82-kerberos-gssApiAuth.conf
GSSAPIAuthentication yes GSSAPIDelegateCredentials yes