ネットワークの集中ドメイン管理が必要ですが、Windows Server の使用と追加のライセンス コストの支払いに熱心ではありませんか? Samba Active Directory は、Linux で試すことができる最良の無料の代替手段の 1 つです。
Samba は、主にネットワーク ファイル サーバーと印刷サービスで知られるオープン ソース ソリューションです。しかし、バージョン 4.0 以降、Samba では Active Directory サーバーの役割もプロビジョニングできるようになりました。
このチュートリアルでは、Ubuntu 20.04 に Samba Active Directory をインストールして構成する方法を説明します。準備をしてすぐに飛び込みましょう!
前提条件
この投稿は実践的なデモンストレーションです。従う場合は、次の要件が必要になります。
- Ubuntu 20.04 サーバー。このチュートリアルでは、サーバーの名前は
dc1
になります。 、ドメインはexample.com
になります 、IP アドレスは172.16.1.10
です . - sudo 権限を持つユーザー アカウント。
- Ubuntu サーバーと同じネットワーク上の Windows 10 コンピューター。
サーバー ホスト名の設定
最初のステップは、ネットワークでサーバーの ID を設定することです。そのためには、以下の手順に従って、サーバーのホスト名と完全修飾ドメイン名 (FQDN) を割り当てる必要があります。
1. まず、Ubuntu サーバーにログインし、ターミナル セッションを開きます。
2. 次に、hostnamectl
を実行します 以下のコマンドでサーバーのホスト名を変更します。以下のコマンドは、ホスト名を dc1
に変更します .
# set up the hostname
hostnamectl set-hostname dc1
3. /etc/hosts
を開きます nano
など、好みのエディタを使用して編集するためのファイル .ファイル内に、サーバーのIPアドレスを指定するエントリを追加します 、FQDN 、およびホスト名 この形式 – server-IP hostname.domain.com hostname
.
この例では、hosts ファイルのエントリは次のとおりです:# setup FQDN dc1.example.lan 172.16.1.10 dc1.example.lan dc1
# setup FQDN dc1.example.lan
172.16.1.10 dc1.example.lan dc1
新しいエントリを追加したら、ファイルを保存して終了します。

4. 最後に、以下のコマンドを実行して、Samba サーバーの FQDN を確認します。 # verify FQDN hostname -f # verify FQDN is resolved to the Samba IP address ping -c3 dc1.example.lan
# verify FQDN
hostname -f
# verify FQDN is resolved to the Samba IP address
ping -c3 dc1.example.lan
以下に示すように、Samba サーバーの FQDN は dc1.example.lan
です。 、172.16.1.10
に解決されます .

DNS リゾルバーの無効化
systemd-resolved
サービスは、Ubuntu サーバーの DNS 構成を制御しますが、これは Samba Active Directory には適していません。 Samba Active Directory をセットアップするには、まず systemd-resolved
を無効にする必要があります /etc/resolv.conf
をサービスして置き換えます
systemd-resolved
を無効にして停止します サービスを一度に削除し、ファイルへのシンボリック リンク /etc/resolv.conf
を削除します 、 順番に。 # stop and disable systemd-resolved service
sudo systemctl disable --now systemd-resolved
# remove the symlink file /etc/resolv.conf
sudo unlink /etc/resolv.conf

2. 次に、新しい /etc/resolv.conf
を作成します ファイル。
# create a new /etc/resolv.conf file
touch /etc/resolv.conf
3. /etc/resolv.conf
を開きます 好みのエディターを使用して、以下の構成を使用して DNS リゾルバーを定義します。 Samba サーバーの IP アドレスを行の一番上に置くようにしてください。ファイルを保存し、編集後に終了します。
# Samba server IP address
nameserver 172.16.1.10
# fallback resolver
nameserver 1.1.1.1
# main domain for Samba
search example.lan
4. 最後に、次のコマンドを実行してファイルを /etc/resolv.conf
にします。 ファイル不変。この手順により、リゾルバーが何らかの理由で知らないうちに変更されないようにします。
# add attribute immutable to the file /etc/resolv.conf
sudo chattr +i /etc/resolv.conf
Samba のインストール
FQDN をセットアップして名前解決を構成したら、Samba をシステムにインストールし、Samba Active Directory サービスを有効にします。これを書いている時点で、公式の Ubuntu リポジトリは Samba v4.13 を提供しています。
1. apt
を実行します 以下のコマンドを実行して、Ubuntu サーバーのパッケージ インデックスを更新します。
sudo apt update
2. 次に、以下のコマンドを実行して、すべてのパッケージと依存関係とともに Samba をインストールします。
sudo apt install -y acl attr samba samba-dsdb-modules samba-vfs-modules smbclient winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools
3. デフォルトのレルム ドメイン名を大文字で入力します。この例では、FQDN は dc1.example.lan
です。 であるため、デフォルトの領域ドメイン名は EXAMPLE.LAN
である必要があります .ハイライト OK し、Enter を押します。

