全送信元を許可するサービスポートの見直し

サービスポートをすべての送信元に公開する必要があるか確認し、不要な外部アクセスを制限してください。

説明

セキュリティグループでサービスポートを0.0.0.0/0や::/0に許可すると、ネットワーク経路のある外部クライアントが接続を試みる可能性があります。ポート番号だけでは、サービスの用途や公開の適切さを判断できません。実際のサービス、プロトコル、接続が必要なクライアントを確認してください。

到達性は、ルーティング、リソースのアドレス、関連付けたセキュリティグループ、ホスト側の制御にも左右されます。ネットワークアクセスの制限は、サービスの認証やセキュリティ更新の代わりにはなりません。

想定される影響

  • 必要な範囲を超えるクライアントが、サービスの探索やログインを試みる可能性があります。
  • 到達可能なサービスに脆弱性や不要な管理機能があると、悪用の機会が増える可能性があります。

対処方法

  • 各ポートの実際のサービスとプロトコルを確認し、不要な受信ルールを削除してください。内部・管理用サービスは、承認済みアドレスや対応するセキュリティグループ参照に限定してください。
  • 公開サービスは必要なポートだけを許可し、認証とサービスのセキュリティ設定も確認してください。IPv4・IPv6、関連付けたすべてのグループ、ネットワーク経路を確認してください。
  • 設定する受信ルール全体とpurge_rulesを確認してください。設定に含まれない既存ルールが削除される場合があります。変更後に必要な接続が維持され、不要な外部アクセスが拒否されることをテストしてください。

例

実際のvpc_idと承認済みクライアントのallowed_client_cidrを指定し、実行環境のAWS認証を使ってください。二つは同じグループの構成案であり、TCPポート8001–8002がサービスに必要であることを前提としています。リソースの関連付けとルーティングは別途必要です。

変更前

yaml
- name: example ec2 group
  amazon.aws.ec2_security_group:
    name: example
    description: an example EC2 group
    vpc_id: "{{ vpc_id }}"
    region: eu-west-1
    rules:
      - proto: tcp
        from_port: 8001
        to_port: 8002
        cidr_ip: 0.0.0.0/0

すべてのIPv4送信元からTCPポート8001–8002を許可します。

変更後

サービスポートを維持したまま、送信元を承認済みクライアントの範囲に限定します。

yaml
- name: example ec2 group
  amazon.aws.ec2_security_group:
    name: example
    description: an example EC2 group
    vpc_id: "{{ vpc_id }}"
    region: eu-west-1
    rules:
      - proto: tcp
        from_port: 8001
        to_port: 8002
        cidr_ip: "{{ allowed_client_cidr }}"

その範囲に、アクセスが必要なアドレスだけが含まれることを確認してください。

参考資料