LoginSignup
48
52

More than 5 years have passed since last update.

Samba4 を使用したKerberos バックエンドなSamba Active Directory を構築する

Last updated at Posted at 2015-10-30

はじめに・概要

Samba 4 を使用してSamba Active Directory を構築した時の手順備忘録です。
Samba 4 でActive Directory を構築する手順の特徴として、Samba 3 までとは異なる点としては、主に以下の通りです。

  • Samba 3 までは、LDAP の機能をOpenLDAP などの他のプロセスで対応していましたが、Samba 4 ではsmbd プロセスとして内蔵するようになりました
  • Samba 3 まではwinbindや nmbd 等の機能をそれぞれ別のプロセスとして起動していましたが、それらもsmbd プロセスとして起動するようになりました
  • コマンドインタフェースも変わり、よりシンプルにActive Directory を構築することができるようになりました

Samba4ProcessImage_0000.png

構成及び環境

Ubuntu を使用して、Samba Active Directory を構築していきます。
構築時の構成や設定値については参考として、おおむね以下のような設定で行いました。
いずれのOS も仮想環境上で起動して構築を行いました。

  • Samba Active Directory の構成
    OS Ubuntu 14.04 LTS
    Samba version 4.1.6
    Network Interface eth0
    IP 192.168.1.42
    外部参照DNS 8.8.8.8
    Domain MYSITE
    Host Name ldap
    FQDN ldap.mysite.example.com
    Samba 管理者名 Administrator
    Samba 管理者パスワード p@ssword3
    Samba client となるWindows Windows Server 2012(評価版)

Ubuntu 側の設定

hosts およびnetwork 関連の設定

構築する前にhosts と参照先DNS を確認します。
hosts にldap, ldap.mysite.example.com のhost が定義されていることを確認します。

/etc/hosts
...
192.168.1.42 ldap ldap.mysite.example.com
...

次にサーバの参照先DNS を確認し、必要に応じて変更します。
今回は8.8.8.8 を使用します。
このDNS は後ほどSamba Active Directory のBackend DNS が名前解決できなかった場合の再帰的な参照先になります。

/etc/network/interfaces
...
auto eth0
iface eth0 inet static
address 192.168.1.42
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 8.8.8.8
...

修正した場合はnetwork を再起動させ、設定内容を反映します。

Restartnetwork
$ sudo ifdown eth0 && sudo ifup eth0

依存パッケージのインストール

apt-get コマンドを使用して依存パッケージをインストールします。
まずは、LDAP に関するパッケージをインストールします(今回構築する環境では不要)。

依存パッケージのダウンロード
$ sudo apt-get update
$ sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install slapd ldap-utils libnss-ldap

次にSamba に関するパッケージをインストールします。

sambaパッケージのインストール
$ sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install samba samba-doc smbldap-tools smbclient

次にKerbelos やその他の依存パッケージをインストールします。

その他のパッケージ
$ sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install             \
        acl attr autoconf bison build-essential                         \
        debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user   \
        libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev     \
        libcap-dev libcups2-dev libgnutls28-dev libjson-perl            \
        libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl    \
        libpopt-dev libreadline-dev perl perl-modules pkg-config        \
        python-all-dev python-dev python-dnspython python-crypto        \
        xsltproc zlib1g-dev

※libgnutls28-dev は、Ubuntu 14.04 未満では libgnutls-dev

パッケージをインストールしたら、ldap の起動設定を無効化しておきます。

OpenLDAPの無効化
$ sudo service slapd stop
$ sudo update-rc.d -f slapd remove

Samba の構築

Samba のコマンドがあるディレクトリにPATH を通しておきます。
以下のPATH をデフォルトとして使用するために、bashrc 等のファイルにも定義しておきます。

PATH
$ export PATH="/usr/local/samba/bin:/usr/local/samba/sbin:${PATH}"

Samba とKerberos の設定ファイルを退避しておきます。

sambaとkerberosの設定ファイルの退避
$ sudo cp -ip /etc/samba/smb.conf /etc/samba/smb.conf.org
$ sudo cp -ip /etc/krb5.conf /etc/krb5.conf.org

次にSamba Active Directory を構築しますが、/etc/samba/smb.conf ファイルが既に存在すると、samba-tool コマンドを実行した時にエラーが発生するので、あらかじめ削除しておきます。

smb.confの削除
$ sudo rm /etc/samba/smb.conf

samba-tool コマンドを実行してSamba Active Directory を構築します。

samba-tool
$ sudo samba-tool domain provision --use-rfc2307    \
            --realm=MYSITE.EXAMPLE.COM              \
            --server-role=dc                        \
            --dns-backend=SAMBA_INTERNAL            \
            --domain=MYSITE                         \
            --host-name=LDAP                        \
            --host-ip=192.168.1.42                  \
            --adminpass=p@ssword3                   \
            --option="interfaces=lo eth0"           \
            --option="bind interfaces only=yes"

コマンドが成功したら、OS を再起動します。

OSの再起動
# sudo shutdown -r now

Samba Active Directory の動作確認

再起動が完了したら、再度ログインし、smbclient でデフォルトの共有である"netlogon" と"sysvol" が参照できることを確認します。
これら"netlogon" と"sysvol" は、Samba Active Directory を構築中にsmb.conf に定義されたものになります。

smbclient
$ smbclient -L localhost -U%
Domain#[MYSITE] OS=[Unix] Server[Samba 4.1.6-Ubuntu]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk      
        sysvol          Disk      
        IPC$            IPC       IPC Service (Samba 4.1.6-Ubuntu)
Domain#[MYSITE] OS=[Unix] Server[Samba 4.1.6-Ubuntu]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
        WORKGROUP            LDAP

認証に成功したら、Domain 管理者ユーザを使用して共有ディレクトリの"netlogon" を参照してみます。

共有ディレクトリの確認
$ smbclient //localhost/netlogon -U Administrator -c 'ls'
Enter Administrator's password:     # <- "p@ssword3" を入力
Domain#[MYSITE] OS=[Unix] Server[Samba 4.1.6-Ubuntu]
  .                                   D        0  Tue Oct 27 10:17:46 2015
  ..                                  D        0  Tue Oct 27 10:17:50 2015

                39607 blocks of size 2097152. 36580 blocks available

サーバの参照先DNS、検索ドメインの変更

Samba Active Directory はドメインコントローラとしてDNS の機能を実装しています。
そのため、このサーバの参照先DNS を自分自身に設定します。
後ほど、Windows からログオンの動作確認をしますが、そのWindows マシンの参照先DNS もこのサーバへ向けることになります。
DNS の参照先をこのサーバを設定すると、このサーバやWindows マシンはインターネットのドメイン名をIP アドレスに解決できないのではないかと思われるかもしれませんが、Samba は名前解決できないドメイン名が問い合わされた場合、smb.conf の"dns forwarder" に定義されているDNS に再帰的に問い合わせに行くようになるので、通常通りインターネットにも接続できることになります。

/etc/network/interfaces(変更前)
...
dns-nameservers 8.8.8.8
...
/etc/network/interfaces(変更後)
...
dns-nameservers 127.0.0.1
dns-search mysite.example.com
...

設定を修正したら、network を再起動します。

network再起動
$ sudo ifdown eth0 && sudo ifup eth0

次に、名前解決の確認を行います。

名前解決の確認
$ host -t SRV _ldap._tcp.mysite.example.com
_ldap._tcp.mysite.example.com has SRV record 0 100 389 ldap.mysite.example.com.

$ host -t SRV _kerberos._udp.mysite.example.com
_kerberos._udp.mysite.example.com has SRV record 0 100 88 ldap.mysite.example.com.

$ host -t A ldap.mysite.example.com
ldap.mysite.example.com has address 192.168.1.42

$ host -t A google.com
google.com has address xxx.xxx.xxx.xxx

DNS サーバをSamba Active Directory から分割したい場合

もし、Samba Active Directory のマシンに対するDNS 問い合わせにより負荷が気になる場合、このSamba Active Directory とは別に処理能力の高いマシンにDNS サーバを別途構築し、そのDNS のSRV レコードとA レコードに上記Samba Active Directory のドメイン名とサーバのIP アドレス定義を登録してください。
そして、サーバ及びWindows マシンの参照先DNS サーバをそのDNS にします(詳細な設定手順は割愛します)。

Kerberos の設定

今回構築するSamba Active Directory ではKerberos が必要になりますが、その設定ファイルを準備します。
Samba Active Dicretory で使われるKerberos の設定ファイルは、Samba Active Directory 構築中にサンプルの設定ファイルも作成されています(apt-get でインストールした場合はたいてい/var/lib/samba/private/krb5.conf ファイルに作成される)。
それを/etc/krb5.conf にコピーまたはリンクを作成して参照できるようにします。

krb5.confのシンボリックリンク作成
$ sudo ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf

設定ファイルを準備したら、動作確認を行います。
Kerberos 認証のチケットを発行してみましょう。

kinit
$ kinit administrator@MYSITE.EXAMPLE.COM
Password for administrator@MYSITE.EXAMPLE.COM: 
Warning: Your password will expire in 41 days on Tue 08 Dec 2015 10:17:49 AM JST

チケットを発行したらklist コマンドを実行して資格情報を確認してみます。

klist
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@MYSITE.EXAMPLE.COM

Valid starting       Expires              Service principal
10/27/2015 11:13:14  10/27/2015 21:13:14  krbtgt/MYSITE.EXAMPLE.COM@MYSITE.EXAMPLE.COM
        renew until 10/28/2015 11:13:11

以上でSamba Active Directory 側の設定は終わりです。
続いてWindows 側の設定を行っていきます。

Windows 側の設定

※一部内容に英語と日本語の内容が混じっていますが、ご了承ください。

Windows 側の参照先DNS の設定

今回は、Windows Server 2013(評価版) からSamba AD を使用して、ネットワークログオンを行ってみます。
Windows にコンピュータのユーザでログインし、コントロールパネルからNetwork and Internet をクリックします。

SambaADWithKerberos_0000.png

Network and Sharing Center をクリックします。
SambaADWithKerberos_0001.png

Change adapter settings をクリックします。
SambaADWithKerberos_0002.png

インタフェースのアイコンで右クリックし、Properties をクリックします。
SambaADWithKerberos_0003.png

Internet Protocol Version 4(TCP/IPv4) をクリックします。
SambaADWithKerberos_0004.png

Use the following DNS server address: のPreferred DNS server: のIP アドレスを先ほど構築したSamba Active Directory サーバのIP アドレス192.168.1.42 に設定し、OK ボタンをクリックします。
SambaADWithKerberos_0005.png

Close ボタンをクリックします。
SambaADWithKerberos_0006.png

ドメイン参加

Samba Active Directory のAdministrator ユーザで認証を行い、Windows Server 2012 をドメインに参加させてみます。
デスクトップのスタートメニューアイコン上で右クリック、System メニューをクリックします。
SambaADWithKerberos_0007.png

Advanced system settings をクリックします。
SambaADWithKerberos_0008.png

Computer Name のプルダウンをクリックし、"To rename this computer or change its domain or workgroup, click Change" の文字の右側にあるChange ボタンをクリックします。
SambaADWithKerberos_0009.png

Computer Name/Domain Changes のウィンドウが出現したら、"Member of" のラジオボタンから、Domain: をチェックし、フォームに"mysite.example.com" と入力し、OK ボタンをクリックします。
SambaADWithKerberos_0010.png

認証を行うウィンドウが出てきたら、ユーザ名に"administrator", パスワードに"p@ssword3" を入力し、OK ボタンをクリックします。
SambaADWithKerberos_0011.png

認証に成功すると、以下のようなウィンドウが表示され、OS の再起動を促されますので、OS の再起動をしてください。
SambaADWithKerberos_0012.png

ドメインのユーザでログオン

OS が再起動してログオン画面が表示されたら、「←」ボタンをクリックします。
SambaADWithKerberosWinLogon0000.png

「他のユーザ」アイコンをクリックします。
SambaADWithKerberosWinLogon0001.png

入力フォームが表示されたら、ユーザ名に「ドメイン名\ユーザ名」という形式でSamba Active Directory に登録したadministrator ユーザを指定します(MYSITE\administrator)。
パスワードには、Samba Active Directory のadministrator ユーザのパスワードである"p@ssword3" を入力し、Enter キーを押下し、ログインできたら成功です。
SambaADWithKerberosWinLogon0002.png

ドメインユーザの管理

Windows Server 2012 上でSamba Active Directory ユーザを管理するために使用するツールをインストールします。
Windows Server 2012 のServer Manager ウィンドウを開きます。
右上のメニューのManager をクリックし、Add Roles and Features をクリックします。
SambaADWithKerberos_0016.png

"Before You Begin" のメニューが表示されたらそのままNext ボタンをクリックします。
SambaADWithKerberos_0017.png

"Installation Type" のメニューが表示されたら、"Role-based oe feature-based installation" のラジオボタンにチェックを入れ、Next ボタンをクリックします。
SambaADWithKerberos_0018.png

"Server Selection" のメニューが表示されたら自分のサーバが選択されていることを確認し、Next ボタンをクリックします。
SambaADWithKerberos_0019.png

"Server Roles" メニューが表示されたらそのままNext ボタンをクリックします。
SambaADWithKerberos_0020.png

以下の通りActive Directory に関するパッケージを選択します。
SambaADWithKerberos_0021.png

また、必要に応じてグループ ポリシーの管理 パッケージも選択します。
SambaADWithKerberos_0021_02.png

Confirmation ウィンドウが表示され、選択したパッケージが表示されているのを確認したら、Install ボタンをクリックします。
SambaADWithKerberos_0022_02.png

インストールが完了したらClose ボタンをクリックします。
SambaADWithKerberos_0023.png

ユーザを追加する

Samba Active Directory にユーザを新規に作成してみましょう。
まず、コントロールパネルを開きAdministrative Tools をクリックします。
SambaADWithKerberos_0024.png

管理ツールの中からActive Directory Users and Computers をダブルクリックします。
SambaADWithKerberos_0025.png

すると、以下のようなActive Directory Users and Computers ツールのウィンドウが出現するので、左ペインのmysite.example.com をクリックしてツリーを開き、Users をクリックします。
すると、右ペインにユーザとグループの一覧が出現し、現在Samba Active Directory に登録されている情報を確認することができます。
新しくユーザを追加するために上部メニューの人型のアイコンをクリックします。
SambaADWithKerberos_0028.png

今回は新規にGoro Suzuki さんを追加してみます。
入力する内容としては、以下の通り入力し、Next ボタンをクリックします。
SambaADWithKerberos_0029.png

次にGoro Suzuki さんのパスワードを入力します。
ある程度複雑なパスワードにしておかないと、推測しやすいパスワードとして登録を拒否されるので、適度に複雑なものにしておいてください。
パスワードの入力が完了したら、Next ボタンをクリックします。
SambaADWithKerberos_0030.png

最後に入力内容を確認し、問題なければFinish ボタンをクリックします。
SambaADWithKerberos_0031.png

ユーザの登録に成功すると先ほどの一覧に新しくGoro Suzuki ユーザが表示されます。
SambaADWithKerberos_0036.png

ユーザをグループに追加する

先ほど追加したGoro Suzuki ユーザをAdministrator ユーザに登録してみましょう。
Active Directory Users and Computers の右ペインから、Goro Suzuki を選択し、右クリックし、Properties をクリックします。
SambaADWithKerberos_0037.png

プロパティウィンドウが開いたら、Member Of プルダウンをクリックし、Add ボタンをクリックします。
SambaADWithKerberos_0038.png

Select Groups ウィンドウが表示されたら、Advanced ボタンをクリックします。
SambaADWithKerberos_0039.png

すると、次のようなウィンドウが表示されるので、Find Now ボタンをクリックします。
SambaADWithKerberos_0040.png

Search results として、グループの一覧が表示されるので、Administrator グループを選択し、OK ボタンをクリックします。
SambaADWithKerberos_0041.png

"Enter the object names to select" の入力欄にAdministrators が表示されたのを確認し、OK ボタンをクリックします。
SambaADWithKerberos_0042.png

Member of のところにAdministrator が追加されたのを確認し、Apply, OK ボタンをクリックしてウィンドウを閉じます。
SambaADWithKerberos_0043.png

これで、Goro Suzuki ユーザの登録が完了しました。
次は一旦ログオフし、新規に作成したGoro Suzuki ユーザでログオンできることを確認してみましょう。

新規に作成したユーザでログインする

それでは新規に作成したGoro Suzuki ユーザでWindows にログオンできるかテストをしてみましょう。
一旦ログオフしたら、ユーザ名に"MYSITE\goro-suzuki" と入力し、パスワードを入力します。
SambaADWithKerberosWinLogon0003.png

すると、パスワードの有効期限が切れていると警告が出て、新しいパスワードの入力が聞かれます。
SambaADWithKerberosWinLogon0004.png

新しいパスワードを入力してGoro Suzuki ユーザでログインできたら成功です。

パスワード複雑度の機能を無効化する

パスワード複雑度の機能を無効化するには、サーバで下記コマンドを実行します。

パスワード複雑度の機能無効化
# samba-tool domain passwordsettings set --complexity=off

参考

Setup Samba Domain Controller with LDAP Backend in Ubuntu 13.04
http://www.unixmen.com/setup-samba-domain-controller-with-openldap-backend-in-ubuntu-13-04/
HostoForge
https://www.howtoforge.com/centos-5.x-samba-domain-controller-with-ldap-backend
Setup a Samba Active Directory Domain Controller
https://wiki.samba.org/index.php/Setup_a_Samba_Active_Directory_Domain_Controller
Dependencies
https://wiki.samba.org/index.php/Operating_system_requirements/Dependencies_-_Libraries_and_programs
How to Make an Ubuntu Active Directory Domain Controller With Samba
https://www.youtube.com/watch?v=Rf7Hk8qWt1Q
How to install Active Directory Users and Computers
https://www.404techsupport.com/2013/03/windows-server-2012-installing-active-directory-users-and-computers-and-group-policy-management-console/
How to backup Active Directory
https://www.youtube.com/watch?v=FCFYCK0DBeE
Install Samba+OpenLDAP on Debian 7 Wheezy
http://siddou.mynetgear.com/2013/06/install-sambaopenldap-on-debian-7-wheezy/
Samba4の内部の概略
http://www.geocities.jp/sugachan1973/doc/funto102.html
Samba4の概要
http://www.unix-power.net/linux/samba4.html
48
52
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
52