説明
セキュリティグループでサービスポートを0.0.0.0/0や::/0に許可すると、ネットワーク経路のある外部クライアントが接続を試みる可能性があります。ポート番号だけでは、サービスの用途や公開の適切さを判断できません。実際のサービス、プロトコル、接続が必要なクライアントを確認してください。
到達性は、ルーティング、リソースのアドレス、関連付けたセキュリティグループ、ホスト側の制御にも左右されます。ネットワークアクセスの制限は、サービスの認証やセキュリティ更新の代わりにはなりません。
想定される影響
- 必要な範囲を超えるクライアントが、サービスの探索やログインを試みる可能性があります。
- 到達可能なサービスに脆弱性や不要な管理機能があると、悪用の機会が増える可能性があります。
対処方法
- 各ポートの実際のサービスとプロトコルを確認し、不要な受信ルールを削除してください。内部・管理用サービスは、承認済みアドレスや対応するセキュリティグループ参照に限定してください。
- 公開サービスは必要なポートだけを許可し、認証とサービスのセキュリティ設定も確認してください。IPv4・IPv6、関連付けたすべてのグループ、ネットワーク経路を確認してください。
- 設定する受信ルール全体と
purge_rulesを確認してください。設定に含まれない既存ルールが削除される場合があります。変更後に必要な接続が維持され、不要な外部アクセスが拒否されることをテストしてください。
例
実際のvpc_idと承認済みクライアントのallowed_client_cidrを指定し、実行環境のAWS認証を使ってください。二つは同じグループの構成案であり、TCPポート8001–8002がサービスに必要であることを前提としています。リソースの関連付けとルーティングは別途必要です。
変更前
yaml
- name: example ec2 group
amazon.aws.ec2_security_group:
name: example
description: an example EC2 group
vpc_id: "{{ vpc_id }}"
region: eu-west-1
rules:
- proto: tcp
from_port: 8001
to_port: 8002
cidr_ip: 0.0.0.0/0
すべてのIPv4送信元からTCPポート8001–8002を許可します。
変更後
サービスポートを維持したまま、送信元を承認済みクライアントの範囲に限定します。
yaml
- name: example ec2 group
amazon.aws.ec2_security_group:
name: example
description: an example EC2 group
vpc_id: "{{ vpc_id }}"
region: eu-west-1
rules:
- proto: tcp
from_port: 8001
to_port: 8002
cidr_ip: "{{ allowed_client_cidr }}"
その範囲に、アクセスが必要なアドレスだけが含まれることを確認してください。