説明
必要以上に広い TCP・UDP の送信ポートを許可すると、未承認のサービスへ接続する機会が増えます。必要なポートが1つなら、FromPort と ToPort を同じ値にしてください。
連続する複数のポートが必要なサービスには、範囲の指定が適切です。すべてのルールを単一ポートにする必要はありません。ICMP では両フィールドがタイプとコードを表すため、ポート範囲とは分けて扱ってください。
想定される影響
- 侵害されたワークロードが、不要に許可されたポートで通信やデータ送信を行うおそれがあります。
- 要件を確認せずに範囲を縮小すると、正常なサービス接続が失敗する可能性があります。
対処方法
- 接続先サービスのポートを確認し、必要な単一 TCP・UDP ポートまたは最小の範囲を許可してください。
- 宛先と他の関連セキュリティグループの許可も制限してください。
- 依存先への接続を試験してください。セキュリティグループはステートフルなので、許可された受信接続への応答のために全送信ポートを開く必要はありません。
例
SourceSG と必須の宛先を省略したポート設定の抜粋です。使用時には宛先 CIDR、プレフィックスリスト、セキュリティグループのいずれか1つを指定してください。
変更前
yaml
Resources:
OutboundRule:
Type: AWS::EC2::SecurityGroupEgress
Properties:
IpProtocol: tcp
FromPort: 0
ToPort: 65535
GroupId: !GetAtt SourceSG.GroupId
宛先を補うと、全 TCP ポートを許可します。
変更後
yaml
Resources:
OutboundRule:
Type: AWS::EC2::SecurityGroupEgress
Properties:
IpProtocol: tcp
FromPort: 443
ToPort: 443
GroupId: !GetAtt SourceSG.GroupId
TCP 443 に範囲を絞ります。必要なサービスがそのポートを使うことを確認し、アプリケーションの TLS と認証も構成してください。