Samba 4.7.xでActive Directoryを1から立てる

2019/06/14追記

Samba 4.10.xでActive Directoryを1から立てる」という記事を更新版の記事を作成しています。違いは必要となるパッケージが増えたことについてです。


CentOS7とSamba 4.7.5で環境を作成しなおしたので、記事更新

過去の記事はこちら
2014年2月版「Samba 4.xでActive Directoryを1から立てる
2016年7月版「Samba 4.4.xでActive Directoryを1から立てる


Linux上でSambaを使ってActive Directoryサーバを立てるメリット
Windows Serverを買わなくてもActive Directoryを作れる
 ライセンス費用の低減
Active Directoryユーザの作成などのユーザ管理をWindowsマシンからWindows標準ツールで行える
 ユーザ作成/変更、コンピュータアカウントの作成、DNS管理など、Active Directoryの管理を行う際に
 良く使う動作については、Linuxのコマンドではなく、WindowsのActive Directory管理ツールで行える
 具体的にはADに参加しているWindowsマシンにWindows機能のActive Directory管理ツールを追加インストールしたあと、
 ADの管理者ユーザでログオンすることでAD管理を行うことができる
設定が難しくない
 いまのsambaは、DNSサーバとLDAPサーバ機能が統合されており、AD名とAD上の役割と
 管理者パスワードを決めてしまえば、あとは良きに計らってくれるので
 設定の難易度が非常に低い

もちろん、デメリット、もあります
ActiveDirectoryの全機能が搭載されていない
 ドメイン/フォレストの機能レベルが「Windows Server 2008 R2」までとなっている。
 なお、フェールオーバクラスタについては作成できるようになっていました。
 →「samba 4.7.4で作ったActive Directory環境でWindowsServer2016フェールオーバークラスターを動作させた」というわけで動作することを確認しました

それでは、実際の手順について・・・
元ネタは公式ページの「Setting up Samba as an Active Directory Domain Controller」となります。

0. CentOS7の最小インストールを実施

1. /etc/hostsの修正
自ホスト名を/etc/hostsに追加
追加の際は、ショートのホスト名と、ドメイン付きのFQDNの両方を列挙すること。

1[root@adserver ~]# cat /etc/hosts&lt;br&gt;<br>
2127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4&lt;br&gt;<br>
3::1         localhost localhost.localdomain localhost6 localhost6.localdomain6&lt;br&gt;<br>
4172.17.44.40    adserver adserver.adosakana.local&lt;br&gt;<br>
5[root@adserver ~]#

2. 好みに応じて使うツールをインストール
セッションが途中で切れても良い様に「screen」と、ファイルダウンロードするためにwget(curlでもいいのですが)をインストールします。

1[root@adserver ~]# yum install wget screen&lt;br&gt;<br>
2<略>&lt;br&gt;<br>
3[root@adserver ~]#

3. 必要なパッケージをインストール
Samba公式の「Operating system requirements/Dependencies – Libraries and programs」に記載されているパッケージをインストール

1[root@adserver ~]# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \&lt;br&gt;<br>
2       libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \&lt;br&gt;<br>
3       perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \&lt;br&gt;<br>
4       python-crypto gnutls-devel libattr-devel keyutils-libs-devel \&lt;br&gt;<br>
5       libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \&lt;br&gt;<br>
6       pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel&lt;br&gt;<br>
7<略>&lt;br&gt;<br>
8[root@adserver ~]#

4. sambaのtar.gzをダウンロード

2--2016-xx-xx xx:xx:xx--  https://download.samba.org/pub/samba/stable/samba-4.7.5.tar.gz&lt;br&gt;<br>
3download.samba.org をDNSに問いあわせています... 144.76.82.156&lt;br&gt;<br>
4download.samba.org|144.76.82.156|:443 に接続しています... 接続しました。&lt;br&gt;<br>
5HTTP による接続要求を送信しました、応答を待っています... 200 OK&lt;br&gt;<br>
6長さ: 20715838 (20M) [application/gzip]&lt;br&gt;<br>
7`samba-4.7.5.tar.gz' に保存中&lt;/p&gt;<br>
8&lt;p&gt;100%[======================================&amp;gt;] 16,862,398  3.71MB/s 時間 5.5s&lt;/p&gt;<br>
9&lt;p&gt;2018-03-xx xx:xx:xx (2.93 MB/s) - `samba-4.7.5.tar.gz' へ保存完了 [16862398/16862398]&lt;/p&gt;<br>
10&lt;p&gt;[root@adserver ~]#

