EC2 AmazonLinux2023で
SSMセッションマネージャーのログインユーザーを変更する方法
投稿日: 2024/8/7
はじめに
こんにちは。CTCの近藤です。
AWSのEC2インスタンスに接続する方法として、SSMセッションマネージャーを使用する方法があります。セッションマネージャーを使用すると、SSH接続のためにポートを開放する必要がなく、セキュリティ面でも優れています。しかし、デフォルトではec2-userでログインするため、より細かいアクセス制御やセキュリティポリシーの適用が難しい場合があります。
今回は、EC2 AmazonLinux2023インスタンスにおいて、AWS Systems Manager(SSM)セッションマネージャーでログインする際のOSユーザーを、デフォルトのec2-userから任意のユーザー(今回は例としてcustom-user)に変更する方法をご紹介します。
●カスタムユーザーを使用するメリット
- 細かいアクセス制御:ユーザーごとに異なる権限を設定できます。
- 監査性の向上:誰がいつログインしたかを正確に追跡できます。
- セキュリティポリシーの適用:組織のセキュリティ要件に合わせたポリシーを適用しやすくなります。
- 運用の柔軟性:特定の業務や役割に応じたユーザー設定が可能になります。
AWS Systems Manager Session Managerとは
AWS Systems Manager Session Managerは、EC2インスタンスやオンプレミスサーバーに対して、セキュアで監査可能なインスタンス管理を提供するフルマネージドのAWSサービスです。
●主な特徴
- セキュアな接続:インバウンドポートの開放やパブリックIPアドレスの管理が不要です。
- アクセス制御:IAMポリシーを使用して、きめ細かなアクセス制御が可能です。
- 監査とログ記録:セッションアクティビティをCloudTrailやS3に記録できます。
- クロスプラットフォーム対応:Windows、Linux、macOSなど、さまざまなOSに対応しています。
- ブラウザベースのアクセス:追加のクライアントソフトウェアなしで接続できます。
前提条件
- EC2 インスタンスが AmazonLinux2023 で起動していること
- SSM エージェントがインストールされ、正常に動作していること
- 必要な IAM ロールが適切に設定されていること
設定手順
それでは実際に、ログインユーザーの変更を行っていきましょう!
1. カスタムユーザーの作成
まず、OSで新しいユーザーを作成します。ここではcustom_user
という名前で作成します。
sudo useradd custom_user
sudo passwd custom_user
パスワードを設定する際は、以下のような強力なパスワードポリシーを考慮してください:
- 最低 12 文字以上
- 大文字、小文字、数字、特殊文字を含む
- 辞書に載っている単語を避ける
- 個人情報(生年月日など)を含めない
2. 必要な権限の付与
SSM エージェントの実行に必要な権限を新しく作成したユーザーに付与します。
sudo usermod -aG sudo custom_user
この操作により、custom_user
は sudo グループに追加され、必要な管理タスクを実行できるようになります。ただし、最小権限の原則に従い、必要最小限の権限のみを付与することが重要です。
セキュリティをさらに強化したい場合は、sudoers ファイルを編集して、特定のコマンドのみを実行できるように制限することもできます。
sudo visudo
custom_user ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart amazon-ssm-agent, /usr/bin/systemctl status amazon-ssm-agent
これにより、custom_user
は SSM エージェントの再起動とステータス確認のみを実行できるようになります。
3. SSM エージェントの設定変更
SSM エージェントが新しいユーザーで動作するように設定を変更します。
sudo nano /etc/amazon/ssm/amazon-ssm-agent.json
以下の内容に変更します
{
"Profile": {
"ShareCreds": true,
"ShareProfile": "true"
},
"RunAs": {
"linux": {
"user": "custom_user"
}
}
}
ファイルを保存して閉じます(nano エディタの場合、Ctrl+X、Y、Enter の順に押します)。
この設定変更により、SSM エージェントはcustom_user
として動作するようになります。ShareCreds
とShareProfile
をtrue
に設定することで、SSM セッションマネージャーを通じてログインしたユーザーは、custom_user
のクレデンシャルと環境変数を共有することができます。
4. SSH 公開鍵の設定
既存のauthorized_keys
ファイルを新しいユーザーにコピーします。これにより、既存の SSH 公開鍵を使用して新しいユーザーでも SSH 接続が可能になります。
sudo mkdir -p /home/custom_user/.ssh
sudo cp /home/ec2-user/.ssh/authorized_keys /home/custom_user/.ssh/
sudo chown -R custom_user:custom_user /home/custom_user/.ssh
sudo chmod 700 /home/custom_user/.ssh
sudo chmod 600 /home/custom_user/.ssh/authorized_keys
(コマンド解説)
- 1.
custom_user
のホームディレクトリに.ssh
ディレクトリを作成 - 2.
ec2-user
のauthorized_keys
ファイルをcustom_user
の.ssh
ディレクトリにコピー - 3.
.ssh
ディレクトリとその中のファイルの所有者をcustom_user
に変更 - 4.
.ssh
ディレクトリのパーミッションを 700(所有者のみ読み書き実行可能)に設定 - 5.
authorized_keys
ファイルのパーミッションを 600(所有者のみ読み書き可能)に設定
5. AWS Systems Manager コンソールの設定
AWS マネジメントコンソールの AWS Systems Manager コンソールで、セッションマネージャーの設定を更新します
- 1. AWS Systems Manager コンソールを開きます。
- 2. 左側のメニューから「セッションマネージャー」を選択します。
- 3. 「プリファレンス」タブをクリックします。
- 4. 「編集」ボタンをクリックします。
- 5. 「Run As」設定で「Linux インスタンスの Run As サポートを有効にする」にチェックを付けます。
- 6. オペレーティングシステムユーザー名に
custom_user
を指定します。 - 7. 変更を保存します。

