説明
HTTP で一般的に使われる TCP 80 をセキュリティグループで 0.0.0.0/0 に許可すると、すべての IPv4 送信元がそのルールの許可対象になります。実際のサービス接続には、公開アドレス、ルーティング、サービスの待ち受け設定なども必要です。公開 Web サイトや HTTPS へのリダイレクトでは意図した構成の場合もありますが、内部 API や管理画面を同じ範囲に公開する必要はありません。
HTTP は通信を暗号化しません。公開の有無にかかわらず、機密情報には HTTPS を使用してください。リダイレクトだけでは、最初の HTTP リクエストは保護されません。
想定される影響
- サービスに到達できる外部クライアントが、スキャンやアクセスを試みる可能性があります。
- 弱い認証やサービスの脆弱性と組み合わさると不正アクセスにつながり、HTTP の通信内容は経路上で漏えいや改ざんを受ける可能性があります。
対処方法
- 公開が不要なら、実際にサービスを利用するクライアントや管理接続の送信元に許可を限定してください。
- 公開 Web サービスには HTTPS を適用し、必要に応じてロードバランサーや WAF を使用してください。これらはアプリケーションの認証や認可を代替するものではありません。
- 関連付けられたすべてのセキュリティグループと広いポート範囲のルールを確認し、管理アクセスを利用者の通信から分離してください。
例
VPC と CIDR は実際の環境の値に置き換えてください。サービスへのセキュリティグループの関連付けは省略しています。
変更前
yaml
- name: 보안 그룹 생성
amazon.aws.ec2_group:
name: web-open
description: open web security group
vpc_id: vpc-12345
rules:
- proto: tcp
ports: 80
cidr_ip: 0.0.0.0/0
すべての IPv4 送信元から TCP 80 を許可します。
変更後
yaml
- name: 보안 그룹 생성
amazon.aws.ec2_group:
name: web-internal
description: restricted web security group
vpc_id: vpc-12345
rules:
- proto: tcp
ports: 80
cidr_ip: 10.0.0.0/16
許可する送信元を指定したプライベート CIDR に限定します。アクセスが必要なクライアントの範囲に合うか確認し、HTTPS も別途設定してください。グループ名が変わるため、新しいグループを関連付け、既存の広い許可も削除する必要があります。