CentOS Stream 9: 500人以上のユーザーを一元管理するためのFreeIPA Clientインストール方法

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

クイックデプロイ:3ステップでドメイン参加

CentOS Stream 9を構築したばかりで、FreeIPAからユーザー情報を「スムーズに」取得できるようにしたいですか?DNS設定が正しく行われていれば、以下のコマンドセットを使用するだけで完了します。時間を最大限に節約するために、煩雑な手順を省いてまとめました。

# 1. 必要なクライアントパッケージをインストール
sudo dnf install -y freeipa-client

# 2. サーバーのIPをhostsファイルにマップ(内部DNSが未準備の場合)
echo "192.168.1.10 ipaserver.itfromzero.local" | sudo tee -a /etc/hosts

# 3. ドメイン参加を実行
sudo ipa-client-install --mkhomedir --no-ntp

Principal(admin)とPasswordを入力し、Client configuration completeという行が表示されれば成功です。しかし、大規模なプロジェクトの実際のデプロイでは、DNSエラーや時刻のズレが発生することがよくあります。ご安心ください。以下でそれらの徹底的な対処法を解説します。

なぜシステム管理者はFreeIPAに「夢中」になるのか?

200台のサーバーを管理していると想像してみてください。手作業でローカルユーザーを作成し、各サーバーにSSHキーをコピーするのは悪夢です。従業員が退職した際、アクセス権を削除するだけで午前中が潰れてしまいます。FreeIPAは、そのような悩みを解決するために生まれました。

このシステムは、389 Directory Server(LDAP)、MIT Kerberos(認証)、Dogtag(デジタル証明書)の力を組み合わせています。CentOS 9サーバーがFreeIPAに参加すると、セキュリティネットワークの重要な一部となります。Web UIでユーザーを無効化するだけで、クラスター全体へのアクセス権を即座に遮断できます。

ステップ1:準備チェックリスト(トラブルを避けるために必須)

信じてください。FreeIPA Clientのインストールエラーの90%は、DNS時刻(NTP)に起因します。インストールコマンドを実行する前に、これら2つの項目を注意深く確認してください。

FQDN形式のホスト名設定

FreeIPAは、localhostweb-serverのような短いホスト名を極端に嫌います。必ずFQDN(Fully Qualified Domain Name)を使用する必要があります。

sudo hostnamectl set-hostname client01.itfromzero.local

ドメイン名解決の確認

クライアントはドメイン名を通じてサーバーを見つける必要があります。最も高い精度を確保するために、/etc/resolv.confファイルを編集してIPAサーバーのIPを指すように設定できます。

# Kerberosレコードが存在するか確認
dig -t SRV _kerberos._udp.itfromzero.local

Chronyによる時刻同期

Kerberosプロトコルでは、クライアントとサーバーの間の時刻のズレが300秒(5分)を超えると認証が拒否されます。CentOS Stream 9では、<a href="https://itfromzero.com/ja/linux/centos-vi-ja-linux/centos-stream-9%e3%81%b8%e3%81%aechrony%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%a8%e8%a8%ad%e5%ae%9a%ef%bc%9antp%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%81%a8%e3%82%af%e3%83%a9.html">chronyd</a>がデフォルトかつ最も安定した選択肢です。

sudo systemctl enable --now chronyd
# システム時刻を即座に強制更新
sudo chronyc makestep

ステップ2:インストールと詳細設定

CentOS 9でのパッケージインストールは、モジュールが最適化されているため非常にスムーズです。インストール後、システムが誤った情報を推測しないように、特定のパラメータを指定してipa-client-installコマンドを使用します。

sudo dnf install -y freeipa-client

重要な注意点:私は常に--mkhomedirフラグを使用します。これがないと、ドメインユーザーがログインした際にホームディレクトリが作成されず、シェルエラーで即座に切断されてしまいます。

sudo ipa-client-install \
    --server=ipaserver.itfromzero.local \
    --domain=itfromzero.local \
    --mkhomedir \
    --no-ntp

フラグの簡単な説明:

  • --server: 管理サーバーを正確に特定します。
  • --domain: アイデンティティ管理領域の名前です。
  • --no-ntp: 既存のchronyを使用し、IPAによる時刻設定の競合を避けます。

ステップ3:動作確認

インストールが完了しました。Kerberosからチケットを取得して、サーバーが正しく接続されているかテストしてみましょう。

# IPAのadminユーザーでログインを試行
kinit admin

# 保持しているチケットのリストを表示
klist

チケットの情報と有効期限が表示されれば、サーバーは正式にドメインに参加しています。

応用:Sudoルールの集中管理

FreeIPAの最大の利点は、sudo権限をリモートから管理できることです。各サーバーにSSHでログインして/etc/sudoersを編集する必要はもうありません。ただし、CentOS 9でこれらのルールを認識させるには、SSSDを少し設定する必要があります。

まず、/etc/nsswitch.confファイルに以下の行があることを確認してください:

sudoers: files sss

次に、/etc/sssd/sssd.confファイルにsudoサービスを追加します:

[sssd]
services = nss, pam, ssh, sudo

最後に、サービスを再起動して変更を適用します:sudo systemctl restart sssd

トラブルシューティング:深夜によくあるエラー

1. 「SASL Bind failed」エラー
このエラーは通常、パスワードの入力ミスやadminアカウントのロックが原因です。まずkinit adminを実行してアカウントの状態を確認してください。

2. 証明書の重複エラー
同じホスト名でサーバーを再インストールした場合、IPAサーバーは接続を拒否します。IPAのWeb UIにログインし、「Host」セクションからそのマシンを削除(Unenroll)してから、再度参加させる必要があります。

3. ユーザーログイン時にホームディレクトリがない
インストール時に--mkhomedirフラグを忘れた場合は、最初からやり直すことなく、以下のコマンドで修正できます:

sudo authselect select sssd with-mkhomedir --force

システム管理者からの結び

次世代のSSSDのおかげで、CentOS Stream 9へのFreeIPA의 導入は非常にスムーズです。バージョン7から9への移行プロジェクトでは、LDAPクエリの速度が約30%向上し、キャッシュのハングアップもほとんど見られませんでした。10台以上のサーバーを管理しているなら、今すぐFreeIPAをセットアップして、手動のuseraddに追われることのない安眠できる夜を手に入れましょう。

Share: