SambaをActive Directoryドメインコントローラとして設定する
はじめに
Sambaはバージョン4.0以降、Active Directory(AD)ドメインコントローラ(DC)として実行できます。実運用環境でSambaを導入する場合は、フェイルオーバーのために、2台以上のDCを実行することをお勧めします。
このドキュメントでは、新しいADフォレストを構築する最初のDCとしてSambaを設定する方法について説明します。さらに、Samba NT4ドメインをSamba ADに移行する場合は、このドキュメントを使用してください。既存のADフォレストに追加のDCとしてSambaに参加するには、Samba DCを既存のActive Directoryに参加させるを参照してください。
AD DCとしてのSambaのみがサポートしています:
- ADのバックエンドとして、統合されたLDAPサーバー。詳細については、よくある質問(FAQ)のDoes Samba AD DCs Support OpenLDAP or Other LDAP Servers as Back End?を参照してください。
- MITとHeimdalKerberosキー配布センター(KDC)
Sambaは、Samba 4.7以降を実行し、--with-system-mitkrb5
オプションを使用して構築されている場合は、オペレーティングシステムによって提供されるMIT KDCを使用します。他のケースでは、SambaはSambaに含まれるHeimdal KDCを使用します。 MIT KDCを使用したSambaの詳細については、Running a Samba AD DC with MIT Kerberos KDCを参照してください。
インストールの準備
- AD DCのホスト名を選択します。
PDC
またはBDC
などのホスト名としてNT4のみの用語を使用しないでください。これらのモードはADに存在せず、混乱の原因となります。
- ADフォレストのDNSドメインを選択します。この名前は、AD Kerberos realm としても使用されます。
{{#invoke:Message box|imbox}}
- 詳細については、「Active Directory 名前付けに関するよくある質問」を参照してください。
- DC上で静的IPアドレスを使用します。
/etc/resolv.conf
DNSリゾルバ設定ファイルを自動的に更新するresolvconfなどのツールを無効にします。 AD DCとドメインメンバーは、AD DNSゾーンを解決できるDNSサーバーを使用する必要があります。- 実行中のSambaプロセスがないことを確認します。
# ps ax | egrep "samba | smbd | nmbd | winbindd"
- 出力に
samba
、smbd
、nmbd
、またはwinbindd
プロセスがリストされている場合は、プロセスをシャットダウンします。
- DCの
/etc/hosts
ファイルが、完全修飾ドメイン名(FQDN)および短いホスト名をDCのLAN IPアドレスに正しく解決することを確認します。例えば:
127.0.0.1 localhost localhost.localdomain 10.99.0.1 DC1.samdom.example.com DC1
- ホスト名とFQDNは、
127.0.0.1
のIPアドレスまたはDCのLANインターフェイスで使用されているIPアドレス以外のIPアドレスに解決してはなりません。
- 以前にこのホストにSambaインストールを実行した場合:
- 既存の
smb.conf
ファイルを削除します。 ファイルへのパスを一覧表示するには:
- 既存の
# smbd -b | grep "CONFIGFILE" CONFIGFILE:/usr/local/samba/etc/samba/smb.conf
*.tdb
や* .ldb
ファイルなどのすべてのSambaデータベースファイルを削除します。 Sambaデータベースを含むフォルダを一覧表示するには:
# smbd -b | egrep "LOCKDIR | STATEDIR | CACHEDIR | PRIVATE_DIR" LOCKDIR:/usr/local/samba/var/lock/ STATEDIR:/usr/local/samba/var/locks/ CACHEDIR:/usr/local/samba/var/cache/ PRIVATE_DIR:/usr/local/samba/private/
- クリーンな環境から始めて、混乱を避け、以前のSambaインストールのファイルが新しいドメインDCインストールと混在しないようにします。
- 既存の
/etc/krb5.conf
ファイルを削除します。
# rm /etc/krb5.conf
Sambaをインストール
詳細は、Sambaのインストールを参照して下さい。
{{#invoke:Message box|imbox}}
Samba Active Directoryをプロビジョニングする
Samba ADのプロビジョニングプロセスは、ADデータベースを作成し、ドメインの管理者アカウント(Administrator)や必要なDNSレコードなどの初期のレコードを追加します。
もし、Samba NT4ドメインからADに移行するのであれば、この項目を飛ばしてSambaクラシックアップデートを実行してください。詳細は「Samba NT4ドメインからSamba ADに移行する」を参照してください。
{{#invoke:Message box|imbox}}
samba-tool domain provision
コマンドは、対話的か非対話的セットアップで使用する様々なパラメータを提供しています。詳細は、次のコマンドを実行:
# samba-tool domain provision --help
{{#invoke:Message box|imbox}}
パラメータの説明
プロビジョニングの際には、以下のパラメータをセットします。
対話モードセッティング | 非対話モードパラメータ | 説明 |
---|---|---|
--use-rfc2307
|
--use-rfc2307
|
NIS拡張を有効にする。 |
Realm
|
--realm
|
Kerberosレルム。これはAD DNSドメインとしても使用されます。入力例:sambom.example.com
|
Domain
|
--domain
|
NetBIOSドメイン名。AD DNSドメインの最初の部分を利用することをおすすめします。入力例:samdom
|
Server Role
|
--server-role
|
ドメインコントローラDC としてインストールする。
|
DNS forwarder IP address
|
なし | このセッティングはSAMBA_INTERNAL DNSバックエンドを利用する場合のみ有効です。
|
Administrator password
|
--adminpass
|
ドメイン管理者(Administrator)のパスワードをセットします。もしパスワードの複雑さの要件に適合しない場合は、プロビジョニングは失敗します。詳細は「Microsoft TechNet: Passwords must meet complexity requirements.」を参照して下さい。 |
他のsamba-tool domain provision
コマンドでよく使われるパラメータ:
--option="interfaces=lo eth0" --option="bind interface only=yes"
: もしサーバが複数のネットワークインターフェースを持っている場合に、Sambaを明記したインターフェースに結びつけるためにこれらのオプションを使用して下さい。これはsamba-tool
コマンドが、ジョインする際にディレクトリに正しいLAN IPアドレスを登録できるようにします。
{{#invoke:Message box|imbox}} {{#invoke:Message box|imbox}}
Sanba ADを対話モードでプロビジョニング
対話的にSamba ADをプロビジョニングするには、次のように実行してください:
# samba-tool domain provision --use-rfc2307 --interactive Realm [SAMDOM.EXAMPLE.COM]: SAMDOM.EXAMPLE.COM Domain [SAMDOM]: SAMDOM Server Role (dc, member, standalone) [dc]: dc DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: SAMBA_INTERNAL DNS forwarder IP address (write 'none' to disable forwarding) [10.99.0.1]: 8.8.8.8 Administrator password: Passw0rd Retype password: Passw0rd Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up share.ldb Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=samdom,DC=example,DC=com Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=samdom,DC=example,DC=com Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: DC1 NetBIOS Domain: SAMDOM DNS Domain: samdom.example.com DOMAIN SID: S-1-5-21-2614513918-2685075268-614796884
{{#invoke:Message box|imbox}}
非対話モードでSamba ADをプロビジョニングする
例として、以下のセッティングでSamba ADを非対話的にプロビジョニングするには:
- サーバーの役割:
dc
- NIS拡張を有効に
- Samba内部DNSバックエンド
- KerberosレルムとAD DNSゾーン:
samdom.example.com
- NetBIOSドメイン名:
SAMDOM
- ドメイン管理者のパスワード:
Passw0rd
# samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=SAMDOM.EXAMPLE.COM --domain=SAMDOM --adminpass=Passw0rd
AD DNSバックエンドを設定する
SAMBA_INTERNAL
DNSバックエンドを利用するようにプロビジョニングした場合、この項目は飛ばして下さい。
- BIND DNSサーバーと
BIND_DLZ
モジュールを設定します。詳細は、「BIND DNSサーバーを設定する」を参照してください。 - BIND DNSサーバーを起動します。例:
# systemctl start named
サービスをどのように起動させるのかについては、ディストリビューションのドキュメントを参照してください。
DNSリゾルバーを構成する
ADのドメインメンバーは、LDAPやKerberosなどのサービスを見つけるためにDNSを利用します。そのため、AD DNSゾーンを解決できるDNSサーバを利用する必要があります。
DCで、/etc/resolv.conf
ファイルのdomain
にAD DNSドメインを、DCのIPアドレスをnameserver
パラメータにセットしてください。例:
domain samdom.example.com nameserver 10.99.0.1
Kerberosを構成する
ADでは、Kerberosはユーザー、マシンやサービスの認証に利用します。
プロビジョニング中、SambaはDC用のKerberosの設定ファイルを作成します。このファイルをOSのKerberosの設定にコピーしします。例:
# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
{{#invoke:Message box|imbox}}
予め作成されたKerberos設定ファイルは、KDCを見つけるためにDNSサービス(SRV)リソースレコードを使います。
Samba AD DCをテストする
samba
サービスを起動するには、次のように入力します:
# samba
SambaはSystem V initスクリプト、systemd
、upstart
、あるいはその他のサービス設定ファイルを提供しません。
- パッケージを利用してインストールしたのであれば、Sambaを起動するためにパッケージに含まれているスクリプト、あるいはサービス設定ファイルを使用します。
- もしソースからビルドしたのであれば、「Samba AD DCサービスの管理」を参照してください。
ファイルサーバーの確認
DCによって提供されている全ての共有の一覧を表示するには:
$ smbclient -L localhost -U% Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba x.y.z) Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z] Server Comment --------- ------- Workgroup Master --------- -------
{{#invoke:Message box|imbox}}
認証を確認するために、ドメインの管理者アカウントを使用してnetlogon
共有に接続してみます。
$ smbclient //localhost/netlogon -UAdministrator -c 'ls' Enter Administrator's password: Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z] . D 0 Tue Nov 1 08:40:00 2016 .. D 0 Tue Nov 1 08:40:00 2016 49386 blocks of size 524288. 42093 blocks available
一つ以上のテストに失敗した場合は、「トラブルシューティング」を参照してください。
DNSの確認
AD DNSの設定が正しく動作していることを確認するために、DNSレコードを問い合わせます。
- ドメインの、TCPベースの
_ldap
SRVレコード
$ host -t SRV _ldap._tcp.samdom.example.com. _ldap._tcp.samdom.example.com has SRV record 0 100 389 dc1.samdom.example.com.
- ドメインの、UDPベースの
_kerberos
SRVリソースレコード。
$ host -t SRV _kerberos._udp.samdom.example.com. _kerberos._udp.samdom.example.com has SRV record 0 100 88 dc1.samdom.example.com.
- ドメインコントローラのAレコード
$ host -t A dc1.samdom.example.com. dc1.samdom.example.com has address 10.99.0.1
一つ以上のテストに失敗した場合は、「トラブルシューティング」を参照してください。
Kerberosの確認
- ドメイン管理者アカウントのKerberosチケットを要求します。
$ kinit administrator Password for administrator@SAMDOM.EXAMPLE.COM:
{{#invoke:Message box|imbox}}
- キャッシュされているKerberosのチケットの一覧が表示されます。
$ klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@SAMDOM.EXAMPLE.COM Valid starting Expires Service principal 01.11.2016 08:45:00 12.11.2016 18:45:00 krbtgt/SAMDOM.EXAMPLE.COM@SAMDOM.EXAMPLE.COM renew until 02.11.2016 08:44:59
もし一つでもテストが失敗した場合は、「トラブルシューティング」を参照してください。
時刻同期の設定
Kerberosは全てのドメインメンバに対して、時刻の同期を要求します。さらなる詳細と、ntpd
サービスの設定方法については、「時刻の同期」を参照して下さい。