FreeIPA - Arch Linux 中文维基

跳至內容

# FreeIPA

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 FreeIPA，最近一次同步於 2024-04-05，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- OpenLDAP
- Kerberos
- 認證管理

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身份認證（必選項）。

  http://web.mit.edu/kerberos/ || krb5包

- SSSD — 用於LADP和Kerberos認證的代理客戶端（必選項）。

  https://sssd.io/ || sssd包

- NTP——用於客戶端與服務端時間同步（強烈建議安裝，若主機時間不一致將導致驗證無法進行）。
- Autofs — 用於自動掛載目標文件系統，常見的用法如掛載漫遊用戶的家目錄（可選項）。

  https://www.kernel.org/doc/html/latest/filesystems/autofs.html || autofsAUR

- certmonger — 證書管理服務,實現於 FreeIPA 服務端自動化證書頒發和續定（可選項）。

  https://www.pagure.io/certmonger || certmongerAUR

## 配置

### 手動配置客戶端

#### 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

提示：若在已DNS中添加了相關 SRV 記錄，以上所標識的 可選項 可不作配置。

NSCD 使用 sssd（英語：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

### 註冊客戶端

現在服務端上註冊客戶端主機，下面操作請在服務端上執行；

1. 登錄到管理員會話

       $ kinit admin

2. 創建客戶端記錄

       $ ipa host-add --force --ip-address=192.168.1.100 client.example.org

   提示：需要根據您的實際情況修改對應的地址和域名，若您的主機沒有固定的IP位址，可使用下列命令創建。

       $ ipa host-add client.example.org

3. 授權主機 ipaserver 允許管理客戶端 client

       $ ipa host-add-managedby --hosts=ipaserver.example.org client.example.org

4. 為客戶端生成密鑰

       # 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

## 參考

- FreeIPA:項目官方頁
- 維基百科:FreeIPA
- 紅帽:Linux 域身份、身份驗證和策略指南
- GtiHub:sssd和OpenSSH集成.pdf

分類：​

- 網絡
- 安全
- 紅帽

FreeIPA
新增話題