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

Elastic Compute Service:ECS インスタンスのインターネットへの公開を減らす

最終更新日:Nov 25, 2025

インターネットへのアクセスやネットワークサービスの提供のために、Elastic IP Address (EIP) または固定パブリック IP アドレスを Elastic Compute Service (ECS) インスタンスに直接割り当てることは避けてください。

セキュリティリスク

EIP や固定パブリック IP アドレスなどのパブリック IP アドレスを ECS インスタンスに直接割り当てると、インスタンスはインターネットにアクセスでき、インターネットからアクセス可能になります。これにより、攻撃対象領域が拡大し、以下のセキュリティリスクが生じます。

  • 受動的なスキャンと発見: ECS インスタンスがサービスポートをインターネットに公開すると、スキャナーによって発見される可能性があります。これにより、DDoS 攻撃が発生したり、攻撃者がポートに関連付けられたサービスのリモートの脆弱性を悪用したりして、ホストが侵害される可能性があります。

  • 脆弱なポートへの攻撃: 機密ポートを公開すると、セキュリティリスクが大幅に増加します。セキュリティグループが誤って構成されている場合、Secure Shell Protocol (SSH) (ポート 22)、Remote Desktop Protocol (RDP) (ポート 3389)、サーバーメッセージブロック (SMB) (ポート 445) などのログインおよび運用保守 (O&M) 用の管理ポートが、誤ってインターネットに公開される可能性があります。これらのポートが公開されると、ブルートフォース攻撃、パスワード推測、認証情報窃盗に対して非常に脆弱になります。これにより、ホストの侵害やデータ漏洩などの深刻な結果につながる可能性があります。

  • 管理の複雑性の増加: パブリック IP アドレスをインスタンスに直接アタッチすると、各インスタンスのパブリック IP アドレスとアクセスの制御ポリシーを個別に管理する必要があります。これにより、ネットワークの O&M の複雑さが増します。多くのインスタンスがある場合、構成エラーやポリシーの省略のリスクが高まります。これはまた、単一障害点を生み出し、システム全体の可用性とセキュリティに影響を与えます。

  • 等級保護基準への非準拠: ネットワークセキュリティは、企業のコンプライアンスシステムの重要な部分です。たとえば、「サイバーセキュリティの等級保護の基本要件」(MLPS 2.0) などの基準では、すべてのパブリックネットワークアクセスが安全で、制御可能で、監査可能であることが求められます。企業は、クラウドホストをインターネットに直接公開することを避けるべきです。代わりに、Server Load Balancer (SLB)、NAT Gateway、Bastionhost などの安全なアーキテクチャを使用して、パブリックネットワークアクセスの一元的な制御と保護を行うことができます。

ベストプラクティス

セキュリティグループを正しく使用する

高度なネットワークソリューションについて説明する前に、ECS の最も基本的なセキュリティ防御であるセキュリティグループを習得する必要があります。セキュリティグループは、1 つ以上の ECS インスタンスのインバウンドおよびアウトバウンドトラフィックを制御する仮想ファイアウォールです。

中心的な原則: 最小権限 インバウンドまたはアウトバウンドルールを構成するときは、最小権限の原則に厳密に従ってください。これは、次のことを意味します。

  • 権限付与オブジェクトの指定: IP アドレスへのアクセスを許可する場合は、会社の出口 IP アドレスや他のクラウドリソースのプライベート IP アドレスなど、可能な限り特定の IP アドレスまたは CIDR ブロックを使用してください。ポート 80/443 の Web サービスなど、サービスがインターネット全体からアクセス可能である必要がある場合を除き、0.0.0.0/0 は使用しないでください。

  • 承認済みポートの指定: ビジネスに必要なポートのみを開きます。リモート管理やデータベース用のポートをインターネットに公開しないでください。

悪い例:

