このコンテンツの更新版として「Samba 4.7.xでActive Directoryを1から立てる」(2018/03/02)を公開しています。
LinuxでActive Directoryサーバを立てることにした。
アプライアンスとして作られているものがあるのは知ってるけど、あえて、それは使わないことにし、CentOS6で環境を作ることにした。
メリットについて上げてみる。
・samba 4.xでは、DNSサーバ/LDAPサーバ機能を統合してしまっているので
sambaの設定をするだけでおしまい
・Active Directoryユーザの作成などは、ADに参加しているWindowsマシンに管理者ユーザでログオンし
その端末にインストールしたActive Directory管理ツールから行える。
えぇ、bindの設定とかopenldapの設定とか、気にしなくていいんです。
(ただし、小規模の場合。大規模になると、パフォーマンスの問題でbindも使った方がいいらしい。openldapは機能が足らないせいでお役御免です)
(追記: WindowsServer2012のクラスタリングのためには使えませんでした)
では、「Samba AD DC HOWTO」を見ながらセットアップ。
1. 関連ソフトウェアパッケージのインストール
Sambaをセットアップするにあたり必要な周辺ソフトウェア群の準備を行う。
「Samba 4/OS Requirements」を参考にパッケージをインストールしていく。
CentOS6.5の最小インストール状態なので、いろいろ追加していくことになる。
設定中、sshセッションが切れたりすることがあるかもしれないので「screen」を追加。
Requirementsに記載されているパッケージを追加。
2 | readline-devel python-devel gdb pkgconfig krb5-workstation \ |
3 | zlib-devel setroubleshoot-server libaio-devel \ |
4 | setroubleshoot-plugins policycoreutils-python \ |
5 | libsemanage-python setools-libs-python setools-libs \ |
6 | popt-devel libpcap-devel sqlite-devel libidn-devel \ |
7 | libxml2-devel libacl-devel libsepol-devel libattr-devel \ |
8 | keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils |
ドキュメントの製作で使うらしい以下のパッケージも追加
2. ファイルシステムのマウントオプション調整
Sambaで利用したいファイルシステムのマウントオプションを調整する。
「Samba 4/OS Requirements」の「File System Support」に記載されているようにext3/ext4の場合、「user_xattr,acl,barrier=1」オプションをつけてマウントしろ、とのこと。
CentOS6の場合、標準状態では、以下のように/etc/fstabで指定されていた。
1 | UUID=080add24-43d7-4502-aa31-2e7a4b9116d5 /home ext4 defaults 1 2 |
この場合、/proc/mountsで確認できるマウント状況は、以下の様になっている。
1 | /dev/sdb1 /home ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0 |
「user_xattr,acl」が足らないようなので/etc/fstabを以下のように書き換えた。
1 | UUID=080add24-43d7-4502-aa31-2e7a4b9116d5 /home ext4 user_xattr,acl,barrier=1 1 2 |
が、/proc/mounts は同じ状態。
1 | /dev/sdb1 /home ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0 |
mount -vではきちんと反映されているように見えるという点が非常に謎。
1 | /dev/sdb1 on /home type ext4 (rw,user_xattr,acl,barrier=1) |
以下の様にテストを実行し、このような出力結果が出れば問題ない、とのことなので、上記のマウントの件は問題なし、とした。
3. ソース取得
wgetでsamba 4.1.5のソースを取得。
4. configure
で構成情報取得。
Requirementにある以外に必要となったもの。
以下はあったほうがいいのかなぁ?という感じのもの。
ちなみに「openldap-devel」をインストールしないと、以下のメッセージが出て、Active Directory機能が使えないので注意。
3 | Active Directory support not available: LDAP support ist not available. |
4 | Building without Active Directory support. |
5. make & make install
6.インストール完了確認
sambaのバージョン確認
7. Active Directoryのセットアップ
ドメイン「adosakana.local」を作成します。
また、sambaの機能を使ってAD DNSを構築するので「SAMBA_INTERNAL」を選択します。
4 | Server Role ( dc , member, standalone) [ dc ]: |
5 | DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: |
6 | DNS forwarder IP address (write 'none' to disable forwarding) [172.30.50.100]: |
9 | Looking up IPv4 addresses |
10 | Looking up IPv6 addresses |
11 | No IPv6 address will be assigned |
14 | Setting up the registry |
15 | Setting up the privileges database |
18 | Setting up sam.ldb partitions and settings |
19 | Setting up sam.ldb rootDSE |
20 | Pre-loading the Samba 4 and AD schema |
21 | Adding DomainDN: DC=adosakana,DC= local |
22 | Adding configuration container |
23 | Setting up sam.ldb schema |
24 | Setting up sam.ldb configuration data |
25 | Setting up display specifiers |
26 | Modifying display specifiers |
28 | Modifying users container |
29 | Adding computers container |
30 | Modifying computers container |
31 | Setting up sam.ldb data |
32 | Setting up well known security principals |
33 | Setting up sam.ldb users and groups |
36 | Creating CN=MicrosoftDNS,CN=System,DC=adosakana,DC= local |
37 | Creating DomainDnsZones and ForestDnsZones partitions |
38 | Populating DomainDnsZones and ForestDnsZones partitions |
39 | Setting up sam.ldb rootDSE marking as synchronized |
41 | A Kerberos configuration suitable for Samba 4 has been generated at /usr/ local /samba/private/krb5.conf |
42 | Setting up fake yp server settings |
43 | Once the above files are installed, your Samba4 server will be ready to use |
44 | Server Role: active directory domain controller |
46 | NetBIOS Domain: ADOSAKANA |
47 | DNS Domain: adosakana. local |
48 | DOMAIN SID: S-1-5-21-3559328066-3556283577-2939567822 |
8. sambaを起動
3 | root 5516 1 4 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
4 | root 5517 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
5 | root 5518 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
6 | root 5519 5517 4 11:08 ? 00:00:00 /usr/ local /samba/sbin/smbd -D --option=server role check:inhibit= yes --foreground |
7 | root 5520 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
8 | root 5521 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
9 | root 5522 5516 6 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
10 | root 5523 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
11 | root 5524 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
12 | root 5525 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
13 | root 5526 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
14 | root 5527 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
15 | root 5528 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
16 | root 5529 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
17 | root 5530 5516 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/samba |
18 | root 5534 5519 0 11:08 ? 00:00:00 /usr/ local /samba/sbin/smbd -D --option=server role check:inhibit= yes --foreground |
19 | root 5537 1081 0 11:08 pts/1 00:00:00 grep samba |
9. 動作確認
CentOS内部からSMB接続を行うテストを実施。
4 | Domain=[ADOSAKANA] OS=[Unix] Server=[Samba 4.1.5] |
10 | IPC$ IPC IPC Service (Samba 4.1.5) |
11 | Domain=[ADOSAKANA] OS=[Unix] Server=[Samba 4.1.5] |
もう1つ。
netlogon共有にAdministrator権限でアクセスできるか確認。
2 | Enter Administrator's password: |
3 | Domain=[ADOSAKANA] OS=[Unix] Server=[Samba 4.1.5] |
4 | . D 0 Tue Feb 25 11:06:38 2014 |
5 | .. D 0 Tue Feb 25 11:06:48 2014 |
7 | 35275 blocks of size 524288. 31250 blocks available |
10.AD DNSの動作テスト
AD DNSが想定通りに動作しているかテストします。
まず、どんなzoneが登録されているのか確認
2 | Password for [ADOSAKANA\Administrator]: |
5 | pszZoneName : adosakana. local |
6 | Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE |
7 | ZoneType : DNS_ZONE_TYPE_PRIMARY |
9 | dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED |
10 | pszDpFqdn : DomainDnsZones.adosakana. local |
12 | pszZoneName : _msdcs.adosakana. local |
13 | Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE |
14 | ZoneType : DNS_ZONE_TYPE_PRIMARY |
16 | dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED |
17 | pszDpFqdn : ForestDnsZones.adosakana. local |
Active Directoryで使用するDNSのSRVレコードが登録されているか確認。
7 | _ldap._tcp.adosakana. local has SRV record 0 100 389 adcent6.adosakana. local . |
14 | _kerberos._udp.adosakana. local has SRV record 0 100 88 adcent6.adosakana. local . |
ADサーバのホスト名が登録されているか確認
7 | adcent6.adosakana. local has address 172.17.44.216 |
11. DNSサーバの変更
ADサーバの/etc/resolv.confを、ADサーバ自身を使う様に書き換え
12. /etc/krb5.conf の変更
/usr/local/samba/private/krb5.conf にあるので、それを使用する。
3 | default_realm = ADOSAKANA.LOCAL |
4 | dns_lookup_realm = false |
7 | cp : `/etc/krb5.conf' を上書きしてもよろしいですか( yes /no)? y |
13. Kerberosの動作確認
2 | Password for administrator@ADOSAKANA.LOCAL: |
3 | Warning: Your password will expire in 41 days on Tue Apr 8 11:06:46 2014 |
正常に設定されていれば、Administratorユーザのパスワード有効期限が表示されます。
例えば、DNSサーバの指定が誤っていると、以下のエラーとなります。
2 | kinit: Cannot resolve servers for KDC in realm "ADOSAKANA.LOCAL" while getting initial credentials |
これは、kinitは、DNSサーバに登録されているkerberos関連のSRVレコードを読みにいくためです。
2 | kinit: KDC reply did not match expectations while getting initial credentials |
こっちのメッセージがでる場合は、ドメイン名を小文字で指定していることが原因です。
大文字で指定し直します。
なお、kinitではなく、「klist」コマンドで一覧表示も可能です。
2 | Ticket cache: FILE:/tmp/krb5cc_0 |
3 | Default principal: administrator@ADOSAKANA.LOCAL |
5 | Valid starting Expires Service principal |
6 | 02/25/14 11:42:49 02/25/14 21:42:49 krbtgt/ADOSAKANA.LOCAL@ADOSAKANA.LOCAL |
7 | renew until 03/04/14 11:42:46 |
以上で、Active Directoryサーバとしての設定は終了でした。
このあと、Windows Server 2012を、この作成したばかりのADOSAKANA.LOCALに参加させたところ、正常に参加できました。
2014/05/08追記
この手順で作成した場合、ドメイン/フォレストの機能レベルは「Windows Server 2003」になります。
samba 4.1.7においては、「Windows Server 2008 R2」まで上げることができます。
手順については、「samba 4.xでドメイン/フォレストの機能レベルを変更する」にて解説しています。
Windowsからアクセス権が変更出来ないことで悩んでいたのですが、
この記事のおかげでマウントオプションにuser_xattr,acl,barrier=1が必要な事が分かりました。
通りすがりですが、本当に助かりました。ありがとうございます。