2.1. ActiveDirectoryドメインコントローラとしてのSamba

2.1. ActiveDirectoryドメインコントローラとしてのSamba

2.1.1. Active Directoryの概念と基盤サービス

Samba-AD-DC

Samba-AD-DCはWindowsベースのActive Directory(AD)ドメインコントローラと互換性のある機能を提供することを目的とするOSSのソフトウェア。
Samba-AD-DCは、特に中小企業や教育機関などで、Windows環境とLinux/UNIX環境の統合を必要とする場合に役立つ。

Samba-AD-DCは、以下の主な機能を提供する。

  • ActiveDirectory互換性
    • Windowsクライアントや他のActive Directoryリソースと連携できる
    • LinuxやUNIXサーバーがWindowsベースのネットワークに統合され、シングルサインオン、ユーザー認証、アクセス制御などのActive Directory機能を利用できる
  • ドメインコントローラ機能
    • ドメイン内のユーザーアカウント、コンピュータアカウント、ポリシー、セキュリティグループなどの管理するドメインコントローラとして機能する
    • ユーザーとリソースの管理を中央集権化し、セキュリティと管理を向上させることができる
  • LDAPサーバ
    • LDAPサーバーを提供し、ディレクトリサービスの要件を満たす。ユーザー情報や認証情報などを保存および検索するために使用される。
  • DNSサーバ
    • Active Directoryに関連するDNSサービスも提供する。ドメイン内のリソースの名前解決が可能になり、正確なドメイン構造が維持される。

Active Directoryの概念理解

ActiveDirectoryとは

ActiveDirectoryはWindowsのサーバの機能で、ネットワークにつないでいるクライアント端末やサーバー、プリンター、アプリケーションなどの情報を収集し、一元管理できるディレクトリサービスのこと。
アカウントの管理を行うディレクトリ・サービス・システムともいえる。

ActiveDirectoryを使用するメリットは全てのネットワークリソースを、一つのオブジェクトとして、一元管理することが出来るようになることにある。

ドメイン環境とドメインコントローラ(DC)

ActiveDirectoryではユーザやコンピュータなどのリソースがドメインに参加することによりリソースの一元管理することが可能となる。
この一元管理にはドメインコントローラ(DC)と呼ばれる専用サーバが使用される。

ドメインコントローラによる認証手順は以下の通り

  1. ユーザがドメイン参加コンピュータにログインする
  2. 認証データをドメインコントローラに送信する
  3. ドメインコントローラで認証データが正しいと確認できた場合チケットを発行し返送する
  4. チケットを受け取ったクライアントはチケットを提示してアクセス先コンピュータで認証を試みる
  5. アクセス先コンピュータはチケットがドメインコントローラで発行されたか確認し、正しければクライアントアクセスを許可する

上記認証方式はKeroberos認証と呼ばれる。

ActiveDirectoryの構造

ドメイン

ドメインはActiveDirectoryの基本単位Active Directoryデータベースを共有する範囲のこと。
言い換えるとACtiveDirectoryの管理が及ぶ範囲のこと。 ドメインを作成することで、組織のユーザー・グループ・コンピューターを集中して管理することが可能になる。

ActiveDirectoryデータベースにはユーザーオブジェクトをはじめとする、各オブジェクトの登録情報、共有フォルダやプリンタの情報、システムの構成情報などが保存される。

OU(組織単位)

OU(組織単位)は入れ物のことで、複数オブジェクトを簡単に管理することが可能なもののこと。
これはドメインで管理するリソースが増加した場合に、バラバラ管理となり負担がかかるのを防ぐためにある。

またOUはグループポリシー設定を割り当てたり、権限を委任することができる、最小単位となる。

ドメインツリー

ドメインツリーはドメインを複数に分け管理する機能*で、ユーザーオブジェクトやコンピューターオブジェクトの経営方針が異なる場合に使用できる。

ドメインツリーでは複数のドメインを作成するとき、親ドメインの下に子ドメインを作成することになるがこの際に必ず親ドメインからドメイン名の一部を継承する。
そして互いのドメインソースを利用できる関係性=「信頼関係」が結ばれることで、別のドメインで管理されていても、リソースを共有することが可能になる。

フォレスト

フォレストはドメインツリー同士に信頼関係を持たせた状態のこと。
同じ組織内でも、名前の階層を分けたい場合に用いる。また、フォレストはActive Directory構造におけるグループの最大単位となる。

フォレストは1つ以上のドメインツリーで構成されるため、実際には1つのドメインツリーでもフォレストとなり得る。

フォレスト構築の要件は以下の通り。

  • Active Directoryを拠点ごとに全く別々に管理を行う場合
  • Active Directoryを導入している企業同士が合併する場合
  • 組織内に異なる名前空間にしたいドメインツリーが複数存在する場合

グローバルカタログ

グローバルカタログ(GC)はフォレスト内の全ドメインのオブジェクトに関する部分的な属性セット (Partial Attribute Set) を保持する特別なデータベースのこと。

ユーザーが認証時やフォレスト全体を検索する際に、参照先のDCを特定せずに高速にオブジェクトを見つけられるようにするための使用される。

ポートは: TCP/3268 (標準)、TCP/3269 (SSL)を使用する。

ドメイン機能レベル

ドメイン機能レベルはドメイン内で利用可能なAD機能(例: パスワードポリシーの粒度)を定義し、サポートする最も古いWindows Server OSバージョンを示す。

設定は samba-tool domain functionallevel コマンドで確認・設定を行える。
レベルを上げると新しい機能が使えるが、下位バージョンのDCは参加できなくなる。

ADで利用するネットワークサービスの概念

ADの機能は、複数の標準的なネットワークサービスによって成り立つ。

サービスプロトコル/ポートSamba AD DCでの役割
DNSUDP/TCP 53ドメインコントローラーのサービスロケーター (SRVレコード) およびホスト名解決に不可欠。Samba AD DCは、AD統合DNSサービスを内蔵している。
KerberosUDP/TCP 88ADの主要な認証プロトコル。チケット発行サービス (TGS) を提供し、セキュアなシングルサインオン (SSO) を実現する。
NTPUDP 123Kerberos認証は厳密な時刻同期を必要とするため、AD DCはNTPサービスを提供し、ドメイン内の時刻を管理する。
LDAPUDP/TCP 389ディレクトリサービスへのアクセスに使用されるプロトコル。すべてのADオブジェクト(ユーザー、グループなど)はLDAPを介して問い合わせ・修正される。
CIFS/SMBTCP 445ファイル共有、グループポリシーの配布(SYSVOL)、およびユーザー認証後のリソースアクセスに使用される。
MS-RPCTCP 135 & 動的ポートクライアントとDC間の管理操作(ユーザー作成、GPO処理など)に使用されるMicrosoft固有のリモートプロシージャコール。

NTPDとSambaの導入

Samba AD DCの時刻同期には、通常LinuxのntpdなどのNTPデーモンが利用される。
Kerberos認証は時刻差に非常に厳しいため、ntpdは必須。

  • ntpsigndsocket:
    • SambaはKerberosプロトコルを使ってNTPの認証を行うために、特別なソケットを介してNTPデーモンと通信します。この機能は、ドメインコントローラーの時刻を安全に同期するために重要です。
  • smb.conf:server role
    • server role = active directory domain controller: Samba AD DCとして動作させるために、smb.confの[global]セクションで必須となる設定。

この設定により、Sambaはsambaデーモンを主体として、Kerberos、LDAP、DNSなどのADサービスを統合的に提供する。

2.1.2. Samba AD DCの構築と管理

samba-tool domain コマンドを中心に、Samba AD DCの新規構築、既存ドメインへの参加(追加DC)、およびドメインからの削除(降格)の手順をまとめる。

新規ADドメインの設定

Sambaを利用して、新しいActive Directoryフォレスト/ドメインを初期設定するプロセスは、プロビジョニングと呼ばれる。

samba-tool domain provisionコマンド

samba-tool domain provisionコマンドはLDAPデータベース、Kerberos設定、DNSゾーン、SYSVOL共有など、AD DCの動作に必要なすべての設定ファイルとディレクトリ構造を自動的に作成できるもの。

コマンド実行時に、フォレストレベル、ドメイン NetBIOS名、レルム名、管理者パスワードなどを対話形式で入力する。

# 新規ドメインのプロビジョニング実行例
sudo samba-tool domain provision --realm=EXAMPLE.LOCAL \
    --domain=EXAMPLE --server-role=dc --dns-backend=SAMBA_INTERNAL \
    --adminpass='<安全なパスワード>'

既存ドメインへの追加と削除

samba-tool domain joinコマンド

samba-tool domain joinは、既存のActive Directoryドメインに、Sambaサーバーを追加ドメインコントローラ(Additional Domain Controller: ADC)として参加させるコマンド。

既存ドメインのLDAPデータベースからデータをレプリケーションし、新しいSambaサーバーをDCの仲間として設定する。

# 既存ドメインへの参加実行例
sudo samba-tool domain join <レルム名> DC -U '<管理者ユーザー名>'

samba-tool domain demoteコマンド

samba-tool domain demoteは、DCの役割を解除し、ドメインから安全に削除するプロセスを降格するコマンド。

Samba AD DCとしての役割を停止し、他のDCにデータを安全にレプリケーションさせた後、ディレクトリサービスから自身のエントリを削除する。

# ドメインコントローラーの降格実行例
sudo samba-tool domain demote -U '<管理者ユーザー名>'

その他の管理コマンド

コマンド説明
samba-tool domain levelドメインまたはフォレストの機能レベルの確認と引き上げ。
samba-tool domain passwordsettingsパスワードポリシーの設定(パスワードの複雑性、有効期間など)。
samba-tool domain usnUSN(更新シーケンス番号)ロールバック問題の検出と修正。

2.1.3. ADの高度なレプリケーションとトポロジー管理

複数のドメインコントローラー(DC)や複数のドメイン、地理的に分散した環境におけるActive Directory(AD)の整合性を保つための高度な仕組みについて。

ADレプリケーションの検証

ADは、フォレスト内の全DC間でディレクトリデータベース(LDAP)の内容を同期(レプリケーション)することで整合性を保つ。

レプリケーションの仕組みの理解

  • マルチマスターレプリケーション: ADでは、すべてのDCが変更を受け付け、その変更を他のDCに伝播する
  • レプリケーションメタデータ: 各オブジェクトと属性には、どのDCで、いつ、どのバージョンで変更されたかを示すメタデータが付与する
  • USN(更新シーケンス番号): 変更が適用されるたびに、DC内でローカルに増加する番号。レプリケーションの進行状況を追跡するために使われる

samba-tool drsコマンド

samba-tool drsはレプリケーショントポロジーの管理と状態確認を行うためのコマンド。

samba-tool drs [サブコマンド]
サブコマンド説明
showreplDC間のレプリケーションの状態(最終成功時間、エラーなど)を表示
kcc知識整合性チェッカー(Knowledge Consistency Checker)を手動で実行し、レプリケーション接続オブジェクトを自動生成させる
replicate指定したDC間で、指定したパーティション(ドメイン、構成など)のレプリケーションを強制的に実行

フォレストとドメイントラスト

Active Directoryフォレスト

信頼関係を持つADドメインツリーの集合体。セキュリティ境界であり、スキーマ、構成パーティション、グローバルカタログが共有されるもの。

  • フォレストトラスト: 異なるフォレスト間で認証とリソースアクセスを可能にするために設定されます。

ドメイントラスト

ドメイントラストは、あるドメインのユーザーが別のドメインのリソースにアクセスすることを許可するためのセキュリティ関係。

  • 推移的トラスト: フォレスト内では、すべてのドメイン間で自動的に双方向の推移的トラストが確立されます

サイトとサブネットの管理

地理的に分散した環境で効率的なレプリケーションとクライアントサービスの提供を行うためにサイトを定義する。

サイトの概念

サイトは信頼性の高い高速なネットワーク(LAN)で接続されたDCとクライアントの論理的なグループのこと。
サイト間でレプリケーションの頻度やコストを制御し、WAN帯域幅の使用を最適化するために構築される。

クライアントは、自身が属するサイト内のDCやサービス(GCなど)を優先的に利用する。

サブネット割り当て

  • クライアントがどのサイトに属するかをADが判断するためには、サブネットをADサイトに割り当てる必要がある
  • クライアントのIPアドレスが割り当てられたサブネットに一致する場合、そのクライアントは対応するサイトに属すると見なされる

samba-tool sitesコマンド

samba-tool sitesはサイト、サブネット、サイトリンクなどのトポロジーオブジェクトを管理するためのコマンド。

samba-tool sites [サブコマンド]
サブコマンド説明
addsite新しいADサイトを作成
addsubnetIPサブネットをサイトに割り当てる
showsiteサイト、サブネット、サイトリンクの構成情報を表示

2.1.4. FSMOとシステムボリュームの管理

Active Directoryにおいてドメインやフォレスト全体にわたる重要な操作を一元管理するFSMO(Flexible Single Master Operations)の役割と、グループポリシーの格納場所であるSYSVOLの管理について。

FSMOの役割

FSMOの役割(マスターの役割)は、マルチマスター環境であるADにおいて、競合を避けるために単一のDCのみが実行を許可されている重要な操作のこと。

FSMOには、フォレスト単位で2つ、ドメイン単位で3つの合計5つの役割がある。

操作マスタ役割構成
スキーママスタスキーマの原本(各オブジェクトに対するデータ型の定義情報)をもつドメインコントローラフォレストで1台のみ
ドメイン名前付けマスタドメインを追加したり削除したりする際に必要となるドメインコントローラフォレストで1台のみ
RIDマスタSIDを構成するために必要な「RID」情報を保持しているドメインコントローラドメイン全体で1台
PDCエミュレータアカウントのパスワードやロックアウト情報を管理しているドメインコントローラドメイン全体で1台
インフラストラクチャマスタドメイン内のユーザーやコンピューターと、グループアカウントのメンバー情報とのマッピング情報を保持ドメイン全体で1台

samba-tool fsmoコマンド

samba-tool fsmoは、FSMOの役割を管理するためのコマンド。

samba-tool fsmo [サブコマンド]
サブコマンド説明
show現在のDCが保持するFSMOの役割、またはフォレスト全体のFSMO所有者を表示
transfer正常稼働している別のDCに役割を移行する
seize役割を保持しているDCが故障した場合などに、役割を奪取する。緊急時のみ使用し、移行元のDCは復旧させないことが推奨

システムボリューム(SYSVOL)の管理

SYSVOLは、グループポリシーオブジェクト (GPO) のテンプレートやログオンスクリプトなど、ドメイン内のすべてのDC間で一貫性が求められるファイルを格納する共有フォルダのこと。

  • SYSVOLの場所と同期の仕組み
    • 格納場所: Samba AD DCでは、通常 /var/lib/samba/sysvol に格納されます。
    • 同期プロトコル: Windows環境ではDFS-R(Distributed File System Replication)が使われますが、Sambaでは通常、独自のレプリケーションエンジンを使用します。
    • robocopyrsync の利用:
      • robocopy: Windows環境でSYSVOLのバックアップや手動同期に使われる強力なコマンドラインツールです。
      • rsync: Linux環境でSYSVOLのバックアップやレプリケーションの代替手段として使われるツールです。
      • rsync.conf: rsync の設定ファイル。サービスとしての rsync(rsyncデーモン)を使用する場合、モジュール設定などで /var/lib/samba/sysvol へのアクセスを定義します。

Windows NT4ドメインの知識

Samba 4はAD DCとして機能するが、レガシーなクライアントや一部のサービスはWindows NT4ドメイン時代のプロトコル(NTLMv2など)に依存することがある。

  • PDC役割の継承: PDCエミュレーター(FSMO)は、NT4ドメインのPDC(プライマリドメインコントローラー)の役割を継承しており、下位互換性を提供している