説明
複数のサービスポートをすべての送信元に許可すると、不要なサービスへの接続試行も許す可能性があります。実際のリスクは、関連付けたグループ、稼働中のサービス、ルーティング、認証によって異なります。業務上必要なポート範囲もあるため、サービスの用途と承認済みクライアントを基準に確認してください。
TCP・UDPのポートとICMPのタイプ・コードは意味が異なります。全プロトコルを許可するルールでは、ポート設定でアクセスを限定できない場合があります。
想定される影響
- 外部からの経路があると、不要に開いたサービスが探索や脆弱性の悪用の対象になる可能性があります。
- 一つのルールを狭めても、別のグループによって不要なアクセスが引き続き許可される場合があります。
対処方法
- 必要なサービス、プロトコル、ポート、クライアントを確認してください。公開サービスは必要なポートだけを開き、内部・管理用サービスは承認済みアドレスやセキュリティグループに限定してください。
- 関連付けたすべてのグループを確認し、維持するルール全体を定義してください。同じアクセスを複数のルールに分けるだけでは範囲は狭まりません。
- 既存ルールの削除設定を確認し、変更後に実際のクライアント経路から必要な接続と遮断すべき接続をテストしてください。
例
実際のvpc_idと承認済み管理クライアントの範囲を示すadmin_cidrを指定し、実行環境のAWS認証を使用してください。二つは同じグループを管理する別々の構成案で、リソースとの関連付けやインターネット経路は別途必要です。
変更前
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: 80
to_port: 82
cidr_ip: 0.0.0.0/0
すべてのIPv4送信元からTCPポート80–82へのアクセスを許可します。サービスに不要なポートが含まれていないか確認してください。
変更後
yaml
- name: example ec2 group v2
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: 80
to_port: 80
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 22
to_port: 22
cidr_ip: "{{ admin_cidr }}"
公開範囲をTCPポート80に絞り、SSHは承認済みの管理用アドレスに限定します。TCPポート80の公開が必要か、admin_cidrの範囲が適切かをそれぞれ確認してください。