5. configure実施

1[root@adserver ~]# tar xfz samba-4.7.5.tar.gz&lt;br&gt;<br>
2[root@adserver ~]# cd samba-4.7.5&lt;br&gt;<br>
3[root@adserver samba-4.7.5]# ./configure&lt;br&gt;<br>
4Checking for program gcc or cc           : /usr/bin/gcc&lt;br&gt;<br>
5Checking for program cpp                 : /usr/bin/cpp&lt;br&gt;<br>
6<略>&lt;br&gt;<br>
7Checking if toolchain accepts -fstack-protector                                                 : yes&lt;br&gt;<br>
8'configure' finished successfully (2m43.587s)&lt;br&gt;<br>
9[root@adserver samba-4.7.5]#

6. make & make install

1[root@adserver samba-4.7.5]# make&lt;br&gt;<br>
2WAF_MAKE=1 python ./buildtools/bin/waf build&lt;br&gt;<br>
3Waf: Entering directory `/root/samba-4.7.5/bin'&lt;br&gt;<br>
4<略>&lt;br&gt;<br>
5Note: Writing nmblookup4.1&lt;br&gt;<br>
6Waf: Leaving directory `/root/samba-4.7.5/bin'&lt;br&gt;<br>
7'build' finished successfully (22m56.876s)&lt;br&gt;<br>
8[root@adserver samba-4.7.5]# make install&lt;br&gt;<br>
9WAF_MAKE=1 python ./buildtools/bin/waf install&lt;br&gt;<br>
10Waf: Entering directory `/root/samba-4.7.5/bin'&lt;br&gt;<br>
11<略>&lt;br&gt;<br>
12* installing bin/default/pidl/Parse::Pidl::Wireshark::NDR.3pm as /usr/local/samba/share/man/man3/Parse::Pidl::Wireshark::NDR.3pm&lt;br&gt;<br>
13Waf: Leaving directory `/root/samba-4.7.5/bin'&lt;br&gt;<br>
14'install' finished successfully (6m48.094s)&lt;br&gt;<br>
15[root@adserver samba-4.7.5]#

7. インストール完了確認

sambaのバージョン確認

1[root@adserver ~]# /usr/local/samba/sbin/samba -V&lt;br&gt;<br>
2Version 4.7.5&lt;br&gt;<br>
3[root@adserver ~]#

8. Active Directoryのセットアップ
ドメイン「adosakana.local」を作成します。
また、sambaの機能を使ってAD DNSを構築するので「SAMBA_INTERNAL」を選択します。

なお、「–use-rfc2307」はADにNIS連携機能を追加するオプションです。AD上にUnix用のUID/GID/shell情報なども格納できるようにします。Samba環境では有効にしておくべきものです。

