Tech Hotoke Blog

IT観音とは私のことです。

【AWS】 EC2インスタンスにHTTP接続しようとしたらできなかったのでなんとかした。

f:id:TechHotoke:20220101162410p:plain

利用サービス

  • VPC
  • EC2
  • CloudWatch

現状

  • セキュリティグループは8080ポート(今回接続するアプリケーションのポート)に対して、全ての通信を許可

f:id:TechHotoke:20220101144039p:plain

f:id:TechHotoke:20220101144140p:plain

  • 割り当てられているサブネットはパブリックなインターネットに公開されている

f:id:TechHotoke:20220101144436p:plain

  • SSH接続は行えている

対応

VPCフローログでログを確認する

VPC フローログとは

VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報をキャプチャできるようにする機能です。フローログデータは Amazon CloudWatch Logs または Amazon S3 に発行できます。 引用:

VPC フローログを使用した IP トラフィックのロギング - Amazon Virtual Private Cloud

今回はCloudWatchにログを出力するようにしていきたいと思います。

  • ナビゲーションペインからCloudWacthを選択
  • ロググループを作成
  • 適当な命名とタグ付けを行う
  • 監視対象とするVPCに移動
  • フローログタブから、フローログを作成ボタンを押下
  • 適当な名称などをつける
  • IAM ROLEを選択する際に新規作成する(補完で表示されるロールの設定値を見てみるとlogsに対する許可が無いっぽいので一応)

以下公式から引用。これらが最低限必要な権限

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}   

デフォルトの補完で出てくるのは以下のロール JSONを確認すると権限が無いか、部分的に許可されているっぽいのが分かる f:id:TechHotoke:20220101153100p:plain

  • タグなど必要な情報を追加したら作成
  • EC2にSSHでアクセスしておく
  • 添付画像のようにロググループに対してログが生成される f:id:TechHotoke:20220101154153p:plain

ログの検証

  • REJECTされている通信があったので、フィルタリングを行う
  • 10.0.0.20ポートにアクセスしようとしているのが原因っぽい f:id:TechHotoke:20220101155933p:plain
  • 10.0.0.20はEC2インスタンスに割り当てられているプライベートIPアドレスということを確認
  • 再度インスタンスを再起動し、EC2にアクセス
  • 繋がった。。。

モヤっと解決 何が原因だったのでしょう・・・ とりあえず、 VPCのフローログを検証することでデバッグできるそうなので、その方法の備忘録として。