
2026/02/18 19:29
**FreeBSD のネイティブKerberos/LDAPを FreeIPA/IDM と統合する**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約:
この記事は、ネイティブのKerberosとLDAP認証を使用してFreeBSD 15をFreeIPAドメインに統合する方法を説明しています。Christian Hofstede‑Kuhn によるこのアプローチの先駆けとして言及されています。FreeBSD 15 の主な変更点は、Heimdal から MIT Kerberos への切替であり、これにより複雑な SSSD 設定を軽量な
nslcd(8) デーモン(net/nss-pam-ldapd パッケージ)へ置き換えることで設定が簡素化されます。管理者はまず pkg リポジトリを quarterly から latest に切替え、次に以下のパッケージをインストールします:
nss-pam-ldapd、pam_mkhomedir、sudo、および doas。ホストは ipa dnsrecord-add、ipa host-add、ipa-getkeytab などのコマンドで IPA に登録され、生成された keytab は root 所有権と 0600 のパーミッションを付与して /etc/krb5.keytab にコピーされます。作成される設定ファイルは次の通りです:
(Kerberos 設定)/etc/krb5.conf
(LDAP デーモン設定)/usr/local/etc/nslcd.conf
(/etc/nsswitch.conf
、passwd
、group
の名前サービススイッチエントリ)shadow
(SSH 用 PAM スタックで/etc/pam.d/sshd
とpam_krb5.so
を追加)pam_mkhomedir.so
(sudo 設定)/usr/local/etc/sudoers
(doas 設定)/usr/local/etc/doas.conf
SSH は Kerberos 認証を許可するように設定されます (
GSSAPIAuthentication yes など)。PAM は pam_mkhomedir.so によりホームディレクトリが自動的に作成されるように構成され、 /etc/pam.d/system の pam_krb5.so 行を有効にするとコンソールログインも機能します。この記事は Kerberos チケットを使用した SSH ログイン、パスワード不要の sudo アクセス、およびシームレスなコンソール認証の成功例を示し、FreeBSD 15 が FreeIPA と統合されることでより簡単かつ安全に管理できることを実証しています。
本文
はじめに
この記事の最初の一文から、本文が全てクリスチャン・ホフステッド‑クーン(Larvitz)氏によって行われた作業に基づいていることを明確に示したいと考えています。彼が最近執筆された Integrating FreeBSD 15 with FreeIPA: Native Kerberos and LDAP Authentication を参照しており、すべてのクレジットは彼に帰属します。
ステップを共有するだけでなく、本ブログはFreeBSD のドキュメントを保管・管理する場所としても機能させたいと考えています。多くのブログは時間とともに消えてしまうため、私が去った後もこの知識が残るようにしたいのです。
動機
- 個人的なバージョンを作成し、コードスニペットをすぐにコピー&ペーストできるようにする。
- 詳細なコマンドと出力結果を提供する。
- 便利な改善点(例:ローカルコンソールでのログイン)を追加する。
クリスチャン氏が不快にならないことを願っています。この記事については直接連絡してお知らせします。
なぜ今うまくいくのか
FreeBSD は 15.0‑RELEASE で Heimdal Kerberos 実装から MIT Kerberos に切り替わりました。この変更により、新しい方法が可能になり、以前の試みよりもはるかに簡素化されました。
| 以前の試み | 欠点 |
|---|---|
| FreeBSD 13.2 を FreeIPA/IDM と接続 | Ports からカスタムパッケージを入手し、Mariusz Zaborski のコードが必要。多くの依存関係(D‑Bus、Python 等)を持つ sssd デーモンは複雑で、アップグレード時に脆弱。 |
| FreeBSD 14.0‑STABLE を FreeIPA/IDM と接続 | 上記と同様。 |
新しいアプローチでは MIT Kerberos と
net/nss-pam-ldapd の軽量 nslcd(8) デーモンを使用します。技術的でない唯一の欠点は LGPL 2.1 / LGPL 3 ライセンスですが、FreeIPA/IDM を介した Linux ドメインへの接続には影響しません。
前提条件
- FreeIPA/IDM サーバー(旧 Connect FreeBSD 14.0‑STABLE to FreeIPA/IDM 記事の手順を参照)。
リポジトリをpkg
からquarterly
に切り替える。latest
# mkdir -p /usr/local/etc/pkg/repos # sed 's/quarterly/latest/g' /etc/pkg/FreeBSD.conf > \ /usr/local/etc/pkg/repos/FreeBSD.conf
- 必要パッケージをインストール。
# pkg install -y nss-pam-ldapd pam_mkhomedir sudo doas
- DNS が FreeIPA サーバーを解決できない場合は、
に追加。/etc/hosts
cat <<__EOF >> /etc/hosts 172.27.33.200 rhidm.lab.org rhidm 172.27.33.215 fbsd15.lab.org fbsd15 __EOF
FreeIPA サーバーの設定
IPA ホスト上で以下を実行。
# kinit admin Password for admin@LAB.ORG: # ipa dnsrecord-add lab.org fbsd15 --a-rec=172.27.33.215 --a-create-reverse # ipa host-add fbsd15.lab.org # ipa-getkeytab -s rhidm.lab.org -p host/fbsd15.lab.org@LAB.ORG \ -k /root/fbsd15.keytab # cp /root/fbsd15.keytab /usr/share/ipa/html/ # chmod 644 /usr/share/ipa/html/fbsd15.keytab
FreeBSD ホストの設定
- キートブをコピー
fetch -o /etc/krb5.keytab http://rhidm.lab.org/ipa/config/fbsd15.keytab chmod 640 /etc/krb5.keytab klist -k # 内容確認
がキートブを読み取れるようにするsshd
pw groupmod nslcd -m sshd
- Kerberos 設定ファイル (
) を作成/etc/krb5.conf
[libdefaults] default_realm = LAB.ORG dns_lookup_kdc = false dns_lookup_realm = false [realms] LAB.ORG = { kdc = rhidm.lab.org admin_server = rhidm.lab.org } [domain_realm] .lab.org = LAB.ORG lab.org = LAB.ORG
の設定 (nslcd
)/usr/local/etc/nslcd.conf
# RUN AS nslcd USER uid nslcd gid nslcd # LDAP CONNECTION DETAILS uri ldap://rhidm.lab.org base dc=lab,dc=org # USE SYSTEM KEYTAB FOR AUTH sasl_mech GSSAPI sasl_realm LAB.ORG # FORCE /bin/sh SHELL map passwd loginShell "/bin/sh"
を有効化・起動nslcd
service nslcd enable service nslcd start
の更新/etc/nsswitch.conf
sed -i '.OLD' -E \ -e 's/^group:.*/group: files ldap/g' \ -e 's/^passwd:.*/passwd: files ldap/g' \ /etc/nsswitch.conf
結果として最小限のファイルは次のようになります。
group: files ldap passwd: files ldap hosts: files dns networks: files shells: files services: compat protocols: files rpc: files
- ローカルユーザー検索をテスト
id vermaden # UID/GID とグループが表示されるはず
- SSH で Kerberos を使用する設定
/etc/ssh/sshd_config に追記。
# KRB5/GSSAPI AUTH GSSAPIAuthentication yes GSSAPICleanupCredentials yes GSSAPIStrictAcceptorCheck no
再起動。
service sshd restart
- ホームディレクトリを自動生成
/etc/pam.d/sshd の既存セッション行の直前に追加。
sed -i '.OLD' '/^session.*/i\ session optional pam_mkhomedir.so mode=0700' /etc/pam.d/sshd
- sudo 権限を付与
pw groupmod wheel -m vermaden cat <<__EOF >> /usr/local/etc/sudoers %wheel ALL=(ALL:ALL) NOPASSWD: ALL __EOF
の設定(任意)doas
permit nopass keepenv root as root permit nopass keepenv :wheel as root
コンソール Kerberos ログインの有効化
/etc/pam.d/system 内の pam_krb5.so 行をコメント解除。
sed -i '.OLD' '/pam_krb5.so/s/^#//g' /etc/pam.d/system
これで仮想コンソールから Kerberos 資格情報でログインできるようになります。
まとめ
- FreeBSD 15 が MIT Kerberos と
を通じて FreeIPA に認証されます。nslcd - SSH は GSSAPI/Kerberos を利用して接続します。
- 初回ログイン時にホームディレクトリが自動生成されます。
- wheel グループにはパスワード不要で sudo 権限があります。
- コンソールからも Kerberos でログインできます。
環境に合わせて手順を調整し、クリーンで保守性の高い FreeBSD‑FreeIPA 統合をお楽しみください!