説明
ElastiCache のデフォルトポートは通常のサービス設定であり、それ自体が脆弱性ではありません。ポートの変更で単純な探索を減らせる場合はありますが、アクセス制御や認証の代わりにはなりません。
セキュリティグループとネットワーク経路で接続元を制限し、エンジンが対応する認証と通信の暗号化を適用する必要があります。
想定される影響
- 不要なクライアントから接続でき、認証や権限管理が不十分な場合、データの参照・変更やサービス妨害につながる可能性があります。
- ポートだけを変更しても権限は変わらず、クライアント設定が一致しなければ接続が切れる可能性があります。
対処方法
- 必要なクライアントだけが接続できるよう、セキュリティグループとネットワーク経路を制限してください。
- 利用するエンジンが対応する認証と通信の暗号化を設定してください。
- 運用方針上ポートの変更が必要なら、対応する値を選び、変更セット、クライアント、セキュリティグループ、監視設定を併せて確認してください。
例
以下は従来の Redis 構成でポートの違いを示す例です。適用前に、対応するエンジンバージョンとノードタイプ、別途定義するサブネットグループとセキュリティグループを確認してください。
変更前
yaml
Resources:
BasicReplicationGroup:
Type: 'AWS::ElastiCache::ReplicationGroup'
Properties:
AutomaticFailoverEnabled: true
CacheNodeType: cache.r3.large
CacheSubnetGroupName: !Ref CacheSubnetGroup
Engine: redis
EngineVersion: '3.2'
NumNodeGroups: '2'
ReplicasPerNodeGroup: '3'
Port: 6379
PreferredMaintenanceWindow: 'sun:05:00-sun:09:00'
ReplicationGroupDescription: A sample replication group
SecurityGroupIds:
- !Ref ReplicationGroupSG
SnapshotRetentionLimit: 5
SnapshotWindow: '10:00-12:00'
デフォルトポート 6379 を使用します。この値だけでは接続できる範囲は分かりません。
変更後
yaml
Resources:
BasicReplicationGroup:
Type: 'AWS::ElastiCache::ReplicationGroup'
Properties:
AutomaticFailoverEnabled: true
CacheNodeType: cache.r3.large
CacheSubnetGroupName: !Ref CacheSubnetGroup
Engine: redis
EngineVersion: '3.2'
NumNodeGroups: '2'
ReplicasPerNodeGroup: '3'
Port: 6380
PreferredMaintenanceWindow: 'sun:05:00-sun:09:00'
ReplicationGroupDescription: A sample replication group
SecurityGroupIds:
- !Ref ReplicationGroupSG
SnapshotRetentionLimit: 5
SnapshotWindow: '10:00-12:00'
ポートを 6380 に変更します。認証やセキュリティグループの許可範囲は、この変更では強化されません。