この設定により、SSM セッションマネージャーは指定したカスタムユーザーとしてセッションを開始します。
6. SSM エージェントの再起動
設定変更を反映させるため、SSM エージェントを再起動します。
sudo systemctl restart amazon-ssm-agent
エージェントのステータスを確認して、正常に動作していることを確認します。
sudo systemctl status amazon-ssm-agent
正常に動作している場合、以下のような出力が表示されます:
● amazon-ssm-agent.service - amazon-ssm-agent
Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; vendor
preset: enabled)
Active: active (running) since Thu 2023-07-25 12:00:00 UTC; 10s ago
Main PID: 1234 (amazon-ssm-agen)
Tasks: 11 (limit: 4915)
Memory: 16.0M
CPU: 200ms
CGroup: /system.slice/amazon-ssm-agent.service
└─1234 /usr/bin/amazon-ssm-agent
7. 新しいユーザーでのログイン確認
SSM セッションマネージャーからログインを行い、作成したユーザーでログインが行えているか確認します。
whoami
出力がcustom_user
であれば成功です。
8. ec2-user の無効化(オプション)
セキュリティをさらに強化したい場合は、ec2-user
アカウントを無効化することができます。
sudo usermod -s /sbin/nologin ec2-user
無効化の確認
grep ec2-user /etc/passwd
出力の最後の部分が /sbin/nologin
になっていれば、ログインが無効化されています。
ただし、ec2-user
を完全に無効化する前に、このユーザーに依存しているシステムプロセスや自動化スクリプトがないことを十分に確認してください。
トラブルシューティング
設定変更後に問題が発生した場合は、以下の点を確認してください。
- 1. SSM エージェントのログ:
/var/log/amazon/ssm/amazon-ssm-agent.log
を確認します。 - 2. カスタムユーザーの権限:
sudo -l -U custom_user
で権限を確認します。 - 3. SELinux の設定:SELinux が有効な場合、適切なコンテキストが設定されているか確認します。
まとめ
本記事では、EC2 AmazonLinux2023 インスタンスにおいて SSM セッションマネージャーのログインユーザーをカスタマイズする方法を解説しました。この方法を使用することで、より細かいアクセス制御が可能になり、セキュリティを向上させることができます。
ただし、この変更はシステム全体に影響を与える可能性があるため、十分なテストと検証を行ってから本番環境に適用することをお勧めします。また、定期的にセキュリティのベストプラクティスを確認し、必要に応じて設定を更新することが重要です。
CTCは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。