たとえば、あるユーザーが便宜上、パブリック IP アドレスを ECS インスタンスにアタッチしました。セキュリティグループで、ユーザーは SSH (22) ポートと Redis (6379) ポートの両方のソースアドレスを 0.0.0.0/0 に設定しました。ユーザーはまた、ルートユーザーに弱いパスワードを設定し、Redis にはパスワードを設定しませんでした。その結果、パブリック IP アドレスがアタッチされてから 5 分も経たないうちに、自動化されたツールがサーバーをスキャンして侵害し、データが盗まれました。

ユーザーがポート 22 のソース IP アドレスを会社の IP アドレスのみに制限し、ポート 6379 へのアクセスを VPC の内部ネットワークのみに制限していれば、攻撃者は弱いパスワードがあっても、これらの脆弱性をインターネットから直接悪用することはできなかったでしょう。

一般的な脆弱なポートのリスト セキュリティグループを構成するときは、次の表にリストされているポートに細心の注意を払ってください。常にソース IP アドレス範囲を制限してください。

ポートカテゴリ

ポート/プロトコル

サービス名

主なリスク

リモート管理

22/TCP, 3389/TCP

SSH, RDP

ブルートフォース攻撃、サーバーの完全な制御の獲得

データベース

3306/TCP, 6379/TCP, 1433/TCP

MySQL, Redis, SQL Server

不正アクセス、データ漏洩、任意コード実行 (RCE)

ファイル共有

445/TCP, 139/TCP

SMB, NetBIOS

ワームの伝播 (EternalBlue など)、ファイルの盗難

Web アプリケーション管理

7001/TCP, 8080/TCP

WebLogic, Tomcat

バックエンドの弱いパスワード、デシリアライゼーションの脆弱性、RCE につながる

ECS インスタンスに安全に接続する

シナリオ: コマンドラインまたはグラフィカルユーザーインターフェイスを使用して、Linux または Windows ECS インスタンスにリモートでログインし、管理します。

SSH (ポート 22) または RDP (ポート 3389) をインターネットに公開すると、ホストが攻撃に対して脆弱になります。Alibaba Cloud は、これらの脆弱なポートを公開する必要をなくす、安全で便利な O&M ツールをいくつか提供しています。

次の表は、最適なソリューションを選択するのに役立つ 3 つの主なソリューションを比較したものです。

ソリューション

シナリオ

Workbench ターミナル接続

迅速で一時的な日常管理、初心者に適しています

セッションマネージャー

開発者および O&M エンジニアによる日常的な使用、ポートの公開なし

Bastionhost

厳格なコンプライアンスおよび監査要件を伴うエンタープライズレベルでの使用

ソリューション 1 (便利で使いやすい): Workbench を使用した接続

Workbench を使用してインスタンスに接続するは、日常的な管理に推奨される方法です。この方法では、ブラウザで直接セキュアな Shell または RDP セッションを開いてインスタンスを管理できます。

  • 仕組み: アクセスリクエストは、ECS インスタンスに到達する前に、まず Alibaba Cloud の公式でセキュリティ強化された Workbench サービス クラスターを介して認証およびリレーされます。ECS インスタンスは、管理ポートのセキュリティグループで Workbench サービスの IP アドレス範囲へのアクセスを許可するだけで済みます。これにより、攻撃対象領域が大幅に最小化されます。

  • 使用方法: 

ソリューション 2 (柔軟で強力): セッションマネージャーの使用

コンソールでセッションマネージャーを使用してインスタンスに接続するは、ポートを公開しない、より柔軟な管理方法です。

ソリューション 3 (エンタープライズグレードのコンプライアンス): Bastionhost の使用

MLPS 2.0 の「4A」監査要件 (認証、権限付与、アカウンティング、監査) を満たす必要がある企業など、厳格なセキュリティコンプライアンス要件を持つ企業は、Bastionhost を使用できます。

中心的な価値: Bastionhost は、一元化されたアカウント管理、アクセスの制御、操作監査、およびセッション録画を提供します。これは、エンタープライズグレードのセキュリティ O&M 管理のための標準ソリューションです。

ECS インスタンスがインターネットに安全にアクセスできるようにする (アウトバウンドトラフィック)

