1
/
5

AWS Network Firewallを試してみた【株式会社ライトコード】

※弊社エンジニアの記事になります。

はじめに

今回はAWSサービスのNetwork Firewallについて触れていこうと思います。
Network Firewallは、ネットワークトラフィックを細かく制御するためのファイアウォールルールを設定できるサービスです。通常、AWSでトラフィックを制御する際にはセキュリティグループやWAFを使用しますが、FQDNを用いたトラフィック制御やより詳細な制御が必要な場合、Network Firewallが適しています。公式サイトでのユースケースは、このように紹介されています。

  1. インバウンドのインターネットトラフィックを検査
  2. アウトバウンドトラフィックをフィルタリングする
  3. インバウンドのインターネットトラフィックの侵入を防ぐ
  4. AWS Direct Connect と VPN のトラフィックを保護する

AWS Network Firewallの特徴

Network Firewallの主な特徴です。

ステートフルおよびステートレスのルールエンジン

  • ステートフルルールエンジン: このエンジンはネットワークトラフィックのパターンを把握し、過去のトラフィックとの関連性を認識します。例えば、あるウェブサイトと安全に接続が確立された後にのみ、情報の送受信を許可するようなルールを作ることができるということです。
  • ステートレスルールエンジン: こちらは各ネットワークパケットを個別に評価し、アクセスの許可や拒否を決定します。このタイプのルールは迅速で、IPアドレスやポート番号に基づいたフィルタリングに主に用いられます。こちらは特定のアドレスからのデータのみを受け入れるようなシンプルなルールに使用されます。

フルマネージド型のサービス

  • スケーラビリティ: AWS Network Firewallはフルマネージド型のサービスなので、ネットワークトラフィックの増減に応じて自動的にスケールアップ・ダウンします。このため、ユーザーはインフラストラクチャのスケーリングについて心配する必要がありません。
  • メンテナンスフリー: セキュリティの更新やパフォーマンスの向上に関する作業はAWSによって自動的に行われるのでメンテナンス作業に時間を割く必要がないです。

ネットワーク構成

AWS Network Firewallを導入する際、まず注意しなければならないのは、そのネットワーク構成が通常のものとは異なる点です!
Network Firewallのエンドポイントはサブネットに作成する必要があります。

通常のInternet Gateway 経由で利用する際の基本構成(Multi-AZ 構成)はこんな感じですよね。

Network Firewallを設置する場合は、下記のようにルーティングする必要があります。

引用:https://aws.amazon.com/jp/blogs/networking-and-content-delivery/deployment-models-for-aws-network-firewall/

新しい構成では、Firewall Subnet(ファイアウォール専用のサブネット)にエンドポイントを配置し、このエンドポイントをインターネットゲートウェイに接続します。
インターネットからの返信トラフィックは、インターネットゲートウェイに設定されたルーティングテーブルを経由して、ファイヤーウォールのElastic Network Interface(ENI)に送り返されます。

公式ドキュメントによると AWS Network Firewall を紐づけた(エンドポイントを作成した)サブネットごとに料金が発生するので注意が必要です。

この金額については後ほど詳しく説明しますが結構高いです。。。
今回は個人で検証するだけなのでシングルAZで進めていきます。

Network Firewallの基本構成要素

Network Firewallには3つの構成要素があります。
作成前に理解しておいた方が良いのでざっくり解説した後にそれぞれを実際に設定していきます。

Firewall(ファイアウォール本体)

Network Firewallの核となる部分です。サブネット内にFirewallエンドポイントが作成され、ネットワークのパケットがこのエンドポイントを通過するようになります。

Firewall Policy(ファイアウォールポリシー)

Rule Groupの集合体であり、特定のFirewallに適用されるポリシーです。
同じFirewall Policyを複数のFirewallに適用することが可能です。

Rule Group(ルールグループ)

Stateless Rule GroupとStateful Rule Groupの2種類があります。
複数の Rule group を Firewall policy と紐づけて利用します。
複数のRule GroupをFirewall Policyに紐付けて使用します。各Rule Group内では複数のルールを設定でき、トラフィックの制御を細かく行うことが可能です。

それではコンソール画面から順番に作成していきます!
Terraformでの構築する際のコードも一緒に記載します。

Rule Groupの作成

今回はStateful rule groupでドメイン名でトラフィックを許可するルールを作成します。
ステートフルルールグループで、ドメインリストを指定します。
ルール評価の順序は、厳密な順序にします。
厳密な順序を指定することで各ルールに優先度を決定して、優先度に従ってルールが評価されます。

適当に名前をつけて、キャパシティーを決定します。
このキャパシティは後から変更することができないので余裕を持って設定しましょう。
キャパシティの詳しい計算方法は省略しますが、ドメインリストの場合は下記で計算できます。

キャパシティ = ( ドメイン数 + 1 ) * プロトコル数

今回はテストなので50くらいで設定します。
キャパシティの上限は30000となっています。

指定したドメインの通信を許可します。
yahooとgoogleのドメインを登録しておきます。

これでrule groupの作成完了です。

## firewall rule groupの作成
locals {
  firewall_allow_fqdn_list = [
    ".google.com",
    ".yahoo.com",
  ]
}
 
resource "aws_networkfirewall_rule_group" "fqdn" {
  name        = "test-rule-group"
  description = "FQDN for allowing traffic"
  capacity    = 100
  type        = "STATEFUL"
  rule_group {
    rules_source {
      rules_source_list {
        generated_rules_type = "ALLOWLIST"
        target_types         = ["TLS_SNI", "HTTP_HOST"]
        targets              = [for fqdn in local.firewall_allow_fqdn_list : fqdn]
      }
    }
}

記事の続きは下のリンクをクリック!

https://rightcode.co.jp/blog/information-technology/aws-network-firewall-syain

【2024年卒】新卒採用エントリー開始しました!

特設ページはこちら:https://rightcode.co.jp/recruit/entry-2024

※募集は終了致しました。次回の募集までもうしばらくお待ちください

インターン募集!未経験ok、チャレンジ精神ある方求む

メディア運営:https://rightcode.co.jp/recruit/intern-media

社長と一杯飲みながらお話しませんか?(転職者向け)

特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk

もっとワクワクしたいあなたへ

現在、ライトコードでは「WEBエンジニア」「スマホアプリエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「エンジニアリングマネージャー」「営業」などを積極採用中です!

有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。

  • もっと大きなことに挑戦したい!
  • エンジニアとしてもっと成長したい!
  • モダンな技術に触れたい!

現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?

ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。

  • ライトコードの魅力を知っていただきたい!
  • 社風や文化なども知っていただきたい!
  • 技術に対して熱意のある方に入社していただきたい!

一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。

【コーポレートサイト】https://rightcode.co.jp/

【採用募集】https://rightcode.co.jp/recruit(こちらからの応募がスムーズ)

【wantedlyぺージ】https://www.wantedly.com/companies/rightcode

株式会社ライトコードでは一緒に働く仲間を募集しています
今週のランキング
株式会社ライトコードからお誘い
この話題に共感したら、メンバーと話してみませんか?