1[root@adserver ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive&lt;br&gt;<br>
2Realm [ADOSAKANA.LOCAL]:&lt;br&gt;<br>
3 Domain [ADOSAKANA]:&lt;br&gt;<br>
4 Server Role (dc, member, standalone) [dc]:&lt;br&gt;<br>
5 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:&lt;br&gt;<br>
6 DNS forwarder IP address (write 'none' to disable forwarding) [172.30.50.100]:&lt;br&gt;<br>
7Administrator password:&lt;br&gt;<br>
8Retype password:&lt;br&gt;<br>
9Looking up IPv4 addresses&lt;br&gt;<br>
10Looking up IPv6 addresses&lt;br&gt;<br>
11No IPv6 address will be assigned&lt;br&gt;<br>
12Setting up secrets.ldb&lt;br&gt;<br>
13Setting up the registry&lt;br&gt;<br>
14Setting up the privileges database&lt;br&gt;<br>
15Setting up idmap db&lt;br&gt;<br>
16Setting up SAM db&lt;br&gt;<br>
17Setting up sam.ldb partitions and settings&lt;br&gt;<br>
18Setting up sam.ldb rootDSE&lt;br&gt;<br>
19Pre-loading the Samba 4 and AD schema&lt;br&gt;<br>
20Adding DomainDN: DC=adosakana,DC=local&lt;br&gt;<br>
21Adding configuration container&lt;br&gt;<br>
22Setting up sam.ldb schema&lt;br&gt;<br>
23Setting up sam.ldb configuration data&lt;br&gt;<br>
24Setting up display specifiers&lt;br&gt;<br>
25Modifying display specifiers&lt;br&gt;<br>
26Adding users container&lt;br&gt;<br>
27Modifying users container&lt;br&gt;<br>
28Adding computers container&lt;br&gt;<br>
29Modifying computers container&lt;br&gt;<br>
30Setting up sam.ldb data&lt;br&gt;<br>
31Setting up well known security principals&lt;br&gt;<br>
32Setting up sam.ldb users and groups&lt;br&gt;<br>
33Setting up self join&lt;br&gt;<br>
34Adding DNS accounts&lt;br&gt;<br>
35Creating CN=MicrosoftDNS,CN=System,DC=adosakana,DC=local&lt;br&gt;<br>
36Creating DomainDnsZones and ForestDnsZones partitions&lt;br&gt;<br>
37Populating DomainDnsZones and ForestDnsZones partitions&lt;br&gt;<br>
38Setting up sam.ldb rootDSE marking as synchronized&lt;br&gt;<br>
39Fixing provision GUIDs&lt;br&gt;<br>
40A Kerberos configuration suitable for Samba AD has been generated at /usr/local/samba/private/krb5.conf&lt;br&gt;<br>
41Setting up fake yp server settings&lt;br&gt;<br>
42Once the above files are installed, your Samba AD server will be ready to use&lt;br&gt;<br>
43Server Role:           active directory domain controller&lt;br&gt;<br>
44Hostname:              adserver&lt;br&gt;<br>
45NetBIOS Domain:        ADOSAKANA&lt;br&gt;<br>
46DNS Domain:            adosakana.local&lt;br&gt;<br>
47DOMAIN SID:            S-1-5-21-98280047-2622333268-1688910966&lt;/p&gt;<br>
48&lt;p&gt;[root@adserver ~]#

なお、password_hashでエラーとなるとおもいます。
現状の /etc/krb5.conf の内容が問題で発生しています。
この後の手順で正しいものに置き換えるので、この段階では単純に「mv /etc/krb5.conf /etc/krb5.conf.org」などの手段で別の名前として使わなくすれば大丈夫です。

1Setting up sam.ldb users and groups&lt;br&gt;<br>
2ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:3132&lt;br&gt;<br>
3  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", line 176, in _run&lt;br&gt;<br>
4    return self.run(*args, **kwargs)&lt;br&gt;<br>
5  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 474, in run&lt;br&gt;<br>
6    nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)&lt;br&gt;<br>
7  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2175, in provision&lt;br&gt;<br>
8    skip_sysvolacl=skip_sysvolacl)&lt;br&gt;<br>
9  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1787, in provision_fill&lt;br&gt;<br>
10    next_rid=next_rid, dc_rid=dc_rid)&lt;br&gt;<br>
11  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1447, in fill_samdb&lt;br&gt;<br>
12    "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))&lt;br&gt;<br>
13  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", line 55, in setup_add_ldif&lt;br&gt;<br>
14    ldb.add_ldif(data, controls)&lt;br&gt;<br>
15  File "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", line 229, in add_ldif&lt;br&gt;<br>
16    self.add(msg, controls)

9. sambaを起動

1[root@adserver ~]# ps -ef|grep samba&lt;br&gt;<br>
2root     11129 23028  0 16:01 pts/0    00:00:00 grep --color=auto samba&lt;br&gt;<br>
3[root@adserver ~]# /usr/local/samba/sbin/samba&lt;br&gt;<br>
4[root@adserver ~]# ps -ef|grep samba&lt;br&gt;<br>
5root     11131     1 14 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
6root     11132 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
7root     11133 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
8root     11134 11132  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
9root     11135 11134 19 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
10root     11136 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
11root     11137 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
12root     11138 11131 21 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
13root     11139 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
14root     11140 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
15root     11141 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
16root     11142 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
17root     11143 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
18root     11144 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
19root     11145 11142  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
20root     11146 11131  2 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
21root     11147 11145 18 16:01 ?        00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
22root     11148 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
23root     11151 11146  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
24root     11152 11151 17 16:01 ?        00:00:00 python /usr/local/samba/sbin/samba_dnsupdate&lt;br&gt;<br>
25root     11153 11146  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba&lt;br&gt;<br>
26root     11154 11153 17 16:01 ?        00:00:00 python /usr/local/samba/sbin/samba_spnupdate&lt;br&gt;<br>
27root     11157 11135  0 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
28root     11158 11135  0 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
29root     11160 23028  0 16:01 pts/0    00:00:00 grep --color=auto samba&lt;br&gt;<br>
30root     11161 11147  0 16:01 ?        00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground&lt;br&gt;<br>
31[root@adserver ~]#