シナリオ: ECS インスタンスで実行されているプログラムが、ソフトウェアパッケージのダウンロード、システムの更新、またはサードパーティ API 操作の呼び出しのためにインターネットにアクセスする必要があります。

推奨ソリューション: NAT Gateway の使用

  • 仕組み:

    • VPC 内の複数の ECS インスタンスには、パブリック IP アドレスがアタッチされていません。

    • すべてのアウトバウンドトラフィックは、VPC ルートを介して NAT Gateway に転送されます。

    • NAT Gateway は、ソースのプライベート IP アドレスを自身のパブリック IP アドレスに変換し、リクエストをインターネットに送信します。

  • 主な利点:

    • バックエンドインスタンスの非表示: インターネットからは NAT Gateway のパブリック IP アドレスのみが見えます。バックエンドの ECS インスタンスは発見されたり、直接アクセスされたりすることはありません。これにより、攻撃のリスクが大幅に軽減されます。

    • 一元管理: VPC のアウトバウンドトラフィックの出口を一元管理して、ネットワーク構成を簡素化します。

    • パブリック IP アドレスの節約: 複数の ECS インスタンスが 1 つ以上のパブリック IP アドレスを共有してインターネットにアクセスできます。

詳細については、「インターネット NAT Gateway の SNAT 機能を使用してインターネットにアクセスする」をご参照ください。

セキュリティ強化: アウトバウンドセキュリティグループルールの構成

インスタンスがインターネットに一方向にしかアクセスできない場合でも、セキュリティリスクは依然として存在します。インスタンスがトロイの木馬に感染した場合、悪意のあるプログラムは外部のコマンドアンドコントロール (C&C) サーバーにアクティブに接続します。アウトバウンドセキュリティグループルールを構成することで、このような悪意のある接続を効果的にブロックできます。

構成手順:

  1. デフォルトの拒否ポリシーの設定: セキュリティグループのアウトバウンドルールで、最も低い優先度 (100 などの最大値) のルールを追加します。ポリシーを「拒否」に、宛先を 0.0.0.0/0 に、ポート範囲をすべてに設定します。

  2. 必要な Alibaba Cloud サービスの許可: ECS の正常な動作に必要な基本的な Alibaba Cloud サービスアドレスへのアクセスを許可するために、優先度の高い許可ルールを追加します。例:

    • Security Center エージェント: ポート 80/443 の 100.100.0.0/16、106.11.0.0/16 など。

    • クラウドアシスタントエージェント: 100.100.100.200:80 および各リージョンのクラウドアシスタントサービスのドメイン名。

    • Alibaba Cloud ミラーソース/OSS/SLS: リージョンに基づいて、対応するサービスのドメイン名を解決し、その IP アドレスを追加できます。

  3. ビジネスに必要な宛先アドレスの許可: ビジネスで github.com などの特定のドメイン名にアクセスする必要がある場合は、ECS インスタンスで `dig` または `nslookup` コマンドを使用してその IP アドレスを解決できます。その後、これらの IP アドレスをアウトバウンド許可ルールに追加できます。

インターネットにサービスを安全に提供する (インバウンドトラフィック)

シナリオ:Web サイト、アプリのバックエンド、または API 操作を ECS インスタンスにデプロイし、インターネットユーザーに安定した信頼性の高いサービスを提供する必要があります。

推奨ソリューション: SLB を使用する

