【Samba】Ubuntu 20.04 Server に Active Directory ドメインコントローラーを構築

Linux

※本サイトではアフィリエイト広告を利用しております。

※本サイトではアフィリエイト広告を利用しております。

Samba を インストールし、Ubuntu 20.04 Server に Active Directory ドメインコントローラーを構築する

今まで、Linux 特に Ubuntu に関して、いくつか記事を投稿してきましたが、今回は、Ubuntu 20.04 Server(以下、Ubuntu と呼びます。)に Samba をインストールし、Active Directory(以下、AD と呼びます)を構築してみたいと思います。

また、DNS のバックエンドには、BIND9_DLZ を使用いたしますので、そちらの設定についても解説したいと思います。


スポンサーリンク

スポンサーリンク

スポンサーリンク

完成イメージ

簡単ではありますが、完成イメージを紹介したいと思います。


Ubuntu に AD を構築し、また、DNS バックエンドには BIND9 を使用します。
なお、検証のため、Windows Server 2022 をクライアントとして所属させます。

画像クリックで拡大画像を表示します




AD DC の構築

では、AD、DNS などの構築手順を解説いたします。


BIND のインストール

ここでは、bind9 のインストールと IPv6 の無効化設定に関して解説いたします。


まず、bind9 をインストールするため、以下のコマンドを実行します。

sudo apt install bind9 bind9utils
画像クリックで拡大画像を表示します

デバッグ時にコマンドを使うため、bind9utils もインストールしています。




次に、BIND のバージョンを確認するため、以下のコマンドを実行します。

named -v
画像クリックで拡大画像を表示します

バージョンは「BIND 9.16.1-Ubuntu (Stable Release) 」です。

BIND のバージョンは、後で必要になるため控えておきます。




次に、IPv6 を無効化するため、以下のコマンドを実行します。

sudo vi /etc/default/named
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


以下は、named の設定内容です。

OPTIONS="-u bind -4"




Samba のインストールとプロビジョニング

ここでは、Samba のインストールとプロビジョニングに関して解説いたします。


まず、samba のほか必要なパッケージをインストールするため、以下のコマンドを実行します。

sudo apt install samba smbclient krb5-user krb5-config winbind
画像クリックで拡大画像を表示します

Kerberos 認証用パッケージや samba に付属するデーモンパッケージもインストールします。




次に、インストールが開始されるとレルムの入力を求められるため、レルムを設定します。

画像クリックで拡大画像を表示します

大文字でレルムを指定し、キーボードの [Enter] キーを押します。




次に、Kerberos サーバの入力を求められるため、Kerberos サーバを設定します。

画像クリックで拡大画像を表示します

設定中のサーバを設定し、キーボードの [Enter] キーを押します。




次に、Kerberos 管理サーバの入力を求められるため、Kerberos 管理サーバを設定します。

画像クリックで拡大画像を表示します

設定中のサーバを設定し、キーボードの [Enter] キーを押すと、パッケージのインストールが完了します。




次に、Samba AD をプロビジョニングする前に、デフォルトの smb.conf のバックアップを取得するため、以下のコマンドを実行します。

sudo mv /etc/samba/smb.conf /etc/samba/org_smb.conf
画像クリックで拡大画像を表示します




次に、Samba AD をプロビジョニングするため、以下のコマンドを実行します。

sudo samba-tool domain provision
画像クリックで拡大画像を表示します

レルムやドメイン、また、DNS バックエンドには [BIND9_DLZ] を設定します。

最後に、Administrator(ドメインアカウント)のパスワードを設定すれば、Samba AD のプロビジョニングは完了です。


DNS バックエンドには、Samba 内部 DNS バックエンドの「SAMBA_INTERNAL」と BIND9 DLZ DNS バックエンドの「BIND9_DLZ」と BIND9 FLATFILE DNS バックエンドの「BIND9_FLATFILE」が指定できます。

ただし、「BIND9_FLATFILE」は、今後、削除予定のようです。




次に、デフォルトの krb5.conf のバックアップを取得するため、以下のコマンドを実行します。
また、Samba AD のプロビジョニング中に作成された krb5.conf をコピーするため、続けて以下のコマンドを実行します。

sudo mv /etc/krb5.conf /etc/org_krb5.conf
sudo cp /var/lib/samba/private/krb5.conf /etc/
画像クリックで拡大画像を表示します




BIND の設定

ここでは、BIND の設定に関して解説いたします。


まず、BIND のバージョンに合わせたライブラリを確認するため、以下のコマンドを実行します。

sudo vi /var/lib/samba/bind-dns/named.conf
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


ライブラリの設定は、別ファイルで設定しますので、ここでは、設定値のみをコピーします。





