SSSDでUbuntu ServerをWindows ADに参加させる:数百人のユーザーを一元管理する方法

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

「手動ユーザー管理」という名の悪夢

Ubuntuサーバーを1、2台運用しているだけなら、新入社員が入るたびに adduser コマンドを使うのもまだ「余裕」かもしれません。しかし、システム規模が50台、100台と増えた場合を想像してみてください。開発者のパスワードリセットや退職者のアクセス権削除に丸一日費やすことになるでしょう。これが、プロのシステム管理者がLinuxをWindows Active Directory (AD) と「統合」しようとする理由です。

駆け出しの頃、私はサーバーラボのクラスターの認証設定だけで一週間を費やしたことがあります。何度も失敗を繰り返す中で、AD統合は一元管理を可能にするだけでなく、企業にとって極めて重要なセキュリティの要(かなめ)であることに気づきました。

SSSDとSamba Winbind、どちらを選ぶべきか?

LinuxをADに接続する場合、通常は以下の2つの選択肢で迷うことになります:

  • Samba Winbind: 伝統的なソリューションで、SMBプロトコルに基づいています。Winbindは強力ですが、設定ファイルが非常に長くなりがちです。また、IDマッピングの知識が不十分だと、UID/GIDの識別エラーが発生しやすいという欠点もあります。
  • SSSD (System Security Services Daemon): UbuntuやRHELにおける現代的な標準です。SSSDは非常に優れたキャッシュ機能を備えています。これにより、ドメインコントローラー(DC)への接続が不安定になったり切断されたりしても、ユーザーは通常通りログインを継続できます。

なぜSSSDがシステム管理者にとって「最適解」なのか?

私はこの構成を、約200人のADユーザーがいるUbuntu 22.04のステージング環境に導入しました。結果は非常に良好でした:

注目すべきメリット

  • レスポンス速度: キャッシュメカニズムによりユーザー情報の照会がほぼ瞬時に行われ、DCへの負荷が軽減されます。
  • 最小限の設定ファイル: sssd.conf はわずか20〜30行程度で、Sambaの複雑な設定に比べてメンテナンスが非常に容易です。
  • Kerberos標準のセキュリティ: すべての認証プロセスは、最も厳格な企業セキュリティ標準に準拠しています。

いくつかの注意点

  • DNS設定(AレコードとPTRレコードの両方)が正確である必要があります。DNSが「ズレる」だけで、SSSDはすぐに動作を停止します。
  • 複雑なファイル共有システムを運用している場合は、UID/GIDのマッピングに細心の注意を払う必要があります。

実際の導入手順

このガイドでは、ドメインを itfromzero.local、ドメインコントローラー(DC)のIPを 192.168.1.10 と想定します。

ステップ1:DNSと時刻同期 – 2つの重要な要素

このステップを軽視しないでください。Kerberosプロトコルは時刻のズレに対して非常に敏感です。UbuntuとADの時刻が300秒(5分)以上ズレていると、ドメインへの参加は即座に失敗します。

# ホスト名をFQDN形式で設定
sudo hostnamectl set-hostname ubuntu-server.itfromzero.local

# 時刻を正確に同期するためにchronyをインストール
sudo apt update && sudo apt install chrony -y
sudo systemctl enable --now chrony

/etc/resolv.conf ファイルを確認してください。最初の nameserver がドメインコントローラーのIPになっていることを確認します。

ステップ2:接続ツールのインストール

ライブラリを手動でインストールする代わりに、realmd を使用して面倒な作業の大部分を自動化します。

sudo apt install -y realmd sssd sssd-tools adcli samba-common-bin packagekit

ステップ3:ドメインへの参加

まず、UbuntuがADを「認識」できているか確認します:

realm discover itfromzero.local

ドメインに関する情報が表示されれば、作業の半分は完了です。次に、Domain Admin権限を持つアカウントで参加コマンドを実行します:

sudo realm join -U Administrator itfromzero.local

ステップ4:SSSD設定ファイルの最適化

デフォルトでは、ログイン時に [email protected] と入力する必要があります。これを user だけで済むように、以下の設定ファイルを編集します:

sudo nano /etc/sssd/sssd.conf

use_fully_qualified_names = True を見つけて False に変更します。同時に、ログイン時にユーザーがエラーにならないよう、ホームディレクトリの自動作成設定を追加します:

use_fully_qualified_names = False
fallback_homedir = /home/%u

# 注意:このファイルの権限は0600である必要があります
sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl restart sssd

ステップ5:新規ユーザーのホームディレクトリ自動作成

初回ログイン時にシステムが /home/username フォルダを自動作成するように、次のコマンドを実行します:

sudo pam-auth-update --enable mkhomedir

成果の確認

id コマンドを使用して、UbuntuがADユーザーを認識したか確認します:

id your_ad_user

画面にWindowsからのUID、GID、およびグループが正しく表示されれば、システムの準備は完了です。

ヒント: ADアカウントを持つ全員がサーバーにSSH接続できてしまうのを防ぐため、特定の技術グループのみにアクセス権を制限することをお勧めします:

sudo realm deny --all
sudo realm permit -g "IT_Admins_Group"

まとめると、DNSと時刻同期を適切に制御できれば、UbuntuのAD参加は決して難しくありません。作業を効率化し、よりプロフェッショナルなシステム管理を実現しましょう!

Share: