手動によるアカウント管理の悩み
20台のLinuxサーバーを管理している場面を想像してみてください。新しい従業員が入社するたびに、各サーバーにSSHでログインし、useraddを実行してパスワードを設定しなければなりません。この作業は退屈なだけでなく、ミスが発生しやすくなります。その従業員が退職した際、すべてのノードから漏れなくアカウントを削除できているか確認するのは、非常に骨の折れる作業です。
CentOS 8のサポートが突然終了した際、私はアイデンティティ管理システム全体をCentOS Stream 9に急いで移行する必要がありました。その時、純粋なOpenLDAPかFreeIPAかという2つの選択肢に直面しました。50台以上の実稼働サーバーで6ヶ月以上FreeIPAを運用した結果、一つの結論に達しました。同期された Linux管理エコシステムを構築したいのであれば、FreeIPAが現在最も実用的な選択肢です。
FreeIPAとは?なぜOpenLDAPではないのか?
FreeIPA (Identity, Policy, Audit) は、よくLinux界のActive Directoryに例えられます。これは単にユーザー情報を保存するデータベースではありません。以下の「強力な4つの要素」が組み合わさったものです:
- 389 Directory Server: データを保存するLDAP。
- MIT Kerberos: シングルサインオン(SSO)メカニズムの心臓部。
- Dogtag Certificate System: 内部のデジタル証明書(CA)管理。
- BIND: 強力な統合DNSシステム。
私が最も感銘を受けたのは、sudoルールとSSHキーを集中管理できる機能です。設定ファイルを手動でコピーする代わりに、Web UI上でポリシーを定義するだけで済みます。すべての変更は、システム内のすべてのノードに即座に反映されます。
ハードウェアスペック:RAMを惜しまないこと
FreeIPAは多くのサービスを同時に実行するため、かなりのリソースを消費します。1GB RAMのVPSにインストールしようとしないでください。すぐにOOM Killerが現れ、システムが頻繁にクラッシュすることになります。推奨される実用的な構成は以下の通りです:
- OS: CentOS Stream 9 (Minimal版)。
- RAM: 最低4GB。DNSとCAの両方を実行する予定がある場合は、システムをスムーズに動作させるために8GB RAMを優先してください。
- CPU: 最低2コア。
- ネットワーク: 固定IPの使用が必須。
- ホスト名:
ipa.lab.itfromzero.comのような標準的なFQDNであること。
開始する前に、ホスト名を設定し、パッケージの競合を避けるためにシステムを更新してください:
# ホスト名を設定
hostnamectl set-hostname ipa.lab.itfromzero.com
# システムを最新バージョンに更新
dnf update -y
# 内部解決を確実にするため、hostsファイルにIPを記述
echo "192.168.1.100 ipa.lab.itfromzero.com ipa" >> /etc/hosts
CentOS Stream 9での詳細なインストール手順
CentOS Stream 9では、FreeIPAはモジュール形式で管理されています。インストールパッケージをダウンロードする前に、正しいモジュールを有効にする必要があります。
手順 1: IDMモジュールの有効化
デフォルトでは、CentOS Stream 9は idm:DL1 ストリームを提供しています。これはIdentity Management向けの最も安定したバージョンです。
dnf module enable idm:DL1 -y
手順 2: FreeIPAサーバーパッケージのインストール
DNSを併せてインストールすることを常にお勧めします。これにより、Kerberosに必要なSRVレコードが自動化され、クライアントが手動設定なしでサーバーを自動的に見つけられるようになります。
dnf install ipa-server ipa-server-dns -y
手順 3: システムの初期化
このプロセスは対話形式で行われます。管理パスワードを事前に用意しておいてください。
ipa-server-install --setup-dns
スクリプトの実行中は、以下の情報に注意してください:
- Server Hostname:
ipa.lab.itfromzero.comで正しいか再確認します。 - Domain Name: 通常は
lab.itfromzero.comです。 - Realm Name:
LAB.ITFROMZERO.COMのように大文字で入力する必要があります。これはKerberosの必須ルールです。 - Directory Manager Password: LDAPバックエンドの深い操作に使用します。
- DNS Forwarders: サーバーがインターネットにアクセスできるように、GoogleのDNS (8.8.8.8) やプロバイダーのIPを入力します。
設定プロセスには約5〜10分かかります。「IPA server setup complete」というメッセージが表示されれば、システムの準備は完了です。
手順 4: ファイアウォールポートの開放
この手順を忘れてクライアントが接続できないケースが多く見られます。FreeIPAの動作には多くのポートが必要です。
firewall-cmd --add-service={freeipa-ldap,freeipa-ldaps,dns,ntp,http,https,kerberos,kpasswd} --permanent
firewall-cmd --reload
確認と運用
すべてが正常であることを確認するために、adminユーザーのKerberosチケットを取得してみます:
kinit admin
# 手順3で設定したadminパスワードを入力
klist
特定の有効期限を含むチケット情報が返されれば、認証システムは正しく動作しています。CLIから新しいユーザーを素早く作成してみることもできます:
ipa user-add tuananh --first=Tuan --last=Anh --password
次に、https://ipa.lab.itfromzero.com にアクセスしてください。非常に直感的なWeb UIが表示されます。ここでは、数回のクリックだけで数千人のユーザーを管理できます。
6ヶ月の実戦投入で得た3つの教訓
本番環境でのFreeIPA運用は、ラボ環境とは異なります。不測の事態を避けるための注意点を以下に挙げます:
- バックアップを絶対に忘れない:
ipa-backupコマンドを毎日定期的に実行してください。一度、LDAPの設定を誤って壊してしまったことがありましたが、このバックアップファイルのおかげで、徹夜で再インストールする事態を免れました。 - 時間は正確に: サーバーとクライアントの時刻のズレが300秒を超えると、Kerberosはすべてのログイン要求を拒否します。すべてのマシンで chronyd サービスが常に動作していることを確認してください。
- 常に冗長化(Replica)を検討する: システムを単一のサーバーに依存させないでください。少なくとも1つのレプリカを構築しましょう。メインサーバーにハードウェア障害が発生しても、システムは正常に動作し続けます。
おわりに
CentOS Stream 9にFreeIPAを導入することは、ITインフラをプロフェッショナル化するための賢明なステップです。最初はKerberosやLDAPなどの概念が難しく感じるかもしれませんが、それがもたらすセキュリティ上のメリットと利便性は非常に大きいです。手動のユーザー管理に疲れを感じているなら、今日からFreeIPAのインストールに取り掛かりましょう。

