今回はプライマリとセカンダリの2台を構成する。
プライマリとセカンダリの共通設定
ホスト名の設定。それぞれ test-dc1 test-dc2 とする。
# hostnamectl set-hostname test-dc1
NTPサーバーにする。
※構築手順はこちらの記事を参照
必要なコンポーネントのインストールらしい。
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をダウンロードする。この記事を書いたときは4.6.5だった。
$ wget http://www.samba.org/samba/ftp/samba-latest.tar.gz
解凍してインストールする。
$ tar zxf samba-latest.tar.gz
$ cd samba-*
# ./configure; make; make install
ファイアウォールの例外を登録する。
# firewall-cmd --permanent --add-port=42/tcp
# firewall-cmd --permanent --add-port=53/tcp
# firewall-cmd --permanent --add-port=53/udp
# firewall-cmd --permanent --add-service=kerberos
# firewall-cmd --permanent --add-service=ntp
# firewall-cmd --permanent --add-port=135/tcp
# firewall-cmd --permanent --add-port=137/udp
# firewall-cmd --permanent --add-port=138/udp
# firewall-cmd --permanent --add-port=139/tcp
# firewall-cmd --permanent --add-service=ldap
# firewall-cmd --permanent --add-port=389/tcp
# firewall-cmd --permanent --add-port=389/udp
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --permanent --add-port=464/tcp
# firewall-cmd --permanent --add-port=464/udp
# firewall-cmd --permanent --add-service=ldaps
# firewall-cmd --permanent --add-port=1024-5000/tcp
# firewall-cmd --permanent --add-port=49152-65535/tcp
# firewall-cmd --permanent --add-port=5722/tcp
# firewall-cmd --permanent --add-port=9389/tcp
# firewall-cmd --reload
SELinuxの例外を登録する。
# setsebool -P samba_domain_controller true
# setsebool -P samba_export_all_ro true
# setsebool -P samba_export_all_rw true
# setsebool -P samba_enable_home_dirs true
systemdにsambaサービスを登録する。
/etc/systemd/system/samba.service を下記内容で作成。
[Unit]
Description= Samba 4 Active Directory
After=syslog.target
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
ExecStart=/usr/local/samba/sbin/samba
[Install]
WantedBy=multi-user.target
プライマリの設定
ドメインをセットアップする。
※–use-rfc2307 (Linux/BSD/macOSを認証する場合は必須)
※–interactive (セットアップを対話式で行う)
※–function-level=2008_R2 (機能レベルを2008_R2に)
# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: LOCAL.EXAMPLE.COM
Domain: EXAMPLE
下記のエラーが発生した場合は/etc/krb5.confの includedir /etc/krb5.conf.d/ をコメントアウトする。
ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2816
参照DNSを自身のIPアドレスにする。
dns-searchをRealmに変更する。
サービスを有効にして起動する。
# systemctl enable samba
# systemctl start samba
セカンダリの設定
参照DNSのプライマリをプライマリドメコンのIPアドレスにする。
dns-searchをRealmに変更する。
プライマリでkrb5.conf内をコメントアウトしている場合は同じく /etc/krb5.conf の includedir /etc/krb5.conf.d/ をコメントアウトする。
ドメコンとしてドメイン参加させる。
# samba-tool domain join example DC -U administrator --realm=LOCAL.EXAMPLE.COM
/usr/local/samba/etc/smb.confに下記を追記する。
dns forwarder = [プライマリと同じforwarder]
idmap_ldb:use rfc2307 = yes
参照DNSのセカンダリを本サーバーのIPアドレスにする。
サービスを有効にして起動する。
# systemctl enable samba
# systemctl start samba
グループポリシーが自動では同期されないので、グループポリシーの変更後はセカンダリにて下記コマンドを実行する必要がある。
# rsync -a -u -e ssh root@test-dc1:/usr/local/samba/var/locks/sysvol/ /usr/local/samba/var/locks/sysvol/
# /usr/local/samba/bin/samba-tool ntacl sysvolreset
その他
Windowsの管理ツールではパスワードやアカウントロックのポリシーが変更できなかった。samba-toolで直接変更する。
# /usr/local/samba/bin/samba-tool domain passwordsettings set --complexity=on
# /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-length=5
# /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-age=30
# /usr/local/samba/bin/samba-tool domain passwordsettings set --max-pwd-age=0
# /usr/local/samba/bin/samba-tool domain passwordsettings set --account-lockout-duration=60
# /usr/local/samba/bin/samba-tool domain passwordsettings set --account-lockout-threshold=3
# /usr/local/samba/bin/samba-tool domain passwordsettings set --reset-account-lockout-after=60
# /usr/local/samba/bin/samba-tool domain passwordsettings set --history-length=5
DNSの更新状況の確認。
No DNS updates needed ならOKらしい。
# /usr/local/samba/sbin/samba_dnsupdate --verbose
FSMOの確認。
# /usr/local/samba/bin/samba-tool fsmo show
FSMOの移行。転送先サーバーで下記コマンドを実行する。
# /usr/local/samba/bin/samba-tool fsmo transfer --role all