すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Linux インスタンスでの root ログインの回避

最終更新日:May 16, 2026

root の代わりに ecs-user を使用して、攻撃対象領域を減らし、監査可能な権限昇格を有効にします。

セキュリティリスク

root アカウントには、無制限のシステム権限があります。root の認証情報 (パスワードまたは SSH キー) が漏洩すると、攻撃者はサーバーを完全に制御できるようになります。次のような結果につながる可能性があります:

  • データの破棄:ビジネスデータ、ログ、バックアップの削除。

  • マルウェアのインストール:ランサムウェア、マイニングプログラム、またはバックドアのインストール。

  • 機密情報の窃取:ビジネスコード、顧客データ、決済情報の窃取。

  • ラテラルムーブメント:サーバーを踏み台として使用し、内部ネットワーク内の他のサーバーを攻撃。

  • 操作の痕跡の消去:ログファイルを変更または削除し、セキュリティイベントの調査が困難になります。

ベストプラクティス

日常のログインには ecs-user を使用してインスタンスを作成します。これにより攻撃対象領域が限定され、すべての特権操作が sudo を経由して実行されるため、明確な監査証跡が残ります。

コンソール

インスタンス購入ページで、ログイン名[ecs-user] に設定します。

ecs-user ユーザーは、特定の Linux イメージバージョンでのみサポートされています。お使いのイメージでサポートされていない場合は、ecs-user ユーザーを作成し、sudo 権限を付与してください。詳細については、「複数ユーザーによるリモートログイン」をご参照ください。

API

RunInstances API または CreateInstance API を呼び出す際に、ImageOptions.LoginAsNonRoot を true に設定します。これにより、インスタンスは root の代わりに ecs-user を使用し、root パスワードはリセットできなくなります。

キーペアがない場合は、CreateKeyPair API を呼び出して作成してください。

コンプライアンス

チェック:root ログインを使用している Linux インスタンスの特定

  1. ECS Insight に移動します。

  2. [セキュリティ] タブを選択し、[Use of Non-root Users for Logons to Linux ECS Instances] をクリックして、root ログインを使用しているインスタンスを表示します。

ブロック:root アカウントによる操作の防止

RAM ポリシーを使用して、Linux インスタンスの作成など、root アカウントによる操作をブロックします。このポリシーは、組織レベルまたはアカウントレベルで適用します。

  • エンタープライズユーザー

    1. Resource Directory コンソールに Alibaba Cloud アカウントでログインします。ナビゲーションペインで、[Control Policies] をクリックします。カスタムポリシーを作成し、次の JSON コンテンツを貼り付けます。

      このポリシーは、インスタンスの作成、システムディスクのアタッチ、システムディスクの交換、コマンドの実行など、root アイデンティティによる操作を拒否します。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ecs:RunInstances",
                      "ecs:CreateInstance",
                      "ecs:ReplaceSystemDisk",
                      "ecs:AttachDisk",
                      "ecs:InvokeCommand"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "Bool": {
                          "ecs:LoginAsNonRoot": [
                              "false"
                          ]
                      }
                  },
                  "Effect": "Deny"
              }
          ]
      }
    2. Resource Directory で、適切なノードを選択してポリシーをアタッチします。このポリシーは、ディレクトリ内のすべてのアカウントに対して指定された操作をブロックします。

  • 非エンタープライズユーザー

    1. RAM コンソールに Alibaba Cloud アカウントでログインします。ナビゲーションペインで、権限付与ポリシー をクリックします。同じ内容でカスタムポリシーを作成します。

    2. ポリシーを RAM ユーザー、RAM ユーザーグループ、または RAM ロールにアタッチします。詳細については、「アクセスポリシーの管理」をご参照ください。

修正:root アカウントログインの無効化

  1. SSH ログイン用の一般ユーザーを作成します。詳細については、「複数ユーザーによるリモートログイン」をご参照ください。

  2. root または一般ユーザーとしてインスタンスにログインします。

  3. root の SSH ログインを無効にします。次のスクリプトを実行して、SSH 設定を変更します:

    #!/bin/bash
    # 元の設定ファイルをバックアップします
    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F)
    
    # root ユーザーの SSH ログインを無効にするため、PermitRootLogin パラメーターを no に変更します
    sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
    
    # 設定を有効にするために SSH サービスを再起動します
    # 注:SSH サービス名はディストリビューションによって異なる場合があります (例:sshd、ssh)。必要に応じて変更してください。
    systemctl restart sshd || service sshd restart
  4. 変更を検証します。現在のセッションを開いたまま、新しいターミナルを開きます。root ログインが失敗すること、および一般ユーザーでログインして sudo コマンドを実行できることを確認します。その後、すべてのセッションを切断します。

    検証後、チェック結果がすぐに更新されない場合があります。この遅延は無視してかまいません。