Windowsを一切使わずDirectory ServiceのSimple ADを使ってLinuxユーザーを一元管理する
「俺は、Linuxユーザーを一元管理・・・したいんやで!!」
AWS Direcoty ServiceのSimple AD、皆さんご利用でしょうか? AWSが提供するフルマネージド型ディレクトリサービスです。設定がむちゃくちゃ簡単でユーザー管理のみのシンプルな利用方法では、非常にお手軽に使えて便利なサービスです。
複数インスタンスにおけるユーザーの統一管理にはディレクトリサービスの利用がベストですが、ディレクトリ管理にはWindowsOSを利用する場合が多いと思います。しかし、Linuxユーザの管理を、わざわざWindowsサーバーを立ててやるのも面倒ですよね。
今回は、AWS上におけるLinuxOSのユーザーをSimple ADで管理するためのディレクトリセットアップ、Linuxインスタンスのドメイン参加方法、ユーザー追加の一連の流れを紹介します。
AWS環境上でのLinuxOSユーザー管理の参考になれば幸いです。ほな、いってみよ。
__ (祭) ∧ ∧ Y ( ゚Д゚) Φ[_ソ__y_l〉 Simple ADダワッショイ |_|_| し'´J
構築の流れ
今回の構築の流れを紹介します。
- VPCを用意する
- Simple ADを利用して、ディレクトリを作成する
- VPCのDHCPオプションセットを編集する
- Linuxインスタンスをディレクトリに追加する
- ディレクトリに任意のユーザーを追加する
手順1「VPCを用意する」
最初に、ディレクトリを適用するためのVPCを用意します。デフォルトVPCでも大丈夫です。今回の構築手順では、hamada-vpcを利用して説明していきます。VPCには、最低2つのAZを含むサブネットを作成しておきます。
また、下記を参考に、VPCのDNSサポートを設定しておいてください。
VPC での DNS の使用 - Amazon Virtual Private Cloud
手順2「Simple ADを利用して、ディレクトリを作成する」
AWSコンソールを利用して、ディレクトリを作成します。
サービス一覧から「Diretory Service」を開き、「ディレクトリのセットアップ」をクリックします。セットアップ対象のなかから、「Simple AD」を選択。
ディレクトリの詳細内容を入力していきます。
- ディレクトリDNS
- 任意のディレクトリFQDNを設定
- ここでは、hamada-dic.com
- Administratorパスワード
- ドメイン管理ユーザーのパスワードを設定
- Admin123!(注意:運用環境では適切なパスワードを設定してください)
- ディレクトリのサイズ
- 「スモール」を選択
- スモールでも2000個までオブジェクトが作成できます
- VPC
- ディレクトリを適用するVPCを設定
- hamada-VPC
- サブネット
- VPC内の各AZに設定されているサブネットを2つ選択
一通り入力したら、ディレクトリを作成しましょう。作成が完了するまでしばらく時間がかかります。ステータスがアクティブになったら、ディレクトリIDをクリックし設定されたディレクトリ内容を確認しましょう!
ここで注目なのは、DNSアドレス。この2つのアドレスを、次の手順のDHCPオプションセットに追加する必要があるので、皆さんメモっておきましょう。
手順3「VPCのDHCPオプションセットを編集する」
VPCメニューを開いて、「DHCPオプションセット」から「DHCPオプションセットの作成」をクリック。
DHCPオプションセットを作成していきます。
- 名前タグ
- 任意の名前タグを設定
- hamada-dhcp-opt
- ドメイン名
- Simple ADで作成したディレクトリ名を指定
- hamada-dic.com
- ドメインネームサーバー
- Simple ADで作成したディレクトリに割り当てられたDNSアドレスを指定。複数ある場合は、カンマで連結可能
- 10.0.2.159,10.0.3.25
作成したDHCPオプションセットを、VPCに割り当てます。
VPC一覧から割り当て対象のVPCを選択(ここでは、hamada-vpc)し、「DHCPオプションセットの編集」をクリック。
先程作成した、DHCPオプションセットを選択し、保存します。
手順4「Linuxインスタンスをディレクトリに追加する」
ここまでが前準備でした。いよいよ、Linuxインスタンスを作成し、ディレクトリに追加します。
まずは、VPC内に任意のEC2インスタンスを作成します。今回は、Amazon Linuxの最新AMIを利用します。インスタンスタイプは最小のt2.nanoで構いません。インスタンス作成後、SSHでログインします。
最初に、resolve.confの内容を確認。
$ cat /etc/resolv.conf options timeout:2 attempts:5 ; generated by /sbin/dhclient-script search hamada-dic.com nameserver 10.0.2.159 nameserver 10.0.3.25
通常デフォルトでは、ネームサーバーはAmazonProvidedDNSが設定されていますが、DHCPオプションセットを指定したVPCで起動したインスタンスには、そこで指定したDNSサーバーのIPアドレスがネームサーバーとして設定されています。
さっき、DHCPオプションセットで指定したDNSサーバーが、ネームサーバーとして設定されていますね。
ここで、「AmazonProvidedDNSの指定がないと、Route 53のプライベートホストゾーンが使えないのでは?」と思う方もいると思います。自分も、むっちゃ不安になりました。でも大丈夫。
Directory Serviceで作成したDNSサーバーは、権威外レコードについては、自動的にAmazonProvidedDNSにフォワーディングします。なので、resolv.confに追加でAmazonProvidedDNSのDNSサーバを指定する必要はありません。
これに関しては、以下の記事が非常に参考になりますので、気になる方は、合わせてご参照ください。
AWS Directory Service(Simple AD)を利用したオンプレミスからのPrivate Hosted Zone名前解決 | Developers.IO
インスタンスを最新化します。
$ sudo yum -y update
ディレクトリを管理するのに必要なパッケージをインストールします。
$ sudo yum -y install sssd realmd krb5-workstation
ディレクトリにインスタンスを参加させます。
sudo realm join -U [email protected] hamada-dic.com --verbose
Administratorのパスワードを聞かれるので、ディレクトリ作成時に設定した管理者パスワード(この記事ではAdmin123!)を入力。
最終的に、以下のログが出力されていれば、成功です。
... * Successfully enrolled machine in realm
ドメイン参加状況を確認します。
$ sudo realm list hamada-dic.com type: kerberos realm-name: HAMADA-DIC.COM domain-name: hamada-dic.com configured: kerberos-member server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common login-formats: %[email protected] login-policy: allow-realm-logins
SSHサービスを設定して、パスワード認証を許可します。sshd_configのPasswordAuthenticationをyesに設定します。
PasswordAuthentication yes
SSSDサービスを起動します。
$sudo service sssd start
インスタンスを再起動します。
$sudo reboot
再起動後完了後、再接続し、ドメイン管理者をsudoersリストに追加します。
$sudo visudo
以下を、sudoersファイルの最後に追記します。
## Add the "Domain Admins" group from the example.com domain. %Domain\ [email protected] ALL=(ALL:ALL) ALL
ここまでで、設定完了です。試しに、Administratorユーザーで、インスタンスにログインしてみます。Administratorのパスワードを入力し、無事ログインできれば成功です!
$ ssh -l [email protected] 127.0.0.1 The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established. ECDSA key fingerprint is SHA256:XXXXXXXXXXXX ECDSA key fingerprint is MD5:e4:cc:XXXXXXXXXXXX Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts. [email protected]@127.0.0.1's password: Last login: Thu Mar 15 05:05:42 2018 from 127.0.0.1 __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/ [[email protected]@ip-10-0-2-252 ~]$
お疲れ様でした!
手順5. ディレクトリに任意のユーザーを追加する
前の手順までで、無事LinuxインスタンスをSimple ADで作成したディレクトリに参加させることができました。
最後に、openldapコマンドなどを利用して、ユーザーを追加する手順を紹介します。
ここでは、以下のユーザーを追加していきます。
- User name: kanpei
- User password: Amema123!
必要なパッケージを追加します。
$ sudo yum -y install samba-common openldap-clients krb5-workstation adcli
ユーザーを追加します。Administratorのパスワードを聞かれるので入力します。
$ net ads user ADD kanpei Amema123! -C "kanpei" -U [email protected] -S hamada-dic.com Enter [email protected]'s password: User kanpei added
kanpeiが追加されました。アヘアヘ
さて、追加した新ユーザーは、パスワードをセットして有効化して初めて使えます。ユーザーアカウントを有効化するために、下記ファイルを作成します。
dn:CN=kanpei,CN=Users,DC=hamada-dic,DC=com changetype:modify replace:userAccountControl userAccountControl:512
作成したファイルを利用して、openldapクライアントのldapmodifyを利用して、ユーザー情報を変更します。
$ ldapmodify -h hamada-dic.com -p 389 -D "cn=Administrator,cn=Users,dc=hamada-dic,dc=com" -W -f uac.ldif Enter LDAP Password: modifying entry "CN=kanpei,CN=Users,DC=hamada-dic,DC=com"
これで、kanpeiユーザーの利用準備が整いました。下記コマンドを利用して、ケルベロス認証情報を取得し、チケット内容を確認します。
$ kinit kanpei Password for [email protected]: $ klist Ticket cache: KEYRING:persistent:500:500 Default principal: [email protected] Valid starting Expires Service principal 2018-03-15T05:34:06 2018-03-16T05:34:01 krbtgt/[email protected] renew until 2018-03-22T05:34:01
ドメインのユーザー一覧を表示します。ちゃんと、kanpeiが追加されていますね。
$ net ads user -S hamada-dic.com -U [email protected] Enter [email protected]'s password: AWSAdminD-9567243566 Administrator kanpei krbtgt Guest
その他、ユーザーグループの作成などについては、下記URLをご参照いただくと、捗るでしょう!
- How to Manage Identities in Simple AD Directories | AWS Security Blog
- netコマンド(ドメイン連携・管理) | 日経 xTECH(クロステック)
まとめ「マネージドサービスの利点を活かしてシンプルにLinuxユーザーを一元管理するにはうってつけ」
AWS Directory Serviceは、基本的にWindows環境で利用することが多いですが、Simple ADを利用すればOSがLinuxの場合でも、ディレクトリの作成、Linuxインスタンスのドメイン参加、ユーザー管理など、手軽に実施できることがお分かりいただけたかと思います。
複数あるサーバーのLinuxユーザーの一元管理方法として、一つの方法としてご検討いただければと思います。
それでは、今日はこのへんで。濱田(@hamako9999)でした。