AWS Network Firewallを使用してのアクセス制限-ハンズオン-

はじめに

みなさまお疲れ様です。
コンソール画面が変わっていてびっくりしたこの頃です。
さて今回はEC2からのアウトバウンドをNFWで制限し、意図しないアクセスをできない様にしていきたいと思います。

構成図&目次

構成図

今回の構成図は下記になります。
プライベートサブネットにあるEC2から8.8.8.8のみにPINGが通るようにしたいと思います。
file

目次

  1. VPC周りの構築
  2. EC2の構築
  3. NFWの構築
  4. 検証
  5. まとめ

VPC周りの構築

最初に下記のVPC構成を構築します。

VPC:1
・IGWをアタッチする

プライベートサブネット(EC2用):1
・VPCエンドポイント2つ
com.amazonaws.region.ssm
com.amazonaws.region.ssmmessages
上記2つのセキュリティグループでEC2(EC2に設定したセキュリティグループ)からのインバウンドを許可する
・ルートテーブル
0.0.0.0/0:Network Firewall

パブリックサブネット(NFW用):1
・ルートテーブル
0.0.0.0/0:NATGW

パブリックサブネット(NAT用):1
・NATGW(Elastic IPを割り当てる)
・ルートテーブル
0.0.0.0/0:IGW

EC2の構築

今回EC2へのアクセスはSSMを使用していきます。

EC2の起動

EC2を起動します。
AMIは「Amazon Linux 2023 AMI」を使用。
file
ネットワーク設定は先ほど作成したEC2用のプライベートサブネットに配置。
NFWにて制御するので、セキュリティグループは下記に設定します。
・インバウンド
すべて許可
・アウトバウンド
すべて許可
その他は基本デフォルトで起動します。

SSM接続設定

まず、IAMコンソール画面に行きIAMロールの作成を行います。
①信頼されたエンティティを選択にて下記に設定
・信頼されたエンティティタイプ
AWSのサービスを選択
・ユースケース
EC2を選択
file
②許可を追加にて下記を設定
・許可ポリシー
AmazonSSMManagedInstanceCore (AWS管理)
file
③名前、確認、および作成の設定
ロール名やタグの設定を行う。
①~③まで完了したらロールを作成を押下し完了。

EC2へIAMロールのアタッチ

①先ほど起動したEC2を選択する
②「アクション」→「セキュリティ」→「IAMロールを変更」を選択
file
③先ほど作成したIAMロールを選択し、更新する
file
これで、プライベートサブネットにあるEC2にSSMを使用してアクセスが可能となります。

NFWの構築

次に、NFWの構築を行いEC2からのアウトバウンドの制御を行います。

ファイアウォールポリシーの作成

①VPCコンソール画面からファイアウォールポリシーを選択します。
file

②ポリシーの作成
「ファイアウォールポリシーを作成」を押下。
file
名前:任意
ストリーム例外ポリシー:ドロップ

③ルールグループを追加 – オプションにてアクションの設定
1,ステートレスデフォルトアクションにて下記の設定
フラグメント化されたパケット:すべてのパケットに同じアクションを使用する
ルールアクション:ステートフルルールグループに転送
デフォルトで上記の設定になっている。

2,ステートフルルール評価の順序とデフォルトのアクション
ルール評価の順序:厳密な順序
ドロップアクション – オプション:確立された接続のパケットをドロップ
デフォルトで上記の設定になっている。

④詳細設定を行う – オプション
デフォルトで次へ。

⑤TLS 検査設定を追加 – オプション
デフォルトで次へ。

⑥タグを追加 – オプション
タグを設定し次へ。

⑦確認および作成
問題ないことを確認して「ファイアウォールポリシーを作成」を押下。
ポリシーが完成する。

NFWポリシーにルールのアタッチ

今回はステートフルルールを作成する。
①作成したポリシーを選択。
②ステートフルルールグループの「アクション」→「ステートフルルールグループを作成を押下。
③ルールグループタイプを選択にて下記に設定し次へ。
ルールグループ形式:標準ステートフルルール
file
④ルールグループの説明を入力にて下記に設定し次へ。
名前:任意
キャパシティー:100(任意)
file
⑤ルールを設定にて下記に設定する。

  • ルール変数 – オプション:任意
  • IP セット参照 – オプション:任意
  • 標準ステートフルルール:下記
  • 地理的 IP フィルタリング:地理的 IP フィルタリングを無効にする
  • プロトコル:ICMP
  • 送信元:プライベートサブネットのCIDR
  • 送信先:8.8.8.8
  • アクション:パス
    ルールの追加を押下して、ルール欄に表示されたら次へ。
    ⑥詳細設定を行う – オプションはデフォルトで次へ。
    ⑦タグを追加 – オプションでタグを作成して次へ。
    ⑧確認して作成で問題なければ「ルールグループを作成」を押下して完了。

NFWのデプロイ

最後にNFWをデプロイしていきます。
ファイアウォールコンソール画面から、「ファイアウォールを作成」を押下。
①ファイアウォールの説明にて下記に設定し次へ。
ファイアウォール名:任意
②VPC とサブネットの設定にて下記に設定し次へ。
VPC:最初に作成したVPC
ファイアウォールサブネット:最初に作成したNFW用サブネット(IPアドレスタイプ:IPV4)
file
③詳細設定を行う – オプションはデフォルトで次へ。
④ファイアウォールポリシーを関連付けるにて下記に設定し次へ。
ファイアウォールポリシー:既存のファイアウォールポリシーを関連付けを選択。先ほど作成したポリシーを選択し次へ。
file
⑤タグを追加 – オプションにて任意のタグを設定し次へ。
⑥確認して作成で問題なければ「ファイアウォールを作成」を押下して完了。

検証

pingコマンドで8.8.8.8以外に疎通できないかを確認してみましょう。
作成したEC2を選択します。
「接続」→「セッションマネージャー」タブにて「接続」を押下。
別タブでSSMでCUI画面が開きます。
ping 8.8.8.8
上記を流すと下記のように疎通します。
file

次は8.8.8.8以外(1.1.1.1)に疎通できないかを確認していきましょう。
ping 1.1.1.1
上記を流すと下記のように疎通しません。
file

これで今回想定していた構成はできているということになります。
他にも試してい見たい方は、ドメインでの制御やステートレスでの制御を行ってみてはいかがでしょうか。

まとめ

今回はNFWを用いて、EC2のアクセス制御を行いました。
NFWを使用することで、ステートフルやステートレスでの柔軟なアクセス制御ができます。
今回は検証のみだったので、8.8.8.8のみをステートフルで制御しましたがドメインでの制御も有効なのでぜひ試してみてください。

Last modified: 2024-12-01

Author