ECS インスタンスにパブリック IP アドレスを直接アタッチしてサービスを提供すると、実際のサーバーがインターネットに公開され、高可用性が提供されません。本番環境でのベストプラクティスは、Application Load Balancer (ALB) や Network Load Balancer (NLB) などの SLB プロダクトを使用することです。

  • 仕組み:

    1. ユーザーリクエストは、まず SLB インスタンスのパブリックエンドポイントに到達します。

    2. SLB インスタンスは、構成された転送ルールとヘルスチェックの結果に基づいて、正常なバックエンド ECS インスタンスのグループにリクエストを分散します。

    3. ECS インスタンスはインターネットに直接公開されません。内部ネットワークを介して SLB インスタンスとのみ通信します。

  • 主な利点:

    • バックエンドサーバーの非表示: ユーザーのアクセスエンドポイントは SLB インスタンスです。これにより、バックエンド ECS インスタンスの送信元 IP アドレスが非表示になり、バックエンドサーバーが効果的に保護されます。

    • 高可用性: 異常な ECS インスタンスを自動的に削除し、フェールオーバーを実行して業務継続性を確保します。

    • 負荷分散: 複数の ECS インスタンスにトラフィックを分散して、水平スケーリングを容易に実現し、高い同時実行性を処理します。

    • 統合されたセキュリティ保護: Web Application Firewall (WAF) などのセキュリティ製品と統合して、アプリケーションレイヤーの攻撃から保護できます。

詳細については、「IPv4 サービスの負荷分散を迅速に実装する」をご参照ください。

統合されたセキュリティグループの構成

最適なセキュリティを確保するために、バックエンド ECS インスタンスのセキュリティグループを次のように構成します。

  • インバウンドルールでは、80/443 などのサービスポートへのアクセスを許可するのは、SLB サービス IP アドレス範囲からのトラフィックのみです。

  • 他のすべてのソース IP アドレスからサービスポートへのアクセスを拒否します。

クラウドアシスタントのリモートポートフォワーディングを使用してクラウドサービスにローカルでアクセスする

内部プライベートネットワークアクセスまたは一時的な試用のみに使用される少数の ECS インスタンスがあり、ネットワーク通信品質に対する要件が低く、パブリック帯域幅のコストを回避したい場合は、クラウドアシスタントのポートフォワーディング機能を使用できます。このソリューションは、完全なセキュリティ防御システムがまだ確立されていないが、小規模なテストやリモートサービスコールが必要なシナリオに適しています。

例: ローカルマシンから ECS インスタンス上の PostgreSQL サービスにアクセスする

ECS インスタンスに PostgreSQL サービスをデプロイし、デフォルトポート 5432 でリッスンしているとします。ECS インスタンスにパブリック IP アドレスをアタッチしたり、セキュリティグループでポート 5432 を外部 IP アドレスに開いたりすることなく、このサービスにローカルで安全にアクセスできます。

セッションマネージャー CLI のポートフォワーディングを使用してパブリック IP アドレスのないインスタンスにアクセスするを使用すると、ECS インスタンスのリモートポート (5432 など) をローカルコンピュータのポート (8080 など) にマッピングできます。ローカルマシンで 127.0.0.1:8080 にアクセスすると、トラフィックはクラウドアシスタントサービスと ECS インスタンスのクラウドアシスタントエージェントによって確立された暗号化チャネルを介してエンドツーエンドで安全に転送されます。

  1. ローカルコンピュータで次のコマンドを実行して、ターゲット ECS インスタンスのポート 5432 をローカルマシンのポート 8080 にマッピングします。

    ali-instance-cli.exe portforward -i <instance_id> -r <target_port> -l <local_port>

    instance_id: インスタンスの ID。

    target_port: ターゲットインスタンスのポート。

    local_port: ローカルポート。

  2. 次の図に示すように、同じローカルマシンで pgAdmin を起動し、127.0.0.1:8080 に接続します。すべてのリクエストは、クラウドアシスタントチャネルを介して ECS インスタンスのポート 5432 に安全に転送され、データベースへの安全なリモートアクセスが可能になります。

    image.png

コンプライアンス機能

チェック

パブリック IP アドレスがアタッチされている ECS インスタンスのクエリ

  1. Security Center コンソールに移動します。

  2. 左側のナビゲーションウィンドウで、[リスクガバナンス] > [CSPM] を選択します。[クラウドサービス構成リスク] タブで、SSH キーペアを使用したログオンという名前のチェック項目を見つけ、[アクション] 列の [スキャン] をクリックします。

    ステータスが失敗した場合、キーペア認証を使用せずにログオンする Linux インスタンスがあることを示します。[詳細] をクリックして表示できます。