10.動作確認
CentOS内部からSMB接続を行うテストを実施。

1[root@adserver ~]# /usr/local/samba/bin/smbclient --version&lt;br&gt;<br>
2Version 4.7.5&lt;br&gt;<br>
3[root@adserver ~]# /usr/local/samba/bin/smbclient -L localhost -U%&lt;/p&gt;<br>
4&lt;p&gt;        Sharename       Type      Comment&lt;br&gt;<br>
5        ---------       ----      -------&lt;br&gt;<br>
6        netlogon        Disk&lt;br&gt;<br>
7        sysvol          Disk&lt;br&gt;<br>
8        IPC$            IPC       IPC Service (Samba 4.7.5)&lt;br&gt;<br>
9Reconnecting with SMB1 for workgroup listing.&lt;/p&gt;<br>
10&lt;p&gt;        Server               Comment&lt;br&gt;<br>
11        ---------            -------&lt;/p&gt;<br>
12&lt;p&gt;        Workgroup            Master&lt;br&gt;<br>
13        ---------            -------&lt;br&gt;<br>
14[root@adserver ~]#

以前は「Domain=[ADOSAKANA.LOCAL] OS=[Unix] Server=[Samba x.y.z]」という出力もあったのですが、Samba 4.7.5では無くなったようです。

netlogon共有にAdministrator権限でアクセスできるか確認。

1[root@adserver ~]# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls'&lt;br&gt;<br>
2Enter Administrator's password:&lt;br&gt;<br>
3  .                                   D        0  Fri Mar  2 15:53:48 2018&lt;br&gt;<br>
4  ..                                  D        0  Fri Mar  2 15:58:16 2018&lt;/p&gt;<br>
5&lt;p&gt;                14034944 blocks of size 1024. 11789628 blocks available&lt;br&gt;<br>
6[root@adserver ~]#

11.AD DNSの動作テスト
AD DNSが想定通りに動作しているかテストします。

まず、どんなzoneが登録されているのか確認

