説明
用途を確認できないポートや広いポート範囲を全 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 と認証設定を検証してください。