SambaをActive Directoryドメインコントローラとして設定する

提供: 雑廉堂Wiki

はじめに

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?を参照してください。
  • MITHeimdalKerberosキー配布センター(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 としても使用されます。
詳細については、「Active Directoryの名前付けに関するよくある質問」を参照してください。
  • DC上で静的IPアドレスを使用します。
  • /etc/resolv.conf DNSリゾルバ設定ファイルを自動的に更新するresolvconfなどのツールを無効にします。 AD DCとドメインメンバーは、AD DNSゾーンを解決できるDNSサーバーを使用する必要があります。
  • 実行中のSambaプロセスがないことを確認します。
# ps ax | egrep "samba | smbd | nmbd | winbindd"
出力にsambasmbdnmbd、または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のインストールを参照して下さい。

Samba Active Directoryをプロビジョニングする

Samba ADのプロビジョニングプロセスは、ADデータベースを作成し、ドメインの管理者アカウント(Administrator)や必要なDNSレコードなどの初期のレコードを追加します。

もし、Samba NT4ドメインからADに移行するのであれば、この項目を飛ばしてSambaクラシックアップデートを実行してください。詳細は「Samba NT4ドメインからSamba ADに移行する」を参照してください。

samba-tool domain provisionコマンドは、対話型か非対話型の設定で使用する様々なパラメータを提供しています。詳細は、次のコマンドを実行してください:

# samba-tool domain provision --help

パラメータの説明

プロビジョニングの時には、以下のパラメータをセットします。

対話モード時の設定 非対話モード時のパラメータ 説明
--use-rfc2307 --use-rfc2307 NIS拡張を有効にする。
Realm --realm Kerberosレルム。AD DNSドメインを大文字にしたもの。例: SAMDOM.EXAMPLE.COM
Domain --domain NetBIOSドメイン名(Workgroup)。これは何でも構いませんが、ドットを含まない15文字までの1語でなければいけません。AD DNSドメインの最初の部分を使うことをおすすめします。例: samdom。コンピューターの短いホスト名を使用しないでください。
Server Role --server-role ドメインコントローラの DC ロールをインストールします。
DNS backend --dns-backend DNSのバックエンドを設定します。ADの最初のDCは、DNSバックエンドを使用してインストールする必要があります。BIND9_FLATFILEはサポートされておらず、将来のSambaのバージョンでは削除される予定なので、注意してください。
DNS forwarder IP address 使用不可 この設定は、SAMBA_INTERNAL DNSバックエンドを使用するときのみ有効です。詳細は、Samba内部DNSバックエンド#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アドレスを登録できるようにします。

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

非対話モードで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


逆引参照ゾーンを作成する

オプションで逆引参照ゾーンを追加することができます。

# samba-tool dns zonecreate <Your-AD-DNS-Server-IP-or-hostname> 0.99.10.in-addr.arpa
Password for [administrator@SAMDOM.EXAMPLE.COM]:
Zone 0.99.10.in-addr.arpa created successfully

複数の逆引ゾーン(複数のサプネット)が必要な場合、もう一方のサブネットのデータを使用して上記のコマンドを再度実行してください。

逆引きゾーンは、Sanba や BINDを再起動することなく直接稼働します。

Kerberosを構成する

ADでは、Kerberosはユーザー、マシンやサービスの認証に利用します。

プロビジョニング中、SambaはDC用のKerberosの設定ファイルを作成します。このファイルをOSのKerberosの設定にコピーしします。例:

# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf

予め作成されたKerberos設定ファイルは、KDCを見つけるためにDNSサービス(SRV)リソースレコードを使います。

Samba AD DCをテストする

sambaサービスを起動するには、次のように入力します:

# samba

SambaはSystem V initスクリプト、systemdupstart、あるいはその他のサービス設定ファイルを提供しません。

  • パッケージを利用してインストールしたのであれば、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
        ---------            -------

認証を確認するために、ドメインの管理者アカウントを使用して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:
  • キャッシュされている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サービスの設定方法については、「時刻の同期」を参照して下さい。

ドメインコントローラをファイルサーバーとして使う

Samba AD DC は、その他すべてのインストールモードと同様、ファイル共有を提供しています。しかしながら、SambaチームはDCをファイルサーバとして利用することを推奨しません:

  • 最も小さな組織以外では、複数のDCを持つことは、本当に良いバックアップ手段であり、アップグレードをより安全にします。
  • 以降すべき複雑なデータや他のサービスが関与しないので、一年か二年毎のホストOSの更新も含め、DCの更新をおすすめします。
  • これはアップグレードは、新しくインストールすることによって、Sambaでよりよくテストされた変更を複製し、新しい機能を得て、長引くデータ破損のリスクの回避が実行され得ることを意味をします。(原文: This means upgrades can be done by installing fresh, and replicating in the changes, which is better tested in Samba, gains new features and avoids a number of lingering data corruption risks. )
  • DCとファイルサーバでは、組織がアップグレードしようと望むポイントが違います。DCとファイルサーバの新機能に対するニーズは、違う時期にやってきます。現在、AD DCは機能を増やすために急速に進化していますが、一方でファイルサーバーは、20年以上経っても、かなり保守的です。
  • 必須のsmb署名がDCで実施されるようになります。

Samba DCをファイルサーバとして使用すると決めた場合は、別のSamba Unix ドメインメンバーを持つ、DC上の仮想マシンで実行し、代わりにこれを使用することを検討してください。

どうしてもSamba DCをファイルサーバとして使用しなければいけない場合、acl_xattrが自動有効化された仮想ファイルシステム(VFS)オブジェクトは、Windows アクセス制御リスト (ACL)だけが、共有の設定が可能なことを承知してください。Samba DC上の共有でPOSIX ACLを使用しても機能しません。


ネットワーク共有にSambaの全機能を提供するには、ファイル共有でSambaドメインメンバーを設定します。詳細は次の通り:

小さなドメイン(小規模オフィス、家庭ネットワーク)しかなく、なおかつSambaチームの推奨に従って、DCを追加のファイルサーバとして使用したくない場合は、共有を設定を開始する前にWinbindを設定してください。詳細はSamba AD DC上でのWinbinddの設定を参照してください。




トラブルシューティング

詳細は、「Samba AD DCトラブルシューティング」を参照してください。


さらなるSambaに関するドキュメント

ユーザードキュメント