CentOS7 Sernet-SAMBAでADDCの構築(SAMBA_INTERNAL)

シェアする

過去にも、Active Directoryのドメインコントローラーを構築しましたが、メインのサーバーが仮想環境に移行できたこともあり、ADDCサーバーを構築したいと思います。

なお、この記事は過去のサイトで作成したもので、BINDへのフォワード先に複数指定が出来ませんでしたので、現在は利用していません。

外部リポジトリーの設定

CentOS7の標準パッケージは、ドメインコントローラーの機能が利用できないので、外部リポジトリーにあるものを利用します。
なお、パッケージを入手するにはユーザー登録をする必要があります。

リポジトリー提供元のサイトURL
https://portal.enterprisesamba.com/

- ユーザー登録 -
1. サイトの左ペインにある「Sign Up」のリンクを選択する。
2. サイトの右ペインに表示されるユーザー登録を行うための必要事項を記入していく。
3. サイトの右ペインの下のほうにある「Sign Up」ボタンを押下する。
4. ユーザー登録時に記入したメールアドレス宛に最終確認のメールが届くので、メール本文のリンクボタンを選択する。
5. 最終確認後にログインを行なうと、パッケージをダウンロードできる一覧が表示されます。
6. サイトの右ペインに、ユーザー名とアクセスキーが表示されているので、控えておきます。

# cd /tmp <LF>
# wget https://<UserName>:<AccessKey>@download.sernet.de/ \
> packages/samba/4.1/centos/7/sernet-samba-4.1.repo <LF> <= repoファイルを取得する
# cp -p /tmp/sernet-samba-4.1.repo /etc/yum.repos.d/. <LF>
# vim /etc/yum.repos.d/sernet-samba-4.1.repo <LF>
    :
baseurl=https://<UserName>:<AccessKey>@download.sernet.de/packages/samba/4.1/...(省略)
    :
gpgkey=https://<UserName>:<AccessKey>@download.sernet.de/packages/samba/4.1/...(省略)
    :
# cp -p /etc/yum.conf /etc/yum.conf.original <LF>
# vim /etc/yum.conf <LF> <= カーネルと公式リポジトリーのsamba及びbindのユーティリティーは除外する
    :
exclude=kernel* samba* bind-utils
    :

インストールと設定及び確認

今回は、「SAMBA_INTERNAL」の構成で設定してみました。

# yum info sernet-samba <LF>
    :
Available Packages
Name        : sernet-samba
Arch        : x86_64
Version     : 4.1.19
Release     : 11.el7
Size        : 1.5 M
Repo        : sernet-samba-4.1
Summary     : SerNet Samba SMB/CIFS file, print and authentication server
    :
# yum info sernet-samba-ad <LF>
    :
Available Packages
Name        : sernet-samba-ad
Arch        : x86_64
Version     : 4.1.19
Release     : 11.el7
Size        : 3.9 M
Repo        : sernet-samba-4.1
Summary     : SerNet Samba AD domain controller
    :
# yum -y install sernet-samba sernet-samba-ad <LF>
    :
Installed:
  sernet-samba.x86_64 0:4.1.19-11.el7
  sernet-samba-ad.x86_64 0:4.1.19-11.el7
 
Dependency Installed:
  at.x86_64 0:3.1.13-17.el7_0.1
  bc.x86_64 0:1.06.95-13.el7
  bind-libs.x86_64 32:9.9.4-18.el7_1.1
  bind-utils.x86_64 32:9.9.4-18.el7_1.1
  cups-client.x86_64 1:1.6.3-17.el7_1.1
  cups-libs.x86_64 1:1.6.3-17.el7_1.1
  ed.x86_64 0:1.9-4.el7
  m4.x86_64 0:1.4.16-9.el7
  mailx.x86_64 0:12.5-12.el7_0
  patch.x86_64 0:2.7.1-8.el7
  psmisc.x86_64 0:22.20-8.el7
  redhat-lsb-core.x86_64 0:4.1-27.el7.centos.1
  redhat-lsb-submod-security.x86_64 0:4.1-27.el7.centos.1
  sernet-samba-client.x86_64 0:4.1.19-11.el7
  sernet-samba-common.x86_64 0:4.1.19-11.el7
  sernet-samba-libs.x86_64 0:4.1.19-11.el7
  sernet-samba-libsmbclient0.x86_64 0:4.1.19-11.el7
  sernet-samba-winbind.x86_64 0:4.1.19-11.el7
  spax.x86_64 0:1.5.2-11.el7
  time.x86_64 0:1.7-45.el7
 
