Amazon EC2 Linux インスタンスをSimple AD アクティブディレクトリに手動で結合する
Amazon EC2 Windows インスタンスに加え、特定の Amazon EC2 Linux インスタンスを Simple AD Active Directoryに結合することもできます。以下の Linux インスタンスのディストリビューションおよびバージョンがサポートされています。
-
Amazon Linux AMI 2018.03.0
-
Amazon Linux 2 (64 ビット x86)
-
Amazon Linux 2023 AMI
-
Red Hat Enterprise Linux 8 (HVM) (64 ビット x86)
-
Ubuntu Server 18.04 LTS および Ubuntu Server 16.04 LTS
-
CentOS 7 x86-64
-
SUSE Linux Enterprise Server 15 SP1
他の Linux ディストリビューションとバージョンも動作する可能性がありますが、まだテストされていません。
前提条件
Amazon Linux、CentOS、Red Hat、または Ubuntu インスタンスをディレクトリに結合するときは、先に、Amazon EC2 Linux スタンスを Simple AD Active Directoryにシームレスに結合する で指定したとおりにインスタンスを起動する必要があります。
次の手順は、正しく実行しないと、インスタンスに到達不可能になったり、インスタンスが使用できなくなったりする可能性があります。したがって、これらの手順を実行する前に、バックアップを作成するか、インスタンスのスナップショットを作成することを強くお勧めします。
Linux インスタンスをディレクトリに結合するには
個々の Linux インスタンスについて、次のいずれかのタブの手順に従います。
- Amazon Linux
-
-
任意の SSH クライアントを使用してインスタンスに接続します。
-
Directory Service が提供する DNS サーバーの DNS サーバー IP アドレスを使用するように Linux インスタンスを設定します。これを行うには、VPC にアタッチされている DHCP オプションセットに設定するか、または手動でインスタンスに設定します。手動で設定するには、AWS ナレッジセンターの「プライベート Amazon EC2 インスタンスが Amazon Linux、Ubuntu、または RHEL で実行中です。再起動中も持続する EC2 インスタンスに静的 DNS サーバーを割り当てる方法を教えてください。」で、特定の Linux ディストリビューションとバージョンの永続的な DNS サーバーの設定に関するガイダンスを参照してください。
-
Amazon Linux - 64 bit インスタンスが最新であることを確認します。
sudo yum -y update
-
必要な Amazon Linux パッケージを Linux インスタンスにインストールします。
これらのパッケージの一部が既にインストールされている可能性があります。
パッケージをインストールすると、いくつかのポップアップ設定画面が表示されます。一般的に、これらの画面のフィールドは空白のままで構いません。
- Amazon Linux
-
sudo yum install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
-
次のコマンドを使用してディレクトリにインスタンスを結合します。
sudo realm join -U join_account@EXAMPLE.COM example.com --verbose
...
* Successfully enrolled machine in realm
-
SSH サービスを設定して、パスワード認証を許可します。
-
テキストエディタで /etc/ssh/sshd_config ファイルを開きます。
sudo vi /etc/ssh/sshd_config
-
PasswordAuthentication 設定を「yes」に設定します。
PasswordAuthentication yes
-
SSH サービスを再起動します。
sudo systemctl restart sshd.service
または:
sudo service sshd restart
-
インスタンスが再起動したら、任意の SSH クライアントを使用して接続し、次の手順を実行してドメイン管理者グループを sudoers リストに追加します。
-
次のコマンドを使用して sudoers ファイルを開きます。
sudo visudo
-
次の内容を sudoers ファイルの下部に追加して保存します。
## Add the "Domain Admins" group from the example.com domain.
%Domain\ Admins@example.com ALL=(ALL:ALL) ALL
(上の例では「\<space>」を使用して Linux スペース文字を作成しています)。
- CentOS
-
-
任意の SSH クライアントを使用してインスタンスに接続します。
-
Directory Service が提供する DNS サーバーの DNS サーバー IP アドレスを使用するように Linux インスタンスを設定します。これを行うには、VPC にアタッチされている DHCP オプションセットに設定するか、または手動でインスタンスに設定します。手動で設定するには、AWS ナレッジセンターの「プライベート Amazon EC2 インスタンスが Amazon Linux、Ubuntu、または RHEL で実行中です。再起動中も持続する EC2 インスタンスに静的 DNS サーバーを割り当てる方法を教えてください。」で、特定の Linux ディストリビューションとバージョンの永続的な DNS サーバーの設定に関するガイダンスを参照してください。
-
CentOS 7 インスタンスが最新であることを確認します。
sudo yum -y update
-
必要な CentOS 7 パッケージを Linux インスタンスにインストールします。
これらのパッケージの一部が既にインストールされている可能性があります。
パッケージをインストールすると、いくつかのポップアップ設定画面が表示されます。一般的に、これらの画面のフィールドは空白のままで構いません。
sudo yum -y install sssd realmd krb5-workstation samba-common-tools
-
次のコマンドを使用してディレクトリにインスタンスを結合します。
sudo realm join -U join_account@example.com example.com --verbose
...
* Successfully enrolled machine in realm
-
SSH サービスを設定して、パスワード認証を許可します。
-
テキストエディタで /etc/ssh/sshd_config ファイルを開きます。
sudo vi /etc/ssh/sshd_config
-
PasswordAuthentication 設定を「yes」に設定します。
PasswordAuthentication yes
-
SSH サービスを再起動します。
sudo systemctl restart sshd.service
または:
sudo service sshd restart
-
インスタンスが再起動したら、任意の SSH クライアントを使用して接続し、次の手順を実行してドメイン管理者グループを sudoers リストに追加します。
-
次のコマンドを使用して sudoers ファイルを開きます。
sudo visudo
-
次の内容を sudoers ファイルの下部に追加して保存します。
## Add the "Domain Admins" group from the example.com domain.
%Domain\ Admins@example.com ALL=(ALL:ALL) ALL
(上の例では「\<space>」を使用して Linux スペース文字を作成しています)。
- Red hat
-
-
任意の SSH クライアントを使用してインスタンスに接続します。
-
Directory Service が提供する DNS サーバーの DNS サーバー IP アドレスを使用するように Linux インスタンスを設定します。これを行うには、VPC にアタッチされている DHCP オプションセットに設定するか、または手動でインスタンスに設定します。手動で設定するには、AWS ナレッジセンターの「プライベート Amazon EC2 インスタンスが Amazon Linux、Ubuntu、または RHEL で実行中です。再起動中も持続する EC2 インスタンスに静的 DNS サーバーを割り当てる方法を教えてください。」で、特定の Linux ディストリビューションとバージョンの永続的な DNS サーバーの設定に関するガイダンスを参照してください。
-
Red Hat - 64 bit インスタンスが最新であることを確認します。
sudo yum -y update
-
必要な Red Hat パッケージを Linux インスタンスにインストールします。
これらのパッケージの一部が既にインストールされている可能性があります。
パッケージをインストールすると、いくつかのポップアップ設定画面が表示されます。一般的に、これらの画面のフィールドは空白のままで構いません。
sudo yum -y install sssd realmd krb5-workstation samba-common-tools
-
次のコマンドを使用してディレクトリにインスタンスを結合します。
sudo realm join -v -U join_account example.com --install=/
...
* Successfully enrolled machine in realm
-
SSH サービスを設定して、パスワード認証を許可します。
-
テキストエディタで /etc/ssh/sshd_config ファイルを開きます。
sudo vi /etc/ssh/sshd_config
-
PasswordAuthentication 設定を「yes」に設定します。
PasswordAuthentication yes
-
SSH サービスを再起動します。
sudo systemctl restart sshd.service
または:
sudo service sshd restart
-
インスタンスが再起動したら、任意の SSH クライアントを使用して接続し、次の手順を実行してドメイン管理者グループを sudoers リストに追加します。
-
次のコマンドを使用して sudoers ファイルを開きます。
sudo visudo
-
次の内容を sudoers ファイルの下部に追加して保存します。
## Add the "Domain Admins" group from the example.com domain.
%Domain\ Admins@example.com ALL=(ALL:ALL) ALL
(上の例では「\<space>」を使用して Linux スペース文字を作成しています)。
- Ubuntu
-
-
任意の SSH クライアントを使用してインスタンスに接続します。
-
Directory Service が提供する DNS サーバーの DNS サーバー IP アドレスを使用するように Linux インスタンスを設定します。これを行うには、VPC にアタッチされている DHCP オプションセットに設定するか、または手動でインスタンスに設定します。手動で設定するには、AWS ナレッジセンターの「プライベート Amazon EC2 インスタンスが Amazon Linux、Ubuntu、または RHEL で実行中です。再起動中も持続する EC2 インスタンスに静的 DNS サーバーを割り当てる方法を教えてください。」で、特定の Linux ディストリビューションとバージョンの永続的な DNS サーバーの設定に関するガイダンスを参照してください。
-
Ubuntu - 64 bit インスタンスが最新であることを確認します。
sudo apt-get update
sudo apt-get -y upgrade
-
必要な Ubuntu パッケージを Linux インスタンスにインストールします。
これらのパッケージの一部が既にインストールされている可能性があります。
パッケージをインストールすると、いくつかのポップアップ設定画面が表示されます。一般的に、これらの画面のフィールドは空白のままで構いません。
sudo apt-get -y install sssd realmd krb5-user samba-common packagekit adcli
-
逆引き DNS 解決を無効にし、デフォルトのレルムをドメインの FQDN に設定します。Ubuntu インスタンスは、レルムが稼働する前に DNS で逆引き解決可能になっている必要があります。なっていない場合、次のように /etc/krb5.conf で逆引き DNS を無効にする必要があります。
sudo vi /etc/krb5.conf
[libdefaults]
default_realm = EXAMPLE.COM
rdns = false
-
次のコマンドを使用してディレクトリにインスタンスを結合します。
sudo realm join -U join_account example.com --verbose
join_account@example.com
-
ドメイン結合権限を持つ example.com ドメインのアカウントの sAMAccountName。プロンプトが表示されたら、アカウントのパスワードを入力します。これらの権限の委任に関する詳細については、「AWS Managed Microsoft AD のディレクトリ結合権限を委任する」を参照してください。
example.com
-
ディレクトリの完全修飾 DNS 名です。
...
* Successfully enrolled machine in realm
-
SSH サービスを設定して、パスワード認証を許可します。
-
テキストエディタで /etc/ssh/sshd_config ファイルを開きます。
sudo vi /etc/ssh/sshd_config
-
PasswordAuthentication 設定を「yes」に設定します。
PasswordAuthentication yes
-
SSH サービスを再起動します。
sudo systemctl restart sshd.service
または:
sudo service sshd restart
-
インスタンスが再起動したら、任意の SSH クライアントを使用して接続し、次の手順を実行してドメイン管理者グループを sudoers リストに追加します。
-
次のコマンドを使用して sudoers ファイルを開きます。
sudo visudo
-
次の内容を sudoers ファイルの下部に追加して保存します。
## Add the "Domain Admins" group from the example.com domain.
%Domain\ Admins@example.com ALL=(ALL:ALL) ALL
(上の例では「\<space>」を使用して Linux スペース文字を作成しています)。
Simple AD の使用において、「最初のログイン時にユーザーにパスワードの変更を強制する」オプションを指定して Linux インスタンスのユーザーアカウントを作成する場合、そのユーザーは kpasswd を使用して初期のパスワード変更ができません。初めてパスワードを変更する場合、ドメイン管理者が Active Directory 管理ツールを使用してユーザーのパスワードを更新する必要があります。
Linux インスタンスからアカウントを管理する
Linux インスタンスから Simple AD のアカウントを管理するには、次に示すように、Linux インスタンスで特定の設定ファイルを更新する必要があります。
-
/etc/sssd/sssd.conf ファイルで、krb5_use_kdcinfo を 「False 」に設定します。例:
[domain/example.com]
krb5_use_kdcinfo = False
-
設定を有効にするには、sssd サービスを再起動する必要があります。
$ sudo systemctl restart sssd.service
または、次のコマンドを使用できます。
$ sudo service sssd start
-
CentOS Linux インスタンスからユーザーを管理する場合は、次を含めるためにファイル /etc/smb.conf も編集する必要があります。
[global]
workgroup = EXAMPLE.COM
realm = EXAMPLE.COM
netbios name = EXAMPLE
security = ads
アカウントのログインアクセスの制限
デフォルトでは、すべてのアカウントは Active Directory で定義されているため、ディレクトリのすべてのユーザーがインスタンスにログインできます。sssd.conf の ad_access_filter を使用して、特定のユーザーのみにインスタンスへのログインを許可できます。例:
ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
memberOf
-
ユーザーは、特定のグループのメンバーである場合にのみ、インスタンスへのアクセスを許可されることを示しています。
cn
-
アクセス権限のあるグループの共通名。この例では、グループ名は、admins です。
ou
-
これは、上記のグループが配置される組織単位です。この例では、OU は、Testou です。
dc
-
これは、ドメインのドメインコンポーネントです。この例では、example です。
dc
-
これは、追加のドメインコンポーネントです。この例では、com です。
ad_access_filter を手動で /etc/sssd/sssd.conf に追加する必要があります。
テキストエディタで /etc/sssd/sssd.conf ファイルを開きます。
sudo vi /etc/sssd/sssd.conf
この操作を行った後、sssd.conf は次のようになります。
[sssd]
domains = example.com
config_file_version = 2
services = nss, pam
[domain/example.com]
ad_domain = example.com
krb5_realm = EXAMPLE.COM
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad
ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
設定を有効にするには、sssd サービスを次のように再起動する必要があります。
sudo systemctl restart sssd.service
または、次のコマンドを使用できます。
sudo service sssd restart
ID マッピング
ID マッピングは 2 つの方法で実行でき、UNIX/Linux ユーザー識別子 (UID) とグループ識別子 (GID)、Windows ID と Active Directory セキュリティ識別子 (SID) の ID 間の統一されたエクスペリエンスを維持できます。これらのメソッドは次のとおりです。
Active Directory での集中型ユーザ ID マッピングには、ポータブルオペレーティングシステムインターフェイス (POSIX) が必要です。
一元化されたユーザ ID マッピング
Active Directory または別のLDAP (LDAP) サービスは Linux ユーザーに UID と GID を提供します。Active Directory では、POSIX 拡張が設定されている場合、これらの識別子はユーザーの属性に保存されます。
アクティブディレクトリの UID と GID を使用するように Linux インスタンスを設定するには、ldap_id_mapping = False sssd.conf ファイルに設定します。この値を設定する前に、UID、UID 番号、および GID 番号が Active Directory 内のユーザーとグループに追加されていることを確認してください。
分散型ユーザー ID マッピング
Active Directory に POSIX 拡張がない場合や、ID マッピングを一元的に管理しないことを選択した場合、Linux は UID と GID の値を計算できます。Linux はユーザー固有のセキュリティ識別子 (SID) を使用して一貫性を保ちます。
分散ユーザー ID マッピングを設定するには、ldap_id_mapping = True sssd.conf ファイルで設定します。
一般的な問題
ldap_id_mapping = False を設定すると、SSSD サービスの開始が失敗することがあります。この失敗の理由は、UID の変更がサポートされていないためです。ID マッピングから POSIX 属性、または POSIX 属性から ID マッピングに変更するたびに、SSSD キャッシュを削除することをお勧めします。ID マッピングと ldap_id_mapping パラメータの詳細については、Linux コマンドラインで「ssd-ldap(8) man」のページを参照してください。
Linux インスタンスへの接続
ユーザーの SSH クライアントを使用してインスタンスに接続し、ユーザー名の入力が求められます。ユーザーは、username@example.com または EXAMPLE\username のいずれかの形式でユーザー名を入力することができます。使用している Linux ディストリビューションに応じて、レスポンスは次のように表示されます。
Amazon Linux、Red Hat Enterprise Linux、および CentOS Linux
login as: johndoe@example.com
johndoe@example.com's password:
Last login: Thu Jun 25 16:26:28 2015 from XX.XX.XX.XX
SUSE Linux
SUSE Linux Enterprise Server 15 SP1 x86_64 (64-bit)
As "root" (sudo or sudo -i) use the:
- zypper command for package management
- yast command for configuration management
Management and Config: https://www.suse.com/suse-in-the-cloud-basics
Documentation: https://www.suse.com/documentation/sles-15/
Forum: https://forums.suse.com/forumdisplay.php?93-SUSE-Public-Cloud
Have a lot of fun...
Ubuntu Linux
login as: admin@example.com
admin@example.com@10.24.34.0's password:
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-1057-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat Apr 18 22:03:35 UTC 2020
System load: 0.01 Processes: 102
Usage of /: 18.6% of 7.69GB Users logged in: 2
Memory usage: 16% IP address for eth0: 10.24.34.1
Swap usage: 0%