次に、BIND 設定を追加するため、以下のコマンドを実行します。
また、named.conf.options に設定値を追加します。

sudo vi /etc/bind/named.conf.options
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


以下は、設定例です。

acl localnet {
        192.168.255.0/24;
        127.0.0.1;
};

options {
        directory "/var/cache/bind";

        allow-query {
            localhost; localnet;
        };

        allow-transfer {
            localnet;
        };
        recursion yes;

        dnssec-validation no;
        auth-nxdomain no;
        listen-on-v6 { none; };
        tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
}

dlz "AD DNS Zones" {
    database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_16.so";
};


ACL や許可設定、また、AD DNS ゾーン設定を追加します。また、AD DNS ゾーン設定には、ライブラリからコピーした設定値を貼り付けます。

なお、「named-checkconfig」コマンドを実行すると、設定の妥当性を検証することができます。




DNS リゾルバの無効

ここでは、DNS リゾルバの無効化に関して解説いたします。


まず、DNS リゾルバを無効化するため、以下のコマンドを実行します。

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
画像クリックで拡大画像を表示します




次に、resolv.conf のリンクを削除するため、以下のコマンドを実行します。
また、resolv.conf を作成するため、続けて以下のコマンドを実行します。

sudo rm /etc/resolv.conf
sudo vi /etc/resolv.conf
画像クリックで拡大画像を表示します




次に、resolv.conf に設定値を追加します。

画像クリックで拡大画像を表示します

ドメインは1つですので、search ではなく domain を設定します。

複数ある場合は、search で指定します。


以下は、設定例です。

nameserver 192.168.255.51
domain tam.dev.jp




競合サービスの停止(マスク)

ここでは、競合サービスの停止に関して解説いたします。


競合するサービスを停止するため、以下のコマンドを実行します。

sudo systemctl stop smbd nmbd winbind
sudo systemctl disable smbd nmbd winbind
画像クリックで拡大画像を表示します




Samba の設定

ここでは、Samba の起動設定に関して解説いたします。


まず、「samba-ad-dc」の状態を確認するため、以下のコマンドを実行します。

sudo systemctl list-unit-files | grep samba-ad-dc
画像クリックで拡大画像を表示します

「samba-ad-dc」サービスには、マスクが設定されています。




次に、「samba-ad-dc」のマスクを解除し、有効化するため、以下のコマンドを実行します。

sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc
sudo systemctl start samba-ad-dc
画像クリックで拡大画像を表示します




設定が完了したため、一旦、BIND を再起動するため、以下のコマンドを実行します。
また、BIND の状態を確認するため、続けて以下のコマンドを実行します。

sudo systemctl restart bind9
sudo systemctl status bind9
画像クリックで拡大画像を表示します

BIND の正常動作が確認できました。




検証①

ここでは、構築した AD サーバでコマンドを実行し、動作検証を実施いたします。


機能レベルの確認

機能レベルを確認するため、以下のコマンドを実行します。

sudo samba-tool domain level show
画像クリックで拡大画像を表示します

フォレストもドメインも機能レベルは「Windows Server 2008 R2」です。




DNS 動的更新検証

DNS の動的更新検証は、以下のコマンドを実行し、問題がないことを確認します。

sudo samba_dnsupdate --verbose --all-names
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します




AD DC 検証

ドメインの共有フォルダを確認するため、以下のコマンドを実行します。

smbclient -L localhost -U%
画像クリックで拡大画像を表示します

SMB1 disabled — no workgroup available」というメッセージが・・・

対応するため、設定を追加します。




smb.conf を編集するため、以下のコマンドを実行します。
また、smb.conf に設定値を追加します。

sudo vi /etc/samba/smb.conf
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


以下は設定例です。[global] セクションの最後に追加しています。

client min protocol= NT1
server min protocol= NT1




再度、ドメインの共有フォルダを確認するため、以下のコマンドを実行します。

smbclient -L localhost -U%
画像クリックで拡大画像を表示します

SMB1 プロトコルが有効化され、正常にドメインの共有フォルダにアクセスできました。




次に、LDAP、Kerberos、Samba にて名前の解決を検証するため、以下のコマンドを実行します。

host -t SRV _ldap._tcp.tam.dev.jp.
host -t SRV _kerberos._udp.tam.dev.jp.
host -t A tmuad01.tam.dev.jp.
画像クリックで拡大画像を表示します

すべて、名前が解決できました。




次に、Kerberos の動作確認を実施するため、以下のコマンドを実行します。
また、発行したチケットを確認するため、以下のコマンドを実行します。

kinit administrator@TAM.DEV.JP
klist
画像クリックで拡大画像を表示します

Kerberos の動作確認も問題ありませんでした。




