説明
EC2のセキュリティグループで管理ポートやRedisなどのデータサービスを0.0.0.0/0または::/0に許可すると、すべてのアドレスがそのルールの送信元範囲に含まれます。実際のインターネット接続には、アドレス、経路、サービスの待ち受け状態、他のネットワーク制御も関係します。
内部サービスに必要な接続だけを許可し、認証と暗号化も別途構成してください。セキュリティグループの許可は、データへのアクセス権限を付与するものではありません。
想定される影響
- 到達可能なサービスに対し、外部クライアントからの認証攻撃や脆弱性を悪用する試行が増える可能性があります。
- 認証の弱さやサービスの脆弱性が重なると、情報漏えいやサービス中断につながる可能性があります。
対処方法
- 全IPv4・IPv6アドレスに管理用・内部サービス用ポートを許可するルールを削除するか、実際のクライアントに限定してください。
- 対応する環境では、アプリケーションのセキュリティグループ参照やプライベートな管理経路を使用してください。関連付けられたすべてのグループの追加許可も確認してください。
- 変更後に必要な接続と不要な接続の拒否をテストし、認証、パッチ、暗号化も確認してください。
例
同じVPC内のサブネットと互換性のあるAMIを指定してください。例はセキュリティグループの関連付けを示すもので、Redisはインストールしません。10.0.20.0/24を実際のアプリケーションの範囲に置き換え、必要な経路と送信ルールも別途構成してください。
変更前
yaml
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
SubnetId:
Type: AWS::EC2::Subnet::Id
ImageId:
Type: AWS::EC2::Image::Id
Resources:
UnsafeSecGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Allow Redis from the internet
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 6379
ToPort: 6379
CidrIp: 0.0.0.0/0
EC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref ImageId
SubnetId: !Ref SubnetId
InstanceType: t3.medium
SecurityGroupIds:
- !Ref UnsafeSecGroup
すべてのIPv4アドレスからTCP 6379への接続を許可します。サービスに到達できる場合、不要な接続試行を受ける可能性があります。
変更後
yaml
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
SubnetId:
Type: AWS::EC2::Subnet::Id
ImageId:
Type: AWS::EC2::Image::Id
Resources:
SafeSecGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Allow Redis only from the application network
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 6379
ToPort: 6379
CidrIp: 10.0.20.0/24
EC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref ImageId
SubnetId: !Ref SubnetId
InstanceType: t3.medium
SecurityGroupIds:
- !Ref SafeSecGroup
同じポートの送信元をアプリケーションの範囲に限定します。その範囲のすべてのクライアントに接続が必要かも確認してください。