Complete!
# samba-tool domain provision --use-rfc2307 --interactive <LF> <= 準備(provision)
Realm [SERVECOUNTERSTRIKE.COM]: ORANGETAKAM.LOCAL
  Domain [ORANGETAKAM]: ORANGETAKAM
  Server Role (dc, member, standalone) [dc]: dc
  DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
SAMBA_INTERNAL
  DNS forwarder IP address (write 'none' to disable forwarding) [192.168.1.61]:
192.168.1.61
Administrator password:xxxx
Retype password:xxxx
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=orangetakam,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=orangetakam,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 /var/lib/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              takadc01
NetBIOS Domain:        ORANGETAKAM
DNS Domain:            orangetakam.local
DOMAIN SID:            S-1-5-21-2328272888-3206446962-2685311914
# rm -rf /etc/samba/smb.conf /var/lib/samba/private/* <LF> <= provisionをやり直しの場合削除
cat /etc/samba/smb.conf <LF> <= 出来上がったファイルを見てみる
# Global parameters
[global]
        workgroup = ORANGETAKAM
        realm = ORANGETAKAM.LOCAL
        netbios name = TAKADC01
        server role = active directory domain controller
        dns forwarder = 192.168.1.101
        idmap_ldb:use rfc2307 = yes
[netlogon]
        path = /var/lib/samba/sysvol/orangetakam.local/scripts
        read only = No
[sysvol]
        path = /var/lib/samba/sysvol
        read only = No
# samba-tool domain level -h <LF> <= 利用出来るドメイン機能レベルの確認
    :
Options:
    :
  --forest-level=FOREST_LEVEL
                        The forest function level (2003 | 2008 | 2008_R2)
  --domain-level=DOMAIN_LEVEL
                        The domain function level (2003 | 2008 | 2008_R2)
# samba-tool domain level show <LF>
Domain and forest function level for domain 'DC=orangetakam,DC=local'
Forest function level: (Windows) 2003
Domain function level: (Windows) 2003
Lowest function level of a DC: (Windows) 2008 R2
# samba-tool domain level raise --domain-level 2008_R2 --forest-level 2008_R2 <LF>
Domain function level changed!
Forest function level changed!
All changes applied successfully!
# samba-tool domain level show <LF>
Domain and forest function level for domain 'DC=orangetakam,DC=local'
Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
# vim /etc/default/sernet-samba <LF>
    :
SAMBA_START_MODE="ad"
    :
# nmcli device show eth0 | grep DNS <LF> <= ゲストOSに予め設定されたDNS参照先を変更するため参照
IP4.DNS[1]:                             192.168.1.61
IP4.DNS[2]:                             192.168.1.62
# nmcli connection modify eth0 ipv4.dns "127.0.0.1" <LF> <= ローカルに変更
# shutdown -r now <LF> <= 変更が有効かどうかを確認のため
# nmcli device show eth0 | grep DNS <LF>
IP4.DNS[1]:                             127.0.0.1
# systemctl status sernet-samba-ad <LF>
sernet-samba-ad.service - LSB: initscript for the SAMBA AD services
   Loaded: loaded (/etc/rc.d/init.d/sernet-samba-ad)
   Active: active (exited) since Wed 2015-07-01 20:57:27 JST; 5min ago
    :
# chkconfig sernet-samba-nmbd off <LF> <= いらないサービスは停止
# chkconfig sernet-samba-smbd off <LF> <= いらないサービスは停止
# chkconfig sernet-samba-winbindd off <LF> <= いらないサービスは停止
$ samba-tool dns zonelist localhost -U Administrator <LF> <= DNSのゾーン確認
Password for [ORANGETAKAM\Administrator]:xxxx
  2 zone(s) found 

  pszZoneName                 : orangetakam.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.orangetakam.local

  pszZoneName                 : _msdcs.orangetakam.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.orangetakam.local
host -t SRV _ldap._tcp.orangetakam.local. <LF> <= LDAPのSRVレコードの確認
_ldap._tcp.orangetakam.local has SRV record 0 100 389 takadc01.orangetakam.local.
host -t SRV  _kerberos._udp.orangetakam.local. <LF> <= KerberosのSRVレコードの確認
_kerberos._udp.orangetakam.local has SRV record 0 100 88 takadc01.orangetakam.local.
host -t A takadc01.orangetakam.local. <LF> <= ドメインコントローラー(takadc01)のAレコードの確認
takadc01.orangetakam.local has address 192.168.1.63
$ smbclient -L localhost -U administrator <LF> <= 利用可能な共有リストの確認
Enter administrator's password:xxxx
Domain=[ORANGETAKAM] OS=[Unix] Server=[Samba 4.1.19-SerNet-RedHat-11.el7]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk
        sysvol          Disk
        IPC$            IPC       IPC Service (Samba 4.1.19-SerNet-RedHat-11.el7)
