全インターネットから全ポートを許可するセキュリティグループ

全アドレスから全ポートやプロトコルを許可せず、サービスに実際に必要な接続だけを許可してください。

説明

全 IPv4(0.0.0.0/0)または IPv6(::/0)アドレスから全ポートや全プロトコルを許可すると、外部アクセスが不要なサービスまで範囲に含まれる場合があります。全 TCP ポートの許可と全プロトコルの許可は異なりますが、どちらも必要以上のアクセスを与える可能性があります。

セキュリティグループの許可は合算されます。一つのルールを限定しても、他の関連グループが同じ接続を許可している場合があります。実際の接続には、アドレス、経路、ホストファイアウォール、待ち受けサービスも関係します。

想定される影響

  • 到達可能な一時サービス、管理ツール、デバッグポートが、外部からの接続試行にさらされる可能性があります。
  • 不要なサービスに脆弱性があると、侵害やデータ漏えいにつながる可能性があります。

対処方法

  • 必要な送信元、プロトコル、ポートを確認し、無制限のルールを必要最小限の範囲へ変更してください。
  • 内部サービスは承認済みプライベートアドレスや対応するセキュリティグループ参照に限定し、管理通信を別途制御してください。
  • 全関連グループの IPv4・IPv6 ルールを確認してください。変更後に必要な通信が成功し、不要な接続が拒否されることをテストしてください。

例

実際の VPC を指定し、後の 10.10.10.0/24 を実際に許可するクライアント範囲に置き換えてください。インスタンスの関連付け、サービス、ネットワーク経路は別途必要です。TCP 80 を許可するだけでは HTTP サービスや TLS は構成されません。

変更前

yaml
Parameters:
  myVPC:
    Type: AWS::EC2::VPC::Id
Resources:
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow all traffic from anywhere
      VpcId:
        Ref: myVPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 0
          ToPort: 65535
          CidrIp: 0.0.0.0/0

全 IPv4 アドレスから全 TCP ポート範囲を許可します。UDP など他のプロトコルを許可するルールではありません。

変更後

yaml
Parameters:
  myVPC:
    Type: AWS::EC2::VPC::Id
Resources:
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow only required web traffic
      VpcId:
        Ref: myVPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 10.10.10.0/24

指定した内部範囲から TCP 80 だけを許可します。許可する各クライアントにアクセスが必要か確認し、転送データに必要な暗号化も構成してください。

参考資料