Ubuntu/Debian デスクトップで True SSO をサポートするには、Samba と Winbind ソリューションを使用して、ベース仮想マシン (VM) と Active Directory (AD) ドメインを統合します。
Ubuntu/Debian 仮想マシンを Active Directory ドメインと統合するには、次の手順を実行します。
説明の中で、仮想マシンのホスト名などのネットワーク構成のエンティティをプレースホルダーで表している部分があります。次の表を参考にして、これらのプレースホルダーの値をご使用の環境に合わせて変更してください。
プレースホルダーの値 |
説明 |
dns_IP_ADDRESS |
DNS ネーム サーバの IP アドレス |
mydomain.com |
Active Directory ドメインの DNS 名 |
MYDOMAIN.COM |
Active Directory ドメインの DNS 名。すべて大文字にします。 |
myhost |
Ubuntu/Debian 仮想マシンのホスト名 |
MYDOMAIN |
ワークグループの DNS 名または Samba サーバが含まれている NT ドメインの DNS 名。すべて大文字にします。 |
ads-hostname |
Active Directory サーバのホスト名 |
admin-user |
Active Directory ドメインの管理者のユーザー名 |
前提条件
以下を検証します。
- Active Directory サーバが仮想マシンの DNS で解決できる。
- 仮想マシンで NTP (Network Time Protocol) が設定されている。
手順
- Ubuntu/Debian 仮想マシンで samba と winbind パッケージをインストールします。
sudo apt install samba krb5-config krb5-user winbind libpam-winbind libnss-winbind
- Kerberos 認証設定を構成します。
- システムに Kerberos 認証設定のウィンドウが表示されない場合は、次のコマンドを実行して表示します。
dpkg-reconfigure krb5-config
- [Default Kerberos version 5 realm(デフォルトの Kerberos バージョン 5 レルム)] に、Active Directory ドメインの DNS 名をすべて大文字で入力します。
たとえば、Active Directory ドメインの名前が
mydomain.com の場合、
MYDOMAIN.COM と入力します。
- [Kerberos servers for your realm(レルムの Kerberos s サーバ)] で、Active Directory サーバのホスト名を入力します(この手順の例では ads_hostname)。
- [Administrative server for your Kerberos realm(Kerberos レルムの管理サーバ)] に、Active Directory ドメインのホスト名を再度入力します。
- PAM の設定を更新します。
- PAM の設定ページを開きます。
- [Create Home Directory on Login(ログイン時にホーム ディレクトリを作成)] を選択して、[OK] を選択します。
- 次の例のように、/etc/nsswitch.conf 構成ファイルを編集します。
passwd: compat winbind
group: compat winbind
shadow: compat
gshadow: files
- (オプション) 正しい DNS サーバが自動的に検出された場合は、この手順をスキップして次の手順に進みます。正しい DNS サーバの検出に失敗した場合は、この手順を行い、DNS サーバを手動で設定します。
自動生成された
resolv.conf ファイルが検索ドメインとして Active Directory ドメインを参照するように、システム接続で NetworkManager の設定を編集します。次のサブステップでは、Ubuntu 20.04 システムの例を示します。
- NetworkManager コントロール パネルを開き、システム接続の [IPv4 Settings(IPv4 設定)] に移動します。方法として、[Automatic (DHCP) addresses only(自動 DHCP アドレスのみ)] を選択します。[DNS servers(DNS サーバ)] テキスト ボックスで、DNS ネーム サーバの IP アドレスを入力します(この手順の例では dns_IP_ADDRESS です)。[ Save(保存)] をクリックします。
- 次の例のように、/etc/dhcp/dhclient.conf ファイルを編集します。
supersede domain-name "mydomain.com";
prepend domain-name-servers dns_IP_ADDRESS;
- 次の例のように、/etc/systemd/resolved.conf ファイルを編集します。
DNS=dns_IP_ADDRESS
Domains="mydomain.com"
注: 新しいインスタント クローン仮想デスクトップを作成すると、新しい仮想ネットワーク アダプタが追加されます。クローン作成済みの仮想デスクトップにネットワーク アダプタを追加すると、仮想デスクトップ テンプレートによって、DNS サーバなどのネットワーク アダプタの設定がクリアされます。新しいネットワーク アダプタを追加するときに DNS サーバの設定を維持するには、仮想マシンの DNS サーバを指定する必要があります。
- DNS サーバを指定するには、次の例のように、/etc/resolv.conf 構成ファイルを編集します。警告が表示された場合は、警告を無視して変更を続行できます。
nameserver dns_IP_ADDRESS
search mydomain.com
- 仮想マシンを再起動して、再度ログインします。
- 次の例のように、/etc/hosts 構成ファイルを編集します。
127.0.0.1 localhost
127.0.1.1 myhost.mydomain.com myhost
- 次の例のように、/etc/samba/smb.conf 構成ファイルを編集します。
[global]
security = ads
realm = MYDOMAIN.COM
workgroup = MYDOMAIN
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = yes
winbind use default domain = yes
restrict anonymous = 2
kerberos method = secrets and keytab
winbind refresh tickets = true
- smbd サービスを再起動します。
sudo systemctl restart smbd.service
- 次の例のように、/etc/krb5.conf 構成ファイルの内容を編集します。
[libdefaults]
default_realm = MYDOMAIN.COM
dns_lookup_realm = true
dns_lookup_kdc = true
[realms]
MYDOMAIN.COM = {
kdc = ads-hostname
admin_server = ads-hostname
}
[domain_realm]
.mydomain.com = MYDOMAIN.COM
mydomain.com = MYDOMAIN.COM
- Ubuntu/Debian 仮想マシンを Active Directory ドメインに参加させます。
- Kerberos チケットを開始します。
sudo kinit admin-user
プロンプトが表示されたら、管理者パスワードを入力します。
- チケットが正常に作成されたことを確認します。
sudo klist
このコマンドは、チケットに関する情報(有効期間の開始時間や有効期限)を返します。
- Kerberos キータブ ファイルを作成します。
sudo net ads keytab create -U admin-user
- Active Directory ドメインに参加します。
sudo net ads join -U admin-user
- Winbind サービスを再起動して確認します。
- Winbind サービスを再起動します。
sudo systemctl restart winbind.service
- Winbind サービスを確認するには、次のコマンドを実行し、正しい出力が返されていることを確認します。
- wbinfo -u
- wbinfo -g
- getent passwd
- getent group
- 仮想マシンを再起動して、再度ログインします。