いなほちゅんのひとりごとブログ版

私のメモ帳を公開してみる。

Raspbian on Raspberry Pi Samba4 Active Directory Domain Controller編 2台目

Raspbian on Raspberry Pi Samba4 Active Directory Domain Controller編 2台目
日付
カテゴリー
シェア

はじめに

Active Directoryのドメインコントローラーは単体ではなくバックアップを考慮して複数台にするのが一般的らしいということでドメインコントローラーをもう1台構築してみます。
こういうときラズパイは安くていいですね(笑)

前提

以下のような設定で構築する。

項目

Kerberoレルム

AD.INAHO.SPACE

NetBIOSドメイン名

AD

サーバーの役割

ドメインコントローラー

バックエンドDNS

Samba内蔵DNS

AD DNSゾーン

ad.inaho.space

フォワード先DNS

192.168.100.1

1台目DC ホスト名

samba01-pi

1台目DC アドレス

192.168.100.251

インストール

パッケージ samba とその他必要になるパッケージを導入する。

sudo apt update && sudo apt -y install samba smbclient krb5-user krb5-config winbind libnss-winbind libpam-winbind oddjob-mkhomedir dnsutils

ネットワーク設定

項目

ドメイン

ad.inaho.space

ホスト名

samba02-pi

IPアドレス

192.168.100.252/24

DNS

192.168.100.251

デフォルトゲートウェイ

192.168.100.1

既存ADに参加

/etc/samba/smb.conf が存在するとエラーになるので先にリネームする。

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.original
sudo samba-tool domain join ad.inaho.space DC -U"AD\administrator" --dns-backend=SAMBA_INTERNAL --option='idmap_ldb:use rfc2307 = yes'

Kerberos設定

/etc/krb5.conf を既存ADに参加で生成したものに変更して設定を追記する。内容は1台目のDCに合わせる。

sudo mv -f /etc/krb5.conf /etc/krb5.conf.original 
sudo cp -f /var/lib/samba/private/krb5.conf /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 = AD.INAHO.SPACE
	dns_lookup_realm = false
	dns_lookup_kdc = true
	ticket_lifetime = 24h
	renew_lifetime = 7d
	forwardable = yes
[realms]
	AD.INAHO.SPACE = {
		kdc = ad.inaho.space
		admin_server = ad.inaho.space
		default_domain = ad.inaho.space
	}
[domain_realm]
	.ad.inaho.space = AD.INAHO.SPACE
	ad.inaho.space = AD.INAHO.SPACE
[appdefaults]
	pam = {
		debug = false
		ticket_lifetime = 36000
		renew_lifetime = 36000
		forwardable = true
		krb4_convert = false
	}

Samba設定

既存AD参加で生成された /etc/samba/smb.conf の [global] セクションに下記内容を追記する。 netbios name 以外の内容を1台目のDCに合わせる。

[global]
    ・・・
    dns forwarder = 192.168.100.1
    idmap config AD : unix_nss_info = yes
    idmap config AD : unix_primary_group = yes
    template shell = /bin/bash
    template homedir = /home/%U
    winbind enum users = yes
    winbind enum groups = yes
・・・

ネームサービススイッチ設定

/etc/nsswitch.conf を編集して認証に winbind を使用するように設定する。 passwd: と group: の行の末尾に winbind を追記する。

・・・
passwd:         files winbind
group:          files winbind
・・・

Sysvolレプリケーション

SambaにSysvolを複製する機能が備わっていないのでrsyncを用いて定期的にFSMOのDCからコピーを行う。

FSMO側の作業

設定

/etc/rsyncd.conf を編集して、Sysvolのコピー元の設定をする。

[SysVol]
path = /var/lib/samba/sysvol
comment = Samba Sysvol Share
uid = root
gid = root
read only = yes
auth users = sysvol-replication
secrets file = /etc/samba/rsyncd.secret