4. 次のプロンプトで、サーバーの FQDN を入力します。この手順では、デフォルトの Kerberos サーバーを定義します。ハイライト OK し、Enter を押します。

5. 次に、サーバーの FQDN をもう一度入力して、Kerberos 管理サーバーを指定します。ハイライト わかりました Enter キーを押して、Samba の初期構成を完了します。

6. Samba のインストール後、次のコマンドを実行して、Samba Active Directory サーバーが必要としないサービスを停止して無効にします smbd
、nmbd
、winbind
.サーバーは samba-ac-dc
のみを必要とします Active Directory およびドメイン コントローラーとして機能します。
# stop and disable samba services - smbd, nmbd, and winbind
sudo systemctl disable --now smbd nmbd winbind

7. 最後に、以下のコマンドを実行して、samba-ad-dc
をアクティブにして有効にします。 サービス。
# activate samba-ad-dc service
sudo systemctl unmask samba-ad-dc
# enable samba-ad-dc service
sudo systemctl enable samba-ad-dc

Samba Active Directory の構成
これで、システムに Samba がインストールされました。 Samba Active Directory を構成するには、さらにいくつかの手順があります。 Samba のインストールには、samba-tool
というコマンドライン ツールが付属していました。 Samba Active Directory をプロビジョニングします。
1. まず、/etc/samba/smb.conf
のバックアップを作成します 適切な方法でファイルします。プロビジョニング プロセスにより、このファイルが置き換えられます。
# backup default Samba configuration file
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
2. samba-tool
を実行します 以下のコマンドを実行して、Samba Active Directory のプロビジョニングを開始します。
# provisioning Samba Active Directory
sudo samba-tool domain provision
3. レルムで プロンプトが表示されたら、デフォルト値を受け入れて Enter キーを押します。
4. ドメイン プロンプトが表示されたら、もう一度 Enter キーを押してデフォルト値を受け入れます。
5. サーバーの役割について プロンプトが表示されたら、デフォルトのままにして Enter キーを押します。
6. DNS バックエンド 値をデフォルトのままにします (SAMBA_INTERNAL
) を入力し、Enter キーを押します。
7. 次に、追加の DNS フォワーダーの IP アドレスを入力します .この例では、Cloudflare DNS 1.1.1.1
を追加します DNS フォワーダとして。このオプションは、SAMBA_INTERNAL
を使用している場合にのみ使用できます DNS バックエンド。
8. Samba Active Directory 管理者パスワードを入力し、Enter キーを押します。

プロビジョニングにより、新しい Samba 構成ファイル (/etc/samba/smb.conf
) が自動的に作成されます。 )および Kerberos 構成(/var/lib/samba/private/krb5.conf
) ) ファイル。
Samba Active Directory のプロビジョニング後、以下のスクリーンショットのような出力が表示されます。

9. 次に、以下のコマンドを実行して、デフォルトの Kerberos 構成をバックアップし、ファイル /var/lib/samba/private/krb5.conf
に置き換えます。 .
# rename default Kerberos configuration to krb5.conf.orig
sudo mv /etc/krb5.conf /etc/krb5.conf.orig
# copy the Kerberos configuration generated by the samba-tool
sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
10. 最後に、systemctl
を実行します 以下のコマンドで Samba Active Directory サービスを開始します samba-ad-dc
サービスのステータスが active (running)
であることを確認します .
# start samba-ad-dc service
sudo systemctl start samba-ad-dc
# verify samba-ad-dc service
sudo systemctl status samba-ad-dc
samba-ad-dc
サービスは active (running)
です と enabled
、以下に示すように。システムの起動時に Samba AD デーモンが自動的に起動するようになりました。