1[root@adserver ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator&lt;br&gt;<br>
2Password for [ADOSAKANA\Administrator]:&lt;br&gt;<br>
3  2 zone(s) found&lt;/p&gt;<br>
4&lt;p&gt;  pszZoneName                 : adosakana.local&lt;br&gt;<br>
5  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE&lt;br&gt;<br>
6  ZoneType                    : DNS_ZONE_TYPE_PRIMARY&lt;br&gt;<br>
7  Version                     : 50&lt;br&gt;<br>
8  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED&lt;br&gt;<br>
9  pszDpFqdn                   : DomainDnsZones.adosakana.local&lt;/p&gt;<br>
10&lt;p&gt;  pszZoneName                 : _msdcs.adosakana.local&lt;br&gt;<br>
11  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE&lt;br&gt;<br>
12  ZoneType                    : DNS_ZONE_TYPE_PRIMARY&lt;br&gt;<br>
13  Version                     : 50&lt;br&gt;<br>
14  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED&lt;br&gt;<br>
15  pszDpFqdn                   : ForestDnsZones.adosakana.local&lt;br&gt;<br>
16[root@adserver ~]#

Active Directoryで使用するDNSのSRVレコードが登録されているかをhostコマンドを使って確認。

1[root@adserver ~]# host -t SRV _ldap._tcp.adosakana.local 127.0.0.1&lt;br&gt;<br>
2Using domain server:&lt;br&gt;<br>
3Name: 127.0.0.1&lt;br&gt;<br>
4Address: 127.0.0.1#53&lt;br&gt;<br>
5Aliases:&lt;/p&gt;<br>
6&lt;p&gt;_ldap._tcp.adosakana.local has SRV record 0 100 389 adserver.adosakana.local.&lt;br&gt;<br>
7[root@adserver ~]# host -t SRV _kerberos._udp.adosakana.local 127.0.0.1&lt;br&gt;<br>
8Using domain server:&lt;br&gt;<br>
9Name: 127.0.0.1&lt;br&gt;<br>
10Address: 127.0.0.1#53&lt;br&gt;<br>
11Aliases:&lt;/p&gt;<br>
12&lt;p&gt;_kerberos._udp.adosakana.local has SRV record 0 100 88 adserver.adosakana.local.&lt;br&gt;<br>
13[root@adserver ~]#

ADサーバのホスト名が登録されているか確認

1[root@adserver ~]# host -t A adserver.adosakana.local 127.0.0.1&lt;br&gt;<br>
2Using domain server:&lt;br&gt;<br>
3Name: 127.0.0.1&lt;br&gt;<br>
4Address: 127.0.0.1#53&lt;br&gt;<br>
5Aliases:&lt;/p&gt;<br>
6&lt;p&gt;adserver.adosakana.local has address 172.17.44.40&lt;br&gt;<br>
7[root@adserver ~]#

12. DNSサーバの変更
ADサーバの/etc/resolv.confを、ADサーバ自身を使う様に書き換え

13. /etc/krb5.conf の変更
/usr/local/samba/private/krb5.conf に元となるものがあるので、それを使用する。

1[root@adserver ~]# cat /etc/krb5.conf&lt;br&gt;<br>
2[logging]&lt;br&gt;<br>
3 default = FILE:/var/log/krb5libs.log&lt;br&gt;<br>
4 kdc = FILE:/var/log/krb5kdc.log&lt;br&gt;<br>
5 admin_server = FILE:/var/log/kadmind.log&lt;/p&gt;<br>
6&lt;p&gt;[libdefaults]&lt;br&gt;<br>
7 default_realm = EXAMPLE.COM&lt;br&gt;<br>
8 dns_lookup_realm = false&lt;br&gt;<br>
9 dns_lookup_kdc = false&lt;br&gt;<br>
10 ticket_lifetime = 24h&lt;br&gt;<br>
11 renew_lifetime = 7d&lt;br&gt;<br>
12 forwardable = true&lt;/p&gt;<br>
13&lt;p&gt;[realms]&lt;br&gt;<br>
14 EXAMPLE.COM = {&lt;br&gt;<br>
15  kdc = kerberos.example.com&lt;br&gt;<br>
16  admin_server = kerberos.example.com&lt;br&gt;<br>
17 }&lt;/p&gt;<br>
18&lt;p&gt;[domain_realm]&lt;br&gt;<br>
19 .example.com = EXAMPLE.COM&lt;br&gt;<br>
20 example.com = EXAMPLE.COM&lt;br&gt;<br>
21[root@adserver ~]# cat /usr/local/samba/private/krb5.conf&lt;br&gt;<br>
22[libdefaults]&lt;br&gt;<br>
23        default_realm = ADOSAKANA.LOCAL&lt;br&gt;<br>
24        dns_lookup_realm = false&lt;br&gt;<br>
25        dns_lookup_kdc = true&lt;br&gt;<br>
26[root@adserver ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf&lt;br&gt;<br>
27cp: `/etc/krb5.conf' を上書きしてもよろしいですか(yes/no)? y&lt;br&gt;<br>
28[root@adserver ~]# cat /etc/krb5.conf&lt;br&gt;<br>
29[libdefaults]&lt;br&gt;<br>
30        default_realm = ADOSAKANA.LOCAL&lt;br&gt;<br>
31        dns_lookup_realm = false&lt;br&gt;<br>
32        dns_lookup_kdc = true&lt;br&gt;<br>
33[root@adserver ~]#

14. Kerberosの動作確認

kinitコマンドを実行して確認します。

1[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL&lt;br&gt;<br>
2Password for administrator@ADOSAKANA.LOCAL:&lt;br&gt;<br>
3Warning: Your password will expire in 41 days on 2018年04月13日 15時58分15秒&lt;br&gt;<br>
4[root@adserver ~]#

正常に設定されていれば、上記の様にAdministratorユーザのパスワード有効期限が表示されます。

ドメイン名指定の大文字/小文字を間違えると下記の様なエラーとなります。

1[root@adserver ~]# kinit administrator@adosakana.local&lt;br&gt;<br>
2Password for administrator@adosakana.local:&lt;br&gt;<br>
3kinit: KDC reply did not match expectations while getting initial credentials&lt;br&gt;<br>
4[root@adserver ~]#

また、DNSサーバ指定が誤っている場合は下記の様なエラーです。

1[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL&lt;br&gt;<br>
2kinit: Cannot resolve servers for KDC in realm "ADOSAKANA.LOCAL" while getting initial credentials&lt;br&gt;<br>
3[root@adserver ~]#

「klist」コマンドを実行することでも確認出来ます。

1[root@adserver ~]# klist&lt;br&gt;<br>
2Ticket cache: FILE:/tmp/krb5cc_0&lt;br&gt;<br>
3Default principal: administrator@ADOSAKANA.LOCAL&lt;/p&gt;<br>
4&lt;p&gt;Valid starting       Expires              Service principal&lt;br&gt;<br>
52018-03-02T16:06:21  2018-03-03T02:06:21  krbtgt/ADOSAKANA.LOCAL@ADOSAKANA.LOCAL&lt;br&gt;<br>
6        renew until 2018-03-03T16:06:18&lt;br&gt;<br>
7[root@adserver ~]#

15. フォレストとドメインの機能レベル確認
作成したActive Directoryのドメインの機能レベルとフォレストの機能レベルを確認します。

1[root@adserver ~]# /usr/local/samba/bin/samba-tool domain level show&lt;br&gt;<br>
2Domain and forest function level for domain 'DC=adosakana,DC=local'&lt;/p&gt;<br>
3&lt;p&gt;Forest function level: (Windows) 2008 R2&lt;br&gt;<br>
4Domain function level: (Windows) 2008 R2&lt;br&gt;<br>
5Lowest function level of a DC: (Windows) 2008 R2&lt;br&gt;<br>
6[root@adserver ~]#

Samba 4.7.5では、Windows Sevrer 2008R2と設定されているようです。

16. firewalldの設定

CentOS7ではfirewalldによりポートが制限されています。
現状を「firewall-cmd –list-all」で確認。

1# firewall-cmd --list-all&lt;br&gt;<br>
2public (active)&lt;br&gt;<br>
3  target: default&lt;br&gt;<br>
4  icmp-block-inversion: no&lt;br&gt;<br>
5  interfaces: ens160&lt;br&gt;<br>
6  sources:&lt;br&gt;<br>
7  services: ssh dhcpv6-client&lt;br&gt;<br>
8  ports:&lt;br&gt;<br>
9  protocols:&lt;br&gt;<br>
10  masquerade: no&lt;br&gt;<br>
11  forward-ports:&lt;br&gt;<br>
12  source-ports:&lt;br&gt;<br>
13  icmp-blocks:&lt;br&gt;<br>
14  rich rules:&lt;br&gt;<br>
15#

開けるべきポートのテンプレートがあらかじめ用意されているので「firewall-cmd –get-services」を実行して確認します。

1# firewall-cmd --get-services&lt;br&gt;<br>
2RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server&lt;br&gt;<br>
3#

SambaをADとして使う場合のポートを「Samba AD DC Port Usage」で確認します。

CentOS7のfirewalldで定義されているものと待避させてみると・・・

サービス ポート プロトコル firewalld定義
DNS 53 tcp/udp dns
Kerberos 88 tcp/udp kerberos,freeipa-ldap,freeipa-ldaps
End Point Mapper (DCE/RPC Locator Service) 135 tcp freeipa-trust
NetBIOS Name Service 137 udp samba,samba-client
NetBIOS Datagram 138 udp samba,samba-client,freeipa-trust
NetBIOS Session 139 tcp samba,freeipa-trust
LDAP 389 tcp/udp freeipa-trust(ldap,freeipa-ldapはtcpのみ)
SMB over TCP 445 tcp samba,freeipa-trust(freeipa-trustはudpも含む)
Kerberos kpasswd 464 tcp/udp kpasswd,freeipa-ldap,freeipa-ldaps
LDAPS 636 tcp ldaps,freeipa-ldaps
Dynamic RPC Ports(4.7以前) 1024-1300 tcp freeipa-trust
Dynamic RPC Ports(samba 4.7以降) 49152-65535 tcp ?
Global Catalog 3268 tcp freeipa-trust
Global Catalog SSL 3269 tcp なし

・firewalldの定義「samba」「dns」「freeipa-ldaps」「freeipa-trust」を使用
・「Dynamic RPC Ports(samba 4.7以降):49152-65535」を追加するか、smb.confで「rpc server port」を定義するか。
・「Global Catalog SSL:3269」を追加

1# firewall-cmd --permanent --zone=public --add-service=samba&lt;br&gt;<br>
2success&lt;br&gt;<br>
3# firewall-cmd --permanent --zone=public --add-service=dns&lt;br&gt;<br>
4success&lt;br&gt;<br>
5# firewall-cmd --permanent --zone=public --add-service=freeipa-ldaps&lt;br&gt;<br>
6success&lt;br&gt;<br>
7# firewall-cmd --permanent --zone=public --add-service=freeipa-trust&lt;br&gt;<br>
8success&lt;br&gt;<br>
9# firewall-cmd --reload&lt;br&gt;<br>
10success&lt;br&gt;<br>
11# firewall-cmd --list-all&lt;br&gt;<br>
12public (active)&lt;br&gt;<br>
13  target: default&lt;br&gt;<br>
14  icmp-block-inversion: no&lt;br&gt;<br>
15  interfaces: ens160&lt;br&gt;<br>
16  sources:&lt;br&gt;<br>
17  services: ssh dhcpv6-client samba dns freeipa-ldaps freeipa-trust&lt;br&gt;<br>
18  ports:&lt;br&gt;<br>
19  protocols:&lt;br&gt;<br>
20  masquerade: no&lt;br&gt;<br>
21  forward-ports:&lt;br&gt;<br>
22  source-ports:&lt;br&gt;<br>
23  icmp-blocks:&lt;br&gt;<br>
24  rich rules:&lt;/p&gt;<br>
25&lt;p&gt;#

1# firewall-cmd --permanent --zone=public --add-port=49152-65535/tcp&lt;br&gt;<br>
2success&lt;br&gt;<br>
3# firewall-cmd --permanent --zone=public --add-port=3269/tcp&lt;br&gt;<br>
4success&lt;br&gt;<br>
5# firewall-cmd --reload&lt;br&gt;<br>
6success&lt;br&gt;<br>
7# firewall-cmd --list-all&lt;br&gt;<br>
8public (active)&lt;br&gt;<br>
9  target: default&lt;br&gt;<br>
10  icmp-block-inversion: no&lt;br&gt;<br>
11  interfaces: ens160&lt;br&gt;<br>
12  sources:&lt;br&gt;<br>
13  services: ssh dhcpv6-client samba dns freeipa-ldaps freeipa-trust&lt;br&gt;<br>
14  ports: 49152-65535/tcp 3269/tcp&lt;br&gt;<br>
15  protocols:&lt;br&gt;<br>
16  masquerade: no&lt;br&gt;<br>
17  forward-ports:&lt;br&gt;<br>
18  source-ports:&lt;br&gt;<br>
19  icmp-blocks:&lt;br&gt;<br>
20  rich rules:&lt;br&gt;<br>
21#

17. systemdへの登録
systemdへの登録については「Managing the Samba AD DC Service Using Systemd」を参照のこと
CentOS6の場合は「Managing the Samba AD DC Service Using an Init Script

以上で設定は終了です。

“Samba 4.7.xでActive Directoryを1から立てる” への4件の返信

  1. いつも参考にさせていただいています。

    samba4.7でフェールオーバクラスタとして利用できるということですが、
    これはどのように構成する事になるのでしょうか。

    Windowsserver2012R2に対してドメイン参加させてバックアップとして使えないか検討していたですが、
    samba側の昨日バージョンが古いため拒否されました。

    そこでこちらに情報のあったフェールオーバークラスタとして構成する事を考えましたが
    ドメインに参加させられないsambaをどのようにクラスタノードとするかが分かりません。

    出来たらご教授いただけないでしょうか。

    1. Windows Serverのフェールオーバークラスタは、Active Directoryを必要とするが、そのActive Directoryをsambaで構成することが出来る。という意味です。
      sambaをフェールオーバークラスタとして使える、というわけではありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

StatCounter - Free Web Tracker and Counter