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

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

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

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

はじめに

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

アーカイブ

タグ

ページの先頭へ