時刻同期の設定
Samba Active Directory は Kerberos プロトコルに依存しており、Kerberos プロトコルでは AD サーバーとワークステーションの時刻が同期されている必要があります。時刻を正しく同期するには、ネットワーク タイム プロトコル (NTP) を設定する必要があります。 サーバーも Samba に。
AD 時刻同期の利点には、リプレイ攻撃が含まれます AD レプリケーションの競合の防止と解決
1. 以下のコマンドを実行して、ディレクトリ /var/lib/samba/ntp_signd/ntp_signed
のデフォルトの権限と所有権を変更します .ユーザー/グループ _chrony
ntp_signed
への読み取り権限が必要です ディレクトリ。
# allow group _chrony to read the directory ntp_signd
sudo chown root:_chrony /var/lib/samba/ntp_signd/
# change the permission of the directory ntp_signd
sudo chmod 750 /var/lib/samba/ntp_signd/
2. 次に、構成ファイル /etc/chrony/chrony.conf
を開きます テキスト エディターで、次の構成をファイルの末尾に追加します。この構成により、chrony NTP サーバーが有効になり、NTP ソケットの場所が /var/lib/samba/ntp_signd
にポイントされます .構成ファイルを保存し、エディターを終了します。
# bind the chrony service to IP address of the Samba AD
bindcmdaddress 172.16.1.10
# allow clients on the network to connect to the Chrony NTP server
allow 172.16.1.0/24
# specify the ntpsigndsocket directory for the Samba AD
ntpsigndsocket /var/lib/samba/ntp_signd

3. 次に、次のコマンドを実行して再起動し、chronyd
を確認します。 Samba AD サーバー上のサービス。
# restart chronyd service
sudo systemctl restart chronyd
# verify chronyd service status
sudo systemctl status chronyd
以下に示すように、chronyd
サービスはenabled
です および active (running)
. chronyd
の一番下 ログメッセージ、メッセージ MS-SNTP authentication is enabled
が表示されます NTP 認証拡張機能が機能していることを確認します。

Samba Active Directory の確認
インストール後、Samba の構成を検証して、これまでの作業が機能することを確認する必要があります。これを行うには、Samba DNS 構成、デフォルトの共有フォルダー (ファイル サーバー) を確認し、Kerberos 認証をテストします。
1. host
を実行します AD ドメイン名 example.lan
を確認する以下のコマンド および dc1.example.lan
.
# verify domain example.lan
host -t A example.lan
# verify domain dc1.example.lan
host -t A dc1.example.lan
その結果、両方のホスト レコードが Samba サーバーの IP アドレス 172.16.1.10
を指していることが確認されます。 .

2. 次に、_kerberos
であることを確認します。 そして _ldap
サービス レコードは両方とも、Samba Active Directory サーバーの FQDN を指しています。
# verify SRV record for _kerberos
host -t SRV _kerberos._udp.example.lan
# verify SRV record for _ldap
host -t SRV _ldap._tcp.example.lan
この例では、以下の出力で両方の SRV
が確認されます。 レコードは dc1.example.lan
に解決されます .

3. 次に、smbclient
を実行します 以下のコマンドを実行して、Samba Active Directory で使用可能なデフォルトのリソースを確認します。
# checking available resources on Samba AD
smbclient -L example.lan -N
Samba Active Directory のデフォルトの共有フォルダは sysvol
であることがわかります。 および netlogon
、利用可能なデフォルトのサービスは IPC$
です .

4. 最後に、以下の kinit
を実行します ユーザー Administrator
を使用して Kerberos サーバーに対して認証するコマンド システムにキャッシュされた Kerberos チケットを確認します。
注:ドメイン部分は大文字
e.
にする必要があります
# authenticate to Kerberos using administrator
kinit [email protected]
# verify list cached Kerberos tickets
klist
以下のスクリーンショットのような出力が表示されます。管理者の Kerberos チケットはファイル /tmp/krb5cc_0
に保存されます 有効期限は 41 日です。

