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 のプロビジョニングは完了です。
次に、デフォルトの 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";
};
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レコードが作成されませんでした。
まだまだ、改善の余地がありそうです(泣)