また secrets file である /etc/samba/rsyncd.secret は以下の内容で作成する。

sysvol-replication:<Secrets>

/etc/samba/rsyncd.secret は root のみ読み書き可能でないと動作しないためパーミッションを変更する。

sudo chmod 600 /etc/samba/rsyncd.secret

起動

rsyncd サービスを有効にして起動する。

sudo systemctl enable rsyncd
sudo systemctl start rsyncd

FSMO以外の作業

設定

/etc/samba/rsync-sysvol.secret を作成して、FSMOのrsyncdで設定したsecretを設定する。

<Secrets>

/etc/samba/rsync-sysvol.secret は root のみ読み書き可能でないと動作しないためパーミッションを変更する。

sudo chmod 600 /etc/samba/rsync-sysvol.secret

動作確認

動作確認をするためにrsync--dry-runオプションを付けて実行する。

sudo rsync --dry-run -XAavz --delete-after --password-file=/etc/samba/rsync-sysvol.secret rsync://[email protected]/SysVol/ /var/lib/samba/sysvol/

定期実行

正常動作を確認したら、Sysvolを定期的にコピーするために cron を設定して5分ごとにコピーする。

*/5 * * * * rsync -XAavz --delete-after --password-file=/etc/samba/rsync-sysvol.secret rsync://[email protected]/SysVol/ /var/lib/samba/sysvol/

ホームディレクトリー自動作成

設定ファイル編集

/etc/oddjobd.conf.d/oddjobd-mkhomedir.conf を編集して、自動的に作成されるホームディレクトリーのパーミッションを 755 から 700 に変更する。

2行ある helper の exec に -u 0077 を追記する。

・・・
<helper exec="/usr/lib/aarch64-linux-gnu/oddjob/mkhomedir -u 0077"
・・・
<helper exec="/usr/lib/aarch64-linux-gnu/oddjob/mkhomedir -u 0077"
・・・

PAM認証設定

PAMの仕組みを通じてホームディレクトリーを自動作成するので /etc/pam.d/common-session に下記内容を追記する。

・・・
session optional        pam_oddjob_mkhomedir.so

時刻同期

NTP Serverの構築は Raspbian on Raspberry Pi NTP Server編 を参照。

そして、そこに1点追加。下記の内容を /etc/ntpd.conf に追加する。

・・・
ntpsigndsocket  /var/lib/samba/ntp_signd/
・・・

起動

sudo systemctl stop nmbd smbd winbind
sudo systemctl mask nmbd smbd winbind
sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc
sudo systemctl start samba-ad-dc

動作確認

DNS

ドメインのTCPベースの _ldap SRV レコード

sudo host -t SRV _ldap._tcp.ad.inaho.space.

ドメインのUDPベースの _kerberos SRV リソースレコード

sudo host -t SRV _kerberos._udp.ad.inaho.space.

ドメインコントローラのAレコード

sudo host -t A samba01-pi.ad.inaho.space.

Kerberos

ドメイン管理者アカウントのKerberosチケットを要求

sudo kinit administrator

キャッシュされているKerberosのチケットの一覧を表示

sudo klist

Samba(ファイルサーバー)

DCによって提供されている全ての共有の一覧を表示

sudo smbclient -L localhost -U%

認証を確認するためにドメイン管理者アカウントを使用して netlogon 共有に接続

sudo smbclient //localhost/netlogon -UAdministrator -c 'ls'

おわりに

2台目の構築は楽かなと思ったけどSysvolのコピーが必要なのでちょっと面倒だった。
それでもこれでバックアップサーバーができて運用しやすくなったかなと思います。
とりあえずは1台が壊れたときに入れ替えしやすくなったはず。

参考サイト

Samba DCを既存のActive Directoryに参加させる – 雑廉堂Wiki

RsyncベースのSysvolレプリケーションの回避策 – 雑廉堂Wiki

アーカイブ

タグ

ページの先頭へ