新しい Samba Active Directory ユーザーの作成
この時点で、Samba Active Directory の構成が完了しました。しかし、ご存知のように、まだユーザーはいません。 samba-tool
を使用して、最初の Samba AD ユーザー アカウントを作成します。 コマンド。
1. 以下のコマンドを実行して、alice
という名前の新しいユーザーを作成します。 、パスワードは alice_password88
です .
# create a new user in Samba
sudo samba-tool user create alice alice_password88
2. 次に、samba-tool
を実行します 以下のコマンドを実行して、Samba で利用可能なユーザーを確認します。
# checking users on Samba
sudo samba-tool user list
以下に示すように、新しいユーザー alice
は、Samba Active Directory で利用できます。

Samba Active Directory ドメインへの参加とログイン
新しいユーザーを作成したので、あとはワークステーションを Active Directory ドメインに参加させるだけです。その後、Samba AD ユーザー資格情報を使用してワークステーションにログインできます。
1. Windows PC にログインし、管理者として PowerShell を開きます。

2. 次のコマンドを実行して、Windows PC で使用可能なイーサネット アダプターを一覧表示します。
# checking available interface using Powershell command
Get-NetAdapter -Name "*"
PowerShell 画面に異なる出力が表示される場合があります。この例は、Ethernet Instance 0 2
という 1 つのネットワーク インターフェイスを示しています。 .

3. 次のコマンドを実行して、アダプターの DNS サーバーを Samba Active Directory の IP アドレスに変更し、追加のフォールバック Cloudflare DNS 1.1.1.1
を使用します。 .この手順を実行すると、ワークステーションが名前解決に Samba AD サーバーを使用するようになります。
# setup DNS resolver using Powershell
Set-DNSClientServerAddress "Ethernet Instance 0 2" –ServerAddresses ("172.16.1.10","1.1.1.1")
4. 以下のコマンドを実行して DNS リゾルバーを確認し、コンピューターが Samba AD サーバーをデフォルトの DNS リゾルバーとして使用していることを確認します。
# verify DNS resolver
Get-DnsClientServerAddress
以下のスクリーンショットのような同様の出力が表示されます。

5. ここで、サーバーのホスト名とドメインに対して ping を実行します。
# ping the AD domain dc1.example.lan
ping dc1.example.lan
# ping the AD domain example.lan
ping example.lan
以下のように、AD サーバーからの応答が表示されます。結果が Samba AD サーバーの IP アドレスを指していることを確認します。

6. 次に、次のコマンドを実行して、ワークステーションを Samba Active Directory ドメインに参加させます。
# add Windows 10 to Active Directory
Add-Computer -DomainName "example.lan" -Restart
7. Samba AD administrator
を入力します ユーザー名とパスワードを確認したら、[OK] をクリックします。 コンピューターは、ドメイン参加プロセスの一部として自動的に再起動します。

8. 再起動後、Other users
をクリックします。 ログイン画面で。前に作成した Samba AD ユーザーの Active Directory ユーザー名とパスワード ([email protected]
) を入力します。 ) を入力し、Enter を押してログインします。

9. ログインに成功したら、PowerShell ウィンドウを開き、以下のコマンドまたは両方を実行して、現在ログオンしているユーザー名を確認します。
whoami
query user

結論
Active Directory の概念とアプリケーションは、Windows エコシステムだけのものではありません。このチュートリアルでは、Samba Active Directory を実装することで、Linux でも同じ Active Directory の利点を享受できることを学びました。
このチュートリアルを通じて、Ubuntu 20.04 に Samba Active Directory をインストールして構成する方法を学習しました。また、新しいユーザーを作成し、Windows ワークステーションを Samba Active Directory ドメインに参加させる方法も学びました。
あなたの次は何ですか?印刷サポートや Samba 共有ファイル サーバーのセットアップのために、Samba を CUPS サービスに統合するのはどうですか?ご覧のとおり、Samba には Active Directory 以外にも機能があります!