いなほちゅんのひとりごと

ブログ版

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

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

読み込み中...
Raspbian on Raspberry Pi Samba4 Active Directory Domain Controller編 1台目
2020/5/5 ブログ

はじめに

Sambaはバージョン4でWindows Server 2008 R2相当のActive Directoryドメインコントローラーを構成できるようになったということで試してみようと思います。

前提

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

項目

Kerberoレルム

AD.INAHO.SPACE

NetBIOSドメイン名

AD

サーバーの役割

ドメインコントローラー

バックエンドDNS

Samba内蔵DNS

AD DNSゾーン

ad.inaho.space

フォワード先DNS

192.168.100.1

インストール

パッケージ 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.251/24

DNS

192.168.100.1

デフォルトゲートウェイ

192.168.100.1

Raspbianではホスト名を raspi-config を実行して設定し、それ以外の項目は /etc/hosts と /etc/dhcpcd.conf を編集して設定する。

127.0.0.1       localhost
192.168.100.251 samba01-pi.ad.inaho.space samba01-pi
interface eth0
    static ip_address=192.168.100.251/24
    static routers=192.168.100.1
    static domain_name_servers=192.168.100.1

前処理

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

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.original

プロビジョニング

samba-tool を用いてドメインのプロビジョニングを行う。--interactive は対話式でプロビジョニングを行うことを指示する。また --function-level=2008_R2 は機能レベルをWindows Server 2008 R2相当で構築すること、 --use-rfc2307 はRFC2307属性を付与することをそれぞれ指示する。

sudo samba-tool domain provision --interactive --function-level=2008_R2 --use-rfc2307

DNS

プロビジョニングでSamba内蔵DNSをバックエンドで使用するとしたので設定を行う。KerberosやLDAPなどのサービスを探すためにDNSを使用するのでSamba内蔵DNSを使う必要がある。

DNSリゾルバー構成

Samba内蔵DNSを使用するために、使用するDNSのIPアドレスを 192.168.100.1 から 192.168.100.251 に変更し、ドメインネームを ad.inaho.space とする。
Raspbianでは /etc/dhcpcd.conf を編集して、 domain_name の行を追加し domain_name_servers の行を変更する。

interface eth0
    static ip_address=192.168.100.251/24
    static routers=192.168.100.1
    static domain_name=ad.inaho.space
    static domain_name_servers=192.168.100.251

逆引参照ゾーン作成

sudo samba-tool dns zonecreate 192.168.100.251 100.168.192.in-addr.arpa

Kerberos

前処理

/etc/krb5.conf をプロビジョニングで生成したファイルに置き換える。

sudo mv /etc/krb5.conf /etc/krb5.conf.original 
sudo cp /var/lib/samba/private/krb5.conf /etc/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

プロビジョニングで生成された /etc/samba/smb.conf の [global] セクションに下記内容を追記する。

[global]


    idmap_ldb : use rfc2307 = yes
    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

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

ADユーザーでこのホストにログインした場合にホームディレクトリーがなくて警告メッセージが出ることがある。
これを避けるためにPAMの仕組みを利用してログイン時にホームディレクトリー作成処理を行うように設定する。

設定ファイル編集

デフォルトではパーミッションが 755 のため誰でも読めてしまうからホームディレクトリーのパーミッションを変更する。 /etc/oddjobd.conf.d/oddjobd-mkhomedir.conf を編集して、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

起動

ドメインコントローラーでは nmbd smbd winbind といったサービスではなく samba-ad-dc サービスを使用するように設定する。

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

時刻同期

NTP Serverの構築はこちらを参照。

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



ntpsigndsocket  /var/lib/samba/ntp_signd/



動作確認

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'

おわりに

やってみたら思った以上に大変だった(笑)
これでおうちでActive Directoryを利用できるようになります。
とりあえずグループポリシーを適用したり・・・ あとは何をしよう(^^;
用途はこれから考えるとします。

参考サイト

SambaをActive Directoryドメインコントローラとして設定する – 雑廉堂Wiki