外部に許可されたポート範囲の確認

外部に許可したポートの実際の用途を確認し、必要なサービスと送信元だけを許可してください。

説明

用途を確認できないポートや広いポート範囲を全 IPv4・IPv6 アドレスに許可すると、意図しないサービスまで到達可能になる場合があります。非標準ポート自体が脆弱なわけではなく、よく知られたポート番号を使うだけで安全になるわけでもありません。実際のサービス、プロトコル、公開の必要性で判断してください。

想定される影響

  • 到達可能な一時サービスやデバッグ機能が、外部接続や脆弱性を悪用する試行にさらされる可能性があります。
  • 所有者や目的が不明なルールが残り、変更管理やインシデント対応が難しくなる場合があります。

対処方法

  • 各ポートのサービス所有者と通信目的を確認し、不要なルールを削除してください。必要な範囲は実際のサービス要件に限定してください。
  • 承認済み送信元だけを許可し、管理接続はプライベート経路や管理されたサービスに限定してください。IPv4・IPv6 の両方を確認してください。
  • 実際の待ち受けサービス、全関連セキュリティグループ、ホスト制御を確認してください。必要な通信が成功し、不要な接続が拒否されることをテストしてください。

例

実際の VPC ID を指定してください。インスタンスの関連付けとサービス設定は含みません。この比較は TCP 23~25 が不要で、内部 HTTPS アプリケーションだけが必要な場合です。後の IPv4 範囲を実際のクライアントへ置き換え、IPv6 クライアントも必要なら送信元を限定した別ルールを構成してください。

変更前

yaml
Parameters:
  VpcId:
    Type: AWS::EC2::VPC::Id
Resources:
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Unrestricted source access to a port range
      VpcId: !Ref VpcId
  PortIngress:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: !Ref InstanceSecurityGroup
      IpProtocol: tcp
      FromPort: 23
      ToPort: 25
      CidrIpv6: "::/0"

全 IPv6 アドレスから TCP 23~25 を許可します。一般に Telnet で使う 23 と SMTP の 25 を含みますが、実際のサービスは別途確認が必要です。

変更後

yaml
Parameters:
  VpcId:
    Type: AWS::EC2::VPC::Id
Resources:
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow only a required application port
      VpcId: !Ref VpcId
  PortIngress:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: !Ref InstanceSecurityGroup
      IpProtocol: tcp
      FromPort: 443
      ToPort: 443
      CidrIp: 10.10.10.0/24

指定した内部 IPv4 範囲から TCP 443 だけを許可します。ポートを変えるだけでは既存サービスは HTTPS にならないため、実際の TLS と認証設定を検証してください。

参考資料