Domain=[ORANGETAKAM] OS=[Unix] Server=[Samba 4.1.19-SerNet-RedHat-11.el7]
        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
smbclient //takadc01.orangetakam.local/netlogon -U administrator <LF> <= 「netlogon」接続確認
Enter administrator's password:xxxx
Domain=[ORANGETAKAM] OS=[Unix] Server=[Samba 4.1.19-SerNet-RedHat-11.el7]
smb: \> ls <LF>
  .                                   D        0  Wed Jul  1 11:57:07 2015
  ..                                  D        0  Wed Jul  1 11:57:18 2015

                34648 blocks of size 262144. 29255 blocks available
smb: \> exit <LF>
# yum info krb5-workstation <LF> <= Kerberosのコマンドを使うためのパッケージ
    :
Available Packages
Name        : krb5-workstation
Arch        : x86_64
Version     : 1.12.2
Release     : 14.el7
Size        : 755 k
Repo        : base/7/x86_64
Summary     : Kerberos 5 programs for use on workstations
URL         : http://web.mit.edu/kerberos/www/
License     : MIT
    :
# yum -y install krb5-workstation <LF>
    :
Installed:
  krb5-workstation.x86_64 0:1.12.2-14.el7
 
Complete!
# mv /etc/krb5.conf /etc/krb5.conf.original <LF>
# ln -sv /var/lib/samba/private/krb5.conf /etc/krb5.conf <LF>
/etc/krb5.conf’ -> ‘/var/lib/samba/private/krb5.conf
# vim /etc/krb5.conf <LF> <= 必要な設定を追記
[logging]
  default = FILE:/var/log/krb5/krb5libs.log
  kdc = FILE:/var/log/krb5/krb5kdc.log
  admin_server = FILE:/var/log/kadmind.log
[libdefaults]
  default_realm = ORANGETAKAM.LOCAL
  dns_lookup_realm = false
  dns_lookup_kdc = true
  ticket_lifetime = 24h
  renew_lifetime = 7d
[realms]
  ORANGETAKAM.LOCAL = {
  kdc = takadc01.orangetakam.local
  admin_server = takadc01.orangetakam.local
  }
[domain_relm]
 .orangetakam.local = ORANGETAKAM.LOCAL
 orangetakam.local = ORANGETAKAM.LOCAL
# klist <LF> <= キャッシュの確認
klist: Credentials cache file '/tmp/krb5cc_0' not found <= 当然ない
# kinit administrator@ORANGETAKAM.LOCAL <LF> <= Kerberosチケットの取得とキャッシュ保管
Password for administrator@ORANGETAKAM.LOCAL:xxxx
Warning: Your password will expire in 41 days on Wed 12 Aug 2015 04:15:22 PM JST
# klist <LF> <= キャッシュの確認
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@ORANGETAKAM.LOCAL
Valid starting       Expires              Service principal
07/02/2015 11:01:18  07/02/2015 21:01:18  krbtgt/ORANGETAKAM.LOCAL@ORANGETAKAM.LOCAL
          renew until 07/09/2015 11:01:12
# kdestroy <LF> <= Kerberosチケットの破棄
# klist <LF>
klist: Credentials cache file '/tmp/krb5cc_0' not found
# kinit administrator@ORANGETAKAM.LOCAL <LF> <= DNSの動的更新を確認するためチケット取得
Password for administrator@ORANGETAKAM.LOCAL:xxxx
Warning: Your password will expire in 40 days on Wed 12 Aug 2015 04:15:22 PM JST
# nsupdate -g <LF> <= 「-g」オプションはKerberos証明書使用
> update add takats01.orangetakam.local 100 in a 192.168.1.200 <LF> <= 追加
> send <LF>
; TSIG error with server: tsig verify failure <= 無視(バグ?)
> quit <LF>
# nslookup takats01.orangetakam.local <LF> <= 動的更新されているかを確認
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   takats01.orangetakam.local <= 動的更新されている(存在する)
Address: 192.168.1.200

# nsupdate -g <LF>
> update delete takats01.orangetakam.local 100 in a 192.168.1.200 <LF> <= 削除
> send <LF>
; TSIG error with server: tsig verify failure
> quit <LF>
# nslookup takats01.orangetakam.local <LF>
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
*** Can't find takats01.orangetakam.local: No answer <= 動的更新されている(存在しない)

ここまでで、Sernet-SAMBAのパッケージを使ってのADDCサーバを作ることができました。