機密ポートを公開しているセキュリティグループのチェック

  1. ECS インサイトに移動します。

  2. [セキュリティ] タブで、[特定のセキュリティグループポートへの無制限アクセス] チェック項目をクリックして、機密ポートへの無制限アクセスを持つインスタンスを表示します。

ブロック

ECS インスタンスへのパブリック IP アドレスのアタッチを禁止する

  • エンタープライズユーザーの場合:

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

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Deny",   #拒否
                  "Action": [
                      "ecs:RunInstances",  #インスタンスの作成
                      "ecs:CreateInstance",  #インスタンスの作成
                      "ecs:ModifyInstanceSpec",  #インスタンスの変更
                      "ecs:ModifyInstanceNetworkSpec"   #NIC の変更
                  ],
                  "Resource": "*",    #すべてのリソース
                  "Condition": {
                      "Bool": {
                          "ecs:AssociatePublicIpAddress": [   #パブリック IP アドレスのアタッチ
                              "true"
                          ]
                      }
                  }
              },
              {
                  "Effect": "Deny",   #拒否
                  "Action": [
                      "vpc:AllocateEipAddress",    #EIP のリクエスト
                      "vpc:AllocateEipAddressPro",   #EIP のリクエスト
                      "vpc:AllocateEipSegmentAddress",   #連続 EIP のリクエスト
                      "eipanycast:AllocateAnycastEipAddress"   #エニーキャスト EIP のリクエスト
                  ],
                  "Resource": "*"   #すべてのリソース
              }
          ]
      }
    2. リソースディレクトリで、ポリシーを適切なノードにアタッチします。ポリシーは、そのノードの下のすべてのアカウントに対して指定された操作をブロックします。

  • 非エンタープライズユーザーの場合:

    1. Alibaba Cloud アカウントで RAM (Resource Access Management) コンソールにログインします。左側のナビゲーションウィンドウで、[ポリシー] をクリックし、上記と同じ内容のカスタムポリシーを作成します。

    2. アクセスポリシーの権限付与管理を使用して、RAM ユーザー、RAM ユーザーグループ、または RAM ロールにポリシーを付与できます。

任意のアドレスからの機密ポートへのアクセスを制限する

  • エンタープライズユーザーの場合:

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

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Deny",   #拒否
                  "Action": [
                      "ecs:AuthorizeSecurityGroup",    #セキュリティグループのインバウンドルールの追加
                      "ecs:ConfigureSecurityGroupPermissions",   #セキュリティグループルールの追加または変更
                      "ecs:ModifySecurityGroupRule"   #セキュリティグループルールの変更
                  ],
                  "Resource": "acs:ecs:*:*:securitygroup/*",   #すべてのセキュリティグループ
                  "Condition": {
                      "StringEquals": {
                          "ecs:SecurityGroupSourceCidrIps": [   #アクセス元の IP アドレス
                              "0.0.0.0/0",
                              "::/0"
                          ]
                      },
                      "ForAllValue:StringEquals": {  
                          "ecs:SecurityGroupPort" : [    #次の宛先ポート番号を含む
                              "22",  
                              "3389",
                              "445"
                          ]
                      }
                  }
              }
          ]
      }
    2. リソースディレクトリで、ポリシーを適切なノードにアタッチします。ポリシーは、そのノードの下のすべてのアカウントに対して指定された操作をブロックします。

  • 非エンタープライズユーザーの場合:

    1. Alibaba Cloud アカウントで RAM コンソールにログインします。左側のナビゲーションウィンドウで、[ポリシー] をクリックし、上記と同じ内容のカスタムポリシーを作成します。

    2. アクセスポリシーの権限付与管理を使用して、RAM ユーザー、RAM ユーザーグループ、または RAM ロールにポリシーを付与できます。

修復: ECS インスタンスからパブリック IP アドレスをデタッチする