CentOS7とSamba 4.10.2で作成した記事「Samba 4.10.xでActive Directoryを1から立てる」を公開しています。
2014年2月、samba 4.1.xが最新だった時代に「Samba 4.xでActive Directoryを1から立てる」という記事を書いてから2年。
現状の最新はsamba 4.4.5となっている。
現在もこの手順で問題無いかの確認をした。
結論としては、必須パッケージが列挙されているところが改善され、抜けていたところもちゃんと含まれるようになっていた、という以外は、まったく同じ状態で実行できた。
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」までとなっている。
さらに、Failoverクラスタを作成する際に必要な機能、とかが実装されていない。
→ 2018/02/28追記 「samba 4.7.4で作ったActive Directory環境でWindowsServer2016フェールオーバークラスターを動作させた」というわけで動作することを確認しました
それでは、実際の手順について・・・
元ネタは公式ページの「Setup a Samba Active Directory Domain Controller」となります。
0. CentOS6の最小インストールを実施
1. /etc/hostsの修正
自ホスト名を/etc/hostsに追加
追加の際は、ショートのホスト名と、ドメイン付きのFQDNの両方を列挙すること。
[root@adserver ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.17.44.40 adserver adserver.adosakana.local [root@adserver ~]#
2. 好みに応じて使うツールをインストール
セッションが途中で切れても良い様に「screen」と、ファイルダウンロードするためにwget(curlでもいいのですが)をインストールします。
[root@adserver ~]# yum install wget screen <略> [root@adserver ~]#
3. 必要なパッケージをインストール
Samba公式の「Operating system requirements/Dependencies – Libraries and programs」に記載されているパッケージをインストール
[root@adserver ~]# yum install perl gcc attr 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 perl-ExtUtils-MakeMaker perl-Parse-Yapp \ perl-Test-Base popt-devel libxml2-devel libattr-devel \ keyutils-libs-devel cups-devel bind-utils libxslt \ docbook-style-xsl openldap-devel autoconf python-crypto pam-devel <略> [root@adserver ~]#
4. sambaのtar.gzをダウンロード
[root@adserver ~]# wget https://download.samba.org/pub/samba/stable/samba-4.4.5.tar.gz --2016-xx-xx xx:xx:xx-- https://download.samba.org/pub/samba/stable/samba-4.4.5.tar.gz download.samba.org をDNSに問いあわせています... 144.76.82.156 download.samba.org|144.76.82.156|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 20715838 (20M) [application/gzip] `samba-4.4.5.tar.gz' に保存中 100%[======================================>] 20,715,838 390K/s 時間 60s 2016-xx-xx xx:xx:xx (338 KB/s) - `samba-4.4.5.tar.gz' へ保存完了 [20715838/20715838] [root@adserver ~]#
5. configure実施
[root@adserver ~]# tar xfz samba-4.4.5.tar.gz [root@adserver ~]# cd samba-4.4.5 [root@adserver samba-4.4.5]# ./configure <略> [root@adserver samba-4.4.5]#
6. make & make install
[root@adserver samba-4.4.5]# make <略> [3956/3956] Generating man/nmblookup4.1 Note: Writing nmblookup4.1 Waf: Leaving directory `/root/samba-4.4.5/bin' 'build' finished successfully (23m25.531s) [root@adserver samba-4.4.5]# make install <略> * installing bin/default/pidl/Parse::Pidl::Wireshark::NDR.3pm as /usr/local/samba/share/man/man3/Parse::Pidl::Wireshark::NDR.3pm Waf: Leaving directory `/root/samba-4.4.5/bin' 'install' finished successfully (6m26.187s) [root@adserver samba-4.4.5]#
7. インストール完了確認
sambaのバージョン確認
[root@adserver ~]# /usr/local/samba/sbin/samba -V Version 4.4.5 [root@adserver ~]#
8. Active Directoryのセットアップ
ドメイン「adosakana.local」を作成します。
また、sambaの機能を使ってAD DNSを構築するので「SAMBA_INTERNAL」を選択します。
なお、「–use-rfc2307」はADにNIS連携機能を追加するオプションです。AD上にUnix用のUID/GID/shell情報なども格納できるようにします。Samba環境では有効にしておくべきものです。
[root@adserver ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive Realm [ADOSAKANA.LOCAL]: Domain [ADOSAKANA]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [172.30.50.100]: Administrator password: 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=adosakana,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=adosakana,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: adserver NetBIOS Domain: ADOSAKANA DNS Domain: adosakana.local DOMAIN SID: S-1-5-21-98280047-2622333268-1688910966 [root@adserver ~]#
9. sambaを起動
[root@adserver ~]# ps -ef|grep samba root 26275 6434 0 14:20 pts/0 00:00:00 grep samba [root@adserver ~]# /usr/local/samba/sbin/samba [root@adserver ~]# ps -ef|grep samba root 26277 1 66 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26278 26277 2 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26279 26277 2 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26280 26278 44 14:20 ? 00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground root 26281 26277 1 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26282 26277 0 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26283 26277 35 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26284 26277 0 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26285 26277 2 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26286 26277 2 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26287 26277 1 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26288 26277 0 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26289 26287 25 14:20 ? 00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground root 26290 26277 0 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26291 26277 4 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26292 26277 1 14:20 ? 00:00:00 /usr/local/samba/sbin/samba root 26294 26291 0 14:20 ? 00:00:00 python /usr/local/samba/sbin/samba_dnsupdate root 26295 26291 0 14:20 ? 00:00:00 python /usr/local/samba/sbin/samba_spnupdate root 26297 6434 0 14:20 pts/0 00:00:00 grep samba [root@adserver ~]#
10.動作確認
CentOS内部からSMB接続を行うテストを実施。
[root@adserver ~]# /usr/local/samba/bin/smbclient --version Version 4.4.5 [root@adserver ~]# /usr/local/samba/bin/smbclient -L localhost -U% Domain=[ADOSAKANA] OS=[Windows 6.1] Server=[Samba 4.4.5] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.4.5) Domain=[ADOSAKANA] OS=[Windows 6.1] Server=[Samba 4.4.5] Server Comment --------- ------- Workgroup Master --------- ------- [root@adserver ~]#
Samba 4.1.x時代は「OS=Unix」だったものが、Samba 4.4.xでは「OS=Windows 6.1」に変わっていました。
netlogon共有にAdministrator権限でアクセスできるか確認。
[root@adserver ~]# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls' Enter Administrator's password: Domain=[ADOSAKANA] OS=[Windows 6.1] Server=[Samba 4.4.5] . D 0 Tue Jul 19 14:19:16 2016 .. D 0 Tue Jul 19 14:19:26 2016 29086704 blocks of size 1024. 25482608 blocks available [root@adserver ~]#
11.AD DNSの動作テスト
AD DNSが想定通りに動作しているかテストします。
まず、どんなzoneが登録されているのか確認
[root@adserver ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator Password for [ADOSAKANA\Administrator]: 2 zone(s) found pszZoneName : adosakana.local Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED pszDpFqdn : DomainDnsZones.adosakana.local pszZoneName : _msdcs.adosakana.local Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED pszDpFqdn : ForestDnsZones.adosakana.local [root@adserver ~]#
Active Directoryで使用するDNSのSRVレコードが登録されているかをhostコマンドを使って確認。
[root@adserver ~]# host -t SRV _ldap._tcp.adosakana.local 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: _ldap._tcp.adosakana.local has SRV record 0 100 389 adserver.adosakana.local. [root@adserver ~]# host -t SRV _kerberos._udp.adosakana.local 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: _kerberos._udp.adosakana.local has SRV record 0 100 88 adserver.adosakana.local. [root@adserver ~]#
ADサーバのホスト名が登録されているか確認
[root@adserver ~]# host -t A adserver.adosakana.local 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: adserver.adosakana.local has address 172.17.44.40 [root@adserver ~]#
12. DNSサーバの変更
ADサーバの/etc/resolv.confを、ADサーバ自身を使う様に書き換え
13. /etc/krb5.conf の変更
/usr/local/samba/private/krb5.conf に元となるものがあるので、それを使用する。
[root@adserver ~]# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] EXAMPLE.COM = { kdc = kerberos.example.com admin_server = kerberos.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM [root@adserver ~]# cat /usr/local/samba/private/krb5.conf [libdefaults] default_realm = ADOSAKANA.LOCAL dns_lookup_realm = false dns_lookup_kdc = true [root@adserver ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf cp: `/etc/krb5.conf' を上書きしてもよろしいですか(yes/no)? y [root@adserver ~]# cat /etc/krb5.conf [libdefaults] default_realm = ADOSAKANA.LOCAL dns_lookup_realm = false dns_lookup_kdc = true [root@adserver ~]#
14. Kerberosの動作確認
kinitコマンドを実行して確認します。
[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL Password for administrator@ADOSAKANA.LOCAL: Warning: Your password will expire in 41 days on Tue Aug 30 14:19:24 2016 [root@adserver ~]#
正常に設定されていれば、上記の様にAdministratorユーザのパスワード有効期限が表示されます。
ドメイン名指定の大文字/小文字を間違えると下記の様なエラーとなります。
[root@adserver ~]# kinit administrator@adosakana.local Password for administrator@adosakana.local: kinit: KDC reply did not match expectations while getting initial credentials [root@adserver ~]#
また、DNSサーバ指定が誤っている場合は下記の様なエラーです。
[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL kinit: Cannot resolve servers for KDC in realm "ADOSAKANA.LOCAL" while getting initial credentials [root@adserver ~]#
「klist」コマンドを実行することでも確認出来ます。
[root@adserver ~]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@ADOSAKANA.LOCAL Valid starting Expires Service principal 07/19/16 14:28:32 07/20/16 00:28:32 krbtgt/ADOSAKANA.LOCAL@ADOSAKANA.LOCAL renew until 07/20/16 14:28:28 [root@adserver ~]#
15. フォレストとドメインの機能レベル確認
作成したActive Directoryのドメインの機能レベルとフォレストの機能レベルを確認します。
[root@adserver ~]# /usr/local/samba/bin/samba-tool domain level show Domain and forest function level for domain 'DC=adosakana,DC=local' Forest function level: (Windows) 2008 R2 Domain function level: (Windows) 2008 R2 Lowest function level of a DC: (Windows) 2008 R2 [root@adserver ~]#
Samba 4.4.5では、Windows Sevrer 2008R2と設定されているようです。
(Samba 4.1.x時代はWindows Server 2003でした)
以上で設定は終了です。
“Samba 4.4.xでActive Directoryを1から立てる” への1件の返信