TOP>コラム一覧>EC2 AmazonLinux2023でSSMセッションマネージャーのログインユーザーを変更する方法

EC2 AmazonLinux2023で
SSMセッションマネージャーのログインユーザーを変更する方法

はじめに

こんにちは。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として動作するようになります。ShareCredsShareProfiletrueに設定することで、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. 1. custom_userのホームディレクトリに.sshディレクトリを作成
  2. 2. ec2-userauthorized_keysファイルをcustom_user.sshディレクトリにコピー
  3. 3. .sshディレクトリとその中のファイルの所有者をcustom_userに変更
  4. 4. .sshディレクトリのパーミッションを 700(所有者のみ読み書き実行可能)に設定
  5. 5. authorized_keysファイルのパーミッションを 600(所有者のみ読み書き可能)に設定

5. AWS Systems Manager コンソールの設定

AWS マネジメントコンソールの AWS Systems Manager コンソールで、セッションマネージャーの設定を更新します

  1. 1. AWS Systems Manager コンソールを開きます。
  2. 2. 左側のメニューから「セッションマネージャー」を選択します。
  3. 3. 「プリファレンス」タブをクリックします。
  4. 4. 「編集」ボタンをクリックします。
  5. 5. 「Run As」設定で「Linux インスタンスの Run As サポートを有効にする」にチェックを付けます。
  6. 6. オペレーティングシステムユーザー名にcustom_userを指定します。
  7. 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. 1. SSM エージェントのログ:/var/log/amazon/ssm/amazon-ssm-agent.logを確認します。
  2. 2. カスタムユーザーの権限:sudo -l -U custom_userで権限を確認します。
  3. 3. SELinux の設定:SELinux が有効な場合、適切なコンテキストが設定されているか確認します。

まとめ

本記事では、EC2 AmazonLinux2023 インスタンスにおいて SSM セッションマネージャーのログインユーザーをカスタマイズする方法を解説しました。この方法を使用することで、より細かいアクセス制御が可能になり、セキュリティを向上させることができます。

ただし、この変更はシステム全体に影響を与える可能性があるため、十分なテストと検証を行ってから本番環境に適用することをお勧めします。また、定期的にセキュリティのベストプラクティスを確認し、必要に応じて設定を更新することが重要です。

CTCは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。

お問い合わせ


【著者プロフィール】

近藤 隆太(こんどう りゅうた)

伊藤忠テクノソリューションズ株式会社 クラウドエンジニア

2024 Japan AWS Jr.Champions
2022年に新卒で入社し、オンプレミスネットワークの設計および構築業務を経験。
現在はAWSの設計・構築を担当。
社内活動として、西日本エリアでのAWSサービスの啓蒙活動やAI/MLサービスの評価・検証にも積極的に取り組んでいる。

近藤 隆太(こんどう りゅうた)

TOP>コラム一覧>EC2 AmazonLinux2023でSSMセッションマネージャーのログインユーザーを変更する方法

pagetop