HTTPポート80がインターネットに公開されている

公開ウェブサービスの機密通信にはHTTPSを使用してください。

説明

セキュリティグループでTCPポート80をインターネット全体に許可すると、ネットワーク経路がある場合に外部からHTTPサービスへアクセスできます。HTTP自体は通信を暗号化しません。

想定される影響

平文で送受信する機密性の高いリクエストやレスポンスが、通信経路で漏えい・改ざんされるおそれがあります。

対処方法

公開サービスにHTTPSを設定し、不要なHTTPアクセスを削除してください。HTTPSへのリダイレクト用にHTTPを残す場合も、最初のHTTPリクエストは暗号化されません。

例

以下はHTTPの接続元だけを制限する例であり、HTTPSを有効にするものではありません。変数には承認されたIPv4とIPv6の範囲を指定し、TLSはアプリケーションやロードバランサーで別途設定してください。

変更前

hcl
resource "aws_security_group" "example" {
  name        = "allow_tls"
  description = "HTTP port open"

  ingress {
    description = "HTTP port open"
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
    ipv6_cidr_blocks = ["::/0"]
  }
}

変更後

hcl
resource "aws_security_group" "example" {
  name        = "allow_tls"
  description = "sample"

  ingress {
    description = "sample"
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = var.approved_ipv4_cidrs
    ipv6_cidr_blocks = var.approved_ipv6_cidrs
  }
}

参考資料