逆引き参照ゾーンの追加

ここでは、逆引き参照ゾーンの追加に関して解説いたします。
※逆引き参照ゾーンが必要な場合のみ設定します。




まず、逆引き参照ゾーンを作成するため、以下のコマンドを実行します。

samba-tool dns zonecreate tmuad01.tam.dev.jp 255.168.192.in-addr.arpa -U Administrator
画像クリックで拡大画像を表示します

逆引き参照ゾーンが作成されました。




次に、PTR レコードを作成するため、以下のコマンドを実行します。

samba-tool dns add tmuad01.tam.dev.jp 255.168.192.in-addr.arpa 51 PTR tmuad01.tam.dev.jp -U Administrator
画像クリックで拡大画像を表示します

PTR レコードが作成されました。




NTP の設定

ここでは、NTP の設定に関して解説いたします。


まず、ntp をインストールするため、以下のコマンドを実行します。

sudo apt install ntp ntpdate
画像クリックで拡大画像を表示します

時刻同期用のコマンドを使うため、ntpdate もインストールしています。




次に、ntp_signd ディレクトリの権限を変更するため、以下のコマンドを実行します。

sudo chown root:ntp /var/lib/samba/ntp_signd
sudo chmod 750 /var/lib/samba/ntp_signd
画像クリックで拡大画像を表示します




次に、NTP の設定を変更するため、以下のコマンドを実行します。

sudo vi /etc/ntp.conf
画像クリックで拡大画像を表示します

独立行政法人 情報通信研究機構」の公開NTPサーバを指定します。


以下は設定例です。

pool ntp.nict.jp iburst




次に、手動時刻同期の前に NTP サービスを停止するため、以下のコマンドを実行します。

sudo systemctl stop ntp
画像クリックで拡大画像を表示します




次に、手動時刻同期を実施するため、以下のコマンドを実行します。

sudo ntpdate -B ntp.nict.jp
画像クリックで拡大画像を表示します




次に、NTP サービスを開始停止するため、以下のコマンドを実行します。

sudo systemctl start ntp
画像クリックで拡大画像を表示します




検証②

ここでは、クライアントからの接続検証や新しいアカウントでのログイン検証を実施いたします。

なお、リモート サーバー管理ツールがクライアントにインストールされていることが前提条件となります。




まず、クライアントをドメインに参加させ、ドメインアカウントを使ってクライアントにログインします。

画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します




「Active Directory ユーザーとコンピューター」を起動し、[Domain Controllers] をクリックします。

画像クリックで拡大画像を表示します

DC サーバ(Ubuntu)が表示されます。




同様に、[Computers] をクリックします。

画像クリックで拡大画像を表示します

クライアント(Windows Server 2022)が追加されています。




次に、「DNS マネージャー」を起動します。

画像クリックで拡大画像を表示します

前方参照ゾーン、逆引き参照ゾーンが作成されています。




次に、新規に作成したアカウントでのログイン検証のため、アカウントを作成します。

画像クリックで拡大画像を表示します

新規に作成したアカウントは「Domain Admins」に所属させています。




次に、新規に作成したアカウントでログインします。
新規に作成したアカウントでも、問題なくログインすることができました。

画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します




まとめ

以上が、Ubuntu に Samba をインストールし、AD を構築する手順となります。

いかがでしたでしょうか?

勉強を兼ねて Ubuntu に AD を構築してみましたが、正直、Windows Server より、10倍ぐらい大変だと感じました。
また、DNS に関しても、BIND だと1から理解しなくてはならないので、検証用であれば SAMBA 内部 DNS バックエンドでもよかったのではと思いました。
結果的に Windows Server の便利さを痛感いたしました。

Windows Server への AD 構築手順は、別の記事でまとめていますので、よろしければこちらをご覧ください。

話を戻しますが、Windows Server で AD を構築した場合、どうしても CAL を考慮する必要があります。
CAL を意識したくなければ、Ubuntu や CentOS などの OS を選択してもよいと思います。
ただし、フォレストやドメインの機能レベルは、Windows Server のそれとは違うため、そのあたりは注意が必要です。

個人的な感想ではありますが、「大規模システム」や「他のドメインと信頼関係を設定する」などがなければ、Ubuntu や CentOS でも問題はないと思います。
例えば、小規模イントラ用の AD に Ubuntu を採用するとか。






最後までお読みいただきありがとうございました。


では。


追伸

クライアントのドメイン参加時、DNS の Aレコードが作成されませんでした。

まだまだ、改善の余地がありそうです(泣)


スポンサーリンク

スポンサーリンク

Linux
スポンサーリンク
たまおをフォローする
スポンサーリンク
タイトルとURLをコピーしました