Active Directoryドメインコントローラー構築(Samba)

最終更新日: 2017.05.24

<<トップページ <<新着情報 <<逆引き集 <<リンク集 <<サイト内検索 <<メルマガ <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

SambaでWindowsドメインのユーザー情報を管理するActive Directoryドメインコントローラーを構築する。

(注)Samba4にはLDAPサーバー、DNSサーバー機能を含んでいるため、従来のSamba3でドメインコントローラーを構築する場合に必要だったLDAPサーバー(OpenLDAP)やDNSサーバー(BIND)の導入は不要。

NTPサーバー構築済であること
SambaサーバーDNSサーバーが導入済でないこと

【構築条件(例)】
ドメインコントローラーのホスト名:centosdc01
ドメイン名:CENTOS
レルム:CENTOS.LOCAL
(注)ホスト名とドメイン名は異なること


■ホスト名設定

[root@localhost ~]# echo centosdc01 > /etc/hostname ← ホスト名設定

[root@localhost ~]# vi /etc/sysconfig/network ← ホスト名設定
HOSTNAME=centosdc01

[root@localhost ~]# reboot ← システム再起動

[root@centosdc01 ~]# hostname ← ホスト名設定確認
centosdc01

■Sambaインストール

[root@centosdc01 ~]# yum -y install perl gcc libacl-devel libblkid-devel gnutls-devel \
readline-devel python-devel gdb pkgconfig krb5-workstation \
zlib-devel setroubleshoot-server libaio-devel \
setroubleshoot-plugins policycoreutils-python \
libsemanage-python setools-libs-python setools-libs \
popt-devel libpcap-devel sqlite-devel libidn-devel \
libxml2-devel libacl-devel libsepol-devel libattr-devel \
keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils \
libxslt docbook-style-xsl openldap-devel ← Sambaインストールに必要なパッケージをインストール


[root@centosdc01 ~]# wget http://www.samba.org/samba/ftp/samba-latest.tar.gz ← Sambaダウンロード

[root@centosdc01 ~]# tar zxvf samba-latest.tar.gz ← Samba展開

[root@centosdc01 ~]# cd samba-* ← Samba展開先ディレクトリへ移動


[root@centosdc01 samba-4.1.13]# ./configure && make && make install ← Sambaインストール

[root@centosdc01 samba-4.1.13]# cd ← Samba展開先ディレクトリを抜ける

[root@centosdc01 ~]# rm -rf samba-* ← Samba展開先ディレクトリ、ダウンロードしたファイルを削除

■ドメイン準備

[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2 ← ドメイン準備
Realm : CENTOS.LOCAL ← レルム(例:CENTOS.LOCAL)を応答
 Domain [CENTOS]: ← 空ENTER(ドメイン名はレルムをピリオドで分割した最左端)
 Server Role (dc, member, standalone) [dc]: ← 空ENTER(サーバー役割はドメインコントローラー)
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: ← 空ENTER(DNSはSAMBA内蔵DNS)
 DNS forwarder IP address (write 'none' to disable forwarding) [192.168.1.1]: ← 空ENTER(DNS転送先は現在DNS)
Administrator password: ← 任意のドメイン管理者パスワードを応答(注)パスワードは英数字記号混在で8文字以上であること
Retype password: ← ドメイン管理者パスワードを再応答(確認)
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=centos,DC=local
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=centos,DC=local
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:              centosdc01
NetBIOS Domain:        CENTOS
DNS Domain:            centos.local
DOMAIN SID:            S-1-5-21-1510493314-1459266175-3619656251

※ドメイン準備をやり直す場合
[root@centosdc01 ~]# rm -f /usr/local/samba/etc/smb.conf ← ドメイン準備で生成されたファイルを削除

[root@centosdc01 ~]# rm -rf /usr/local/samba/private/* ← ドメイン準備で生成されたファイルを削除

[root@centosdc01 ~]# rm -rf /usr/local/samba/var/locks/sysvol/* ← ドメイン準備で生成されたファイルを削除

■Samba起動


[root@centosdc01 ~]# vi /etc/rc.d/init.d/samba ← Samba起動スクリプト作成
#!/bin/bash
#
# samba4        This shell script takes care of starting and stopping
#               samba4 daemons.
#
# chkconfig: - 58 74
# description: Samba 4.0 will be the next version of the Samba suite
# and incorporates all the technology found in both the Samba4 alpha
# series and the stable 3.x series. The primary additional features
# over Samba 3.6 are support for the Active Directory logon protocols
# used by Windows 2000 and above.

### BEGIN INIT INFO
# Provides: samba4
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: start and stop samba4
# Description: Samba 4.0 will be the next version of the Samba suite
# and incorporates all the technology found in both the Samba4 alpha
# series and the stable 3.x series. The primary additional features
# over Samba 3.6 are support for the Active Directory logon protocols
# used by Windows 2000 and above.
### END INIT INFO

# Source function library.
. /etc/init.d/functions


# Source networking configuration.
. /etc/sysconfig/network


prog=samba
prog_dir=/usr/local/samba/sbin/
lockfile=/var/lock/subsys/$prog


start() {
        [ "$NETWORKING" = "no" ] && exit 1
#       [ -x /usr/sbin/ntpd ] || exit 5

                # Start daemons.
                echo -n $"Starting samba4: "
                daemon $prog_dir/$prog -D
        RETVAL=$?
                echo
        [ $RETVAL -eq 0 ] && touch $lockfile
        return $RETVAL
}


stop() {
        [ "$EUID" != "0" ] && exit 4
                echo -n $"Shutting down samba4: "
        killproc $prog_dir/$prog
        RETVAL=$?
                echo
        [ $RETVAL -eq 0 ] && rm -f $lockfile
        return $RETVAL
}


# See how we were called.
case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
status)
        status $prog
        ;;
restart)
        stop
        start
        ;;
reload)
        echo "Not implemented yet."
        exit 3
        ;;
*)
        echo $"Usage: $0 {start|stop|status|restart|reload}"
        exit 2
esac

[root@centosdc01 ~]# chmod +x /etc/rc.d/init.d/samba ← Samba起動スクリプトに実行権限付加

[root@centosdc01 ~]# systemctl start samba ← Samba起動

[root@centosdc01 ~]# systemctl enable samba ← Samba自動起動設定

[root@centosdc01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 ← ネットワーク設定ファイル編集

DNS1="127.0.0.1" ← 問合せ先DNSサーバーを自分自身にする

[root@centosdc01 ~]# systemctl restart network ← ネットワーク再起動

[root@centosdc01 ~]# cat /etc/resolv.conf ← 問合せ先DNSサーバー変更確認
# Generated by NetworkManager
nameserver 127.0.0.1

[root@centosdc01 ~]# /bin/cp /usr/local/samba/private/krb5.conf /etc/ ← krb5.confを所定のディレクトリへコピー


■Windowsコンピューターのドメイン参加

WindowsコンピューターをSambaのドメインに参加させる。

(1)問合せ先DNSサーバーをSambaサーバーのIPアドレスに変更する

(2)所属グループをドメインに変更する※ドメイン参加時に指定するユーザー名はAdministrator、パスワードはドメイン準備で指定したドメイン管理者パスワードを指定

Windowsコンピューター再起動後、ユーザー名に「Administrator@ドメイン名(例:Administrator@centos)」、パスワードにドメイン準備で指定したドメイン管理者パスワードを指定してドメインにログオンできること

■リモートサーバー管理ツール導入

Windows上でユーザー管理等Active Directoryの管理を行うツールであるリモートサーバー管理ツールをインストールする。
なお、リモートサーバー管理ツールはインストールしただけでは利用できない。「機能有効化」、「スタートメニューへの表示」操作を行う必要がある。

(1)Administratorでドメインへログオンする

(2)Windowsのバージョンに合ったリモートサーバー管理ツールをダウンロードしてインストールする

(3)リモートサーバー管理ツールを有効にする
「コントロールパネル」⇒「プログラム」⇒「Windowsの機能の有効化または無効化」
「リモートサーバー管理ツール」⇒「機能管理ツール」⇒「グループポリシー管理ツール」をチェック
「リモートサーバー管理ツール」⇒「役割管理ツール」⇒「AD DSおよびAD LDSツール」⇒「AD DSツール」⇒「NISサーバーツール」をチェック
「リモートサーバー管理ツール」⇒「役割管理ツール」⇒「AD DSおよびAD LDSツール」⇒「AD DSツール」⇒「AD LDSスナップインおよびコマンドラインツール」をチェック
「リモートサーバー管理ツール」⇒「役割管理ツール」⇒「AD DSおよびAD LDSツール」⇒「AD DSツール」⇒「Windows PowerShell用Active Directoryモジュール」をチェック
「リモートサーバー管理ツール」⇒「役割管理ツール」⇒「DNSサーバーツール」をチェック
「リモートサーバー管理ツール」⇒「役割管理ツール」⇒「ファイルサービスツール」⇒「リモートデスクトップサービスツール」をチェック
「OK」

(4)リモートサーバー管理ツールをスタートメニューに表示する
タスクバー上で右クリック⇒「プロパティ」で「タスクバーと[スタート]メニューのプロパティ」を起動
「[スタート]メニュー」タブ⇒「カスタマイズ」⇒「システム管理ツール」で「[すべてのプログラム]メニューと[スタート]メニューに表示する」を選択

「スタート」⇒「管理ツール」⇒「Active Directory ユーザーとコンピューター」でActive Directoryのドメイン、コンピューター、ユーザーが確認できること

■ユーザー管理

Sambaで構築したActive DirectoryではWindows側(リモートサーバー管理ツールを使用)でもLinux側でもユーザー管理が行えるが、ここでは、Linux側でユーザー管理を行う。

(1)ユーザー作成
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user create centos01 pass123@ ← ユーザー名centos01、パスワードpass123@でユーザー作成
User 'centos01' created successfully

(2)ユーザー削除
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user delete centos01 ← ユーザーcentos01を削除
Deleted user centos01

(3)ユーザー無効化
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user disable centos01 ← ユーザーcentos01を無効化

[root@centosdc01 ~]# /usr/local/samba/bin/pdbedit -u centos01 -v ← ユーザーcentos01無効化確認
Unix username:        centos01
NT username:
Account Flags:        [DU         ] ← Dが表示されていること=無効を示す
User SID:             S-1-5-21-2909066206-3298834993-4289490847-1105
Primary Group SID:    S-1-5-21-2909066206-3298834993-4289490847-513
Full Name:
Home Directory:
HomeDir Drive:        (null)
Logon Script:
Profile Path:
Domain:
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          0
Kickoff time:         木, 14  9月 30828 11:48:05 JST
Password last set:    金, 21 11月 2014 10:54:15 JST
Password can change:  金, 21 11月 2014 10:54:15 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

(4)ユーザー有効化
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user enable centos01 ← ユーザーcentos01を有効化
Enabled user 'centos01'

[root@centosdc01 ~]# /usr/local/samba/bin/pdbedit -u centos01 -v ← ユーザーcentos01有効化確認
Unix username:        centos01
NT username:
Account Flags:        [U          ] ← Dが表示されていないこと=有効を示す
User SID:             S-1-5-21-2909066206-3298834993-4289490847-1105
Primary Group SID:    S-1-5-21-2909066206-3298834993-4289490847-513
Full Name:
Home Directory:
HomeDir Drive:        (null)
Logon Script:
Profile Path:
Domain:
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          0
Kickoff time:         木, 14  9月 30828 11:48:05 JST
Password last set:    金, 21 11月 2014 10:54:15 JST
Password can change:  金, 21 11月 2014 10:54:15 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

(5)ユーザー一覧表示
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user list ← ユーザー一覧表示
Administrator
centos01
krbtgt
Guest

(6)パスワード変更※ユーザー自身によるパスワード変更はWindows上で実施
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user setpassword centos01 --newpassword=password456@ ← ユーザーcentos01のパスワードをpassword456@へ変更
Changed password OK

■パスワード方針設定

パスワード方針を設定する。

(1)パスワード複雑性(英数字記号混在強制)無効化
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool domain passwordsettings set --complexity=off ← パスワード複雑性(英数字記号混在強制)無効化
Password complexity deactivated!
All changes applied successfully!

[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user setpassword centos01 --newpassword=password ← ユーザーcentos01のパスワードを簡易なパスワード(password)に変更(成功)
Changed password OK

(2)パスワード複雑性(英数字記号混在強制)有効化
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool domain passwordsettings set --complexity=on ← パスワード複雑性(英数字記号混在強制)有効化
Password complexity activated!
All changes applied successfully!

[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user setpassword centos01 --newpassword=password ← ユーザーcentos01のパスワードを簡易なパスワード(password)に変更(失敗)
ERROR: Failed to set password for user 'centos01': (19, '0000052D: Constraint violation - check_password_restrictions: the password does not meet the complexity criteria!')

(3)最小パスワード長設定
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-length=8 ← 最小パスワード長を8桁に設定
Minimum password length changed!
All changes applied successfully!

[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user setpassword centos01 --newpassword=pass1@ ← ユーザーcentos01のパスワードを8桁未満のパスワードに変更(失敗)
ERROR: Failed to set password for user 'centos01': (19, '0000052D: Constraint violation - check_password_restrictions: the password is too short. It should be equal or longer than 8 characters!')

[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user setpassword centos01 --newpassword=pass123@ ← ユーザーcentos01のパスワードを8桁のパスワードに変更(成功)
Changed password OK

(4)パスワード有効期限設定
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool domain passwordsettings set --max-pwd-age=90 ← パスワード有効期限を90日に設定
Maximum password age changed!
All changes applied successfully!

[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool domain passwordsettings set --max-pwd-age=0 ← パスワード有効期限を0日(無期限)に設定
Maximum password age changed!
All changes applied successfully!

(5)パスワード変更禁止期間設定
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-age=1 ← パスワード変更禁止期間を1日に設定
Minimum password age changed!
All changes applied successfully!

[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-age=0 ← パスワード変更禁止期間を0日(同日中に変更可能)に設定
Minimum password age changed!
All changes applied successfully!

(6)パスワード方針表示
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool domain passwordsettings show ← パスワード方針表示
Password informations for domain 'DC=centos,DC=local'

Password complexity: on・・・パスワード複雑性有効
Store plaintext passwords: off
Password history length: 24
Minimum password length: 8・・・最小パスワード長は8桁
Minimum password age (days): 0・・・パスワード変更禁止期間は0日(同日中に変更可能)
Maximum password age (days): 90・・・パスワード有効期限は90日

■一般ユーザーのリモート接続設定※リモートデスクトップ接続でドメインへログオンする場合のみ

初期設定ではAdministratorユーザーしか「リモートデスクトップ接続」でドメインへ接続できないため、一般ユーザーがドメインへリモート接続できるようにする。

(1)Administratorでドメインへログオンする

(2)一般ユーザーのリモートデスクトップ接続を許可する
「スタート」⇒「コントロールパネル」⇒「システムとセキュリティ」⇒「システム」⇒「リモートの設定」で「システムのプロパティ」を開く
「リモートデスクトップを実行しているコンピューターからの接続を許可する」をチェック
「ユーザーの選択」⇒「追加」で「ドメイン名\Domain Users(例:CENTOS\Domain Users)」を追加

一般ユーザーでドメインへリモート接続できること

■移動ユーザープロファイル設定

どの端末からドメインへログオンしてもデスクトップ設定やマイドキュメント等のユーザー固有の環境(ユーザープロファイル)を利用できるようにする。

[root@centosdc01 ~]# mkdir /usr/local/samba/var/profiles ← 移動ユーザープロファイル格納ディレクトリ作成

[root@centosdc01 ~]# chmod 1777 /usr/local/samba/var/profiles ← 移動ユーザープロファイル格納ディレクトリパーミッションを変更
(注)パーミッション1777は、誰でもファイルを作成できるが、作成したファイルの所有者は作成者になる指定

[root@centosdc01 ~]# vi /usr/local/samba/etc/smb.conf ← Samba設定ファイル編集
下記を追加
[Profiles]
        path = /usr/local/samba/var/profiles
        read only = No
        guest ok = Yes
        browseable = No

[root@centosdc01 ~]# systemctl restart samba ← Samba再起動

【新規ユーザー】
[root@centosdc01 ~]# /usr/local/samba/bin/samba-tool user create centos01 pass123@ --profile-path="\\\Active DirectoryサーバーIPアドレス\profiles\%USERNAME%"
 ← ユーザーcentos01作成時に移動ユーザープロファイル保存先を指定
User 'centos01' created successfully

【既存ユーザー】
[root@centosdc01 ~]# /usr/local/samba/bin/pdbedit -u centos01 --profile="\\\Active DirectoryサーバーIPアドレス\profiles\%USERNAME%"
 ← 既存ユーザーcentos01の移動ユーザープロファイル保存先を変更

以上で、Windowsからログオフ時にサーバーの「/usr/local/samba/var/profiles/ユーザー名.V2」ディレクトリへユーザープロファイルが保存され、次回Windowsログオン時には当該ディレクトリからユーザープロファイルを読み込むことにより、異なる端末を使用しても前回使用時のユーザー固有の環境が利用できるようになる。

■フォルダーリダイレクト設定

移動ユーザープロファイル設定でユーザー固有のデータ(デスクトップ設定やマイドキュメント等)をどの端末にログオンしても利用できるようになったが、移動ユーザープロファイルではログオン時にサーバーからデータをダウンロード、ログオフ時にサーバーへデータをアップロードするため、データが大容量になるとログオン/ログオフに時間がかかるようになる問題がある。この問題の対処として、ドキュメント等、大容量のデータを格納するフォルダーはフォルダーリダイレクト設定によりサーバー上の共有フォルダーへ保存されるようにする。
なお、ユーザーはフォルダーリダイレクト設定したフォルダーの保存先がサーバー上に変わったことを意識する必要はなく、従来どおりにフォルダーはローカル上にあるものとして扱うことができる。

(1)Administratorでドメインへログオンする

(2)グループポリシー管理エディターを起動する
「スタート」⇒「管理ツール」⇒「グループポリシーの管理」を起動
「グループポリシーの管理」⇒「フォレスト:ドメイン名」⇒「ドメイン」⇒「ドメイン名」⇒「グループポリシーオブジェクト」⇒「Default Domain Policy」を右クリック⇒「編集」でドメインの「グループポリシー管理エディター」を起動

(3)フォルダーリダイレクトを設定する
「ユーザーの構成」⇒「ポリシー」⇒「Windowsの設定」⇒「フォルダーリダイレクト」⇒「対象フォルダ(例:ドキュメント)」を右クリック⇒「プロパティ」

[ターゲット]タブ
「設定」で「基本-全員のフォルダーを同じ場所にリダイレクトする」を選択
「対象のフォルダーの場所」で「ルートパスの下に各ユーザーのフォルダーを作成する」を選択
「ルートパス」に「\\Active DirectoryサーバーIPアドレス\profiles」を入力

[設定]タブ
すべてのチェックボックスをチェック

「OK」

(4)グループポリシー管理エディターを閉じる

以上で、サーバーの「/usr/local/samba/var/profiles/ユーザー名」ディレクトリへフォルダーリダイレクト設定したフォルダーが保存されるようになる。また、移動ユーザープロファイルと異なり、ユーザーによるファイルの更新はリアルタイムにサーバーに反映される。






▲このページのトップへ戻る

LPIロゴ Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします