説明
全 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 だけを許可します。許可する各クライアントにアクセスが必要か確認し、転送データに必要な暗号化も構成してください。