こんにちは、SCSKでAWSの内製化支援『テクニカルエスコートサービス』を担当している貝塚です。
もっとNetwork Firewallの勉強がしたいのです
最近、AWS Network Firewallを触る機会が増えています。
インターネットを検索すれば、Transit Gatewayと併用して、複数のVPC間通信やオンプレミスとの通信、インターネットとの通信など、Transit Gatewayを通るすべての通信をNetwork Firewallで検査するInspection VPCの構築方法を説明したAWSの記事を読むことができます。ClassmethodさんやサーバーワークスさんなどのブログでもNetwork Firewallに関する記事を見つけることができます。もちろんAWS公式のマニュアルもあり、眺めていると日々項目が充実していくのが分かります。
それでも!!
Network Firewallに関するノウハウを知ることのできる記事が圧倒的に足りません[1]。設定項目の説明は公式マニュアルを見れば書いてあるかもしれませんが、こういうユースケースの時はこの設定を選ぶのがよい、こういう設定をするとこういうことができるのでおすすめです、などの情報が分かりやすく(重要)説明された記事は、実際にNetwork Firewallを構築して運用してみようという人にとって十分なものとは言い難いと感じます。
というわけでそれでも何か情報が落ちていないかと探していると…… AWS re:Inforce 2023 でそれなりの数のNetwork Firewallに関するセッションがあったことが分かりました。
早速、動画を視聴してみる、のです、が……私、英語、聞き取れないんですよね。最近のYouTube動画は英語字幕もついていますが、スピーカーの速度に合わせて字幕を読みつつスライドも読むとなるとまったく追いつきません。これを丁寧に繰り返し観ていたら、時間がいくらあっても足りない……
やりたいこと
そこで、考えました。生成AIを使って効率よくAWS Network Firewallの勉強できないか、と。生成AIにはハルシネーションと呼ばれる、事実に基づかない嘘情報を返す現象があることはよく知られていますので、生成AIにただ質問するだけではろくな成果が得られないであろうことは火を見るよりも明らかです。
しかし幸いにもAWSでは昨年11月にKnowledge Base for Amazon BedrockというRAG(Retrieval-Augmented Generation/検索拡張生成)のサービスが一般提供を開始していますので、動画の字幕情報やプレゼンテーションのスライドを登録してやれば、内容を要約してもらったり、要約からさらに知りたい部分を詳しく説明してもらったりすることが可能なのではないでしょうか……?
データの準備
先ほどの、AWS re:Inforce 2023のNetwork and Infrastructure Security関連の動画一覧からNetwork Firewallに関係ありそうな動画を見繕い、字幕をダウンロードします。字幕のダウンロードにはこちらのサイト(DownSub.com)を利用しました。(特におすすめサイトというわけでもないので、ご利用は自己責任でお願いします)。字幕に表示時刻を併記したsrtという形式のファイルもダウンロードできますが、あまりメリットを得られなさそうだったのでtxt形式でダウンロードしています。
ついでに動画に対応するプレゼン資料(PDF)もダウンロードし、他にもSecurity JAWSの日本語のプレゼン資料なども加えました。Knowledge Base for Amazon Bedrockに登録した動画字幕およびプレゼン資料は下記一覧の通りです。この一覧も念のためテキストファイルにしてKnowledge Baseに登録しています。
Title: Security-JAWS DAYS - AWS Network Firewall && DNS Firewallで解決できること YouTube URL: PDF URL: https://speakerdeck.com/tsumita/20230826-securityjaws-nwfw-dnsfw Title: AWS re:Inforce 2022 - Deploying AWS Network Firewall at scale: athenahealth's journey (NIS308) YouTube URL: https://www.youtube.com/watch?v=VMVeTvX4OLw PDF URL: https://d1.awsstatic.com/events/aws-reinforce-2022/NIS308_Deploying-AWS-Network-Firewall-at-scale-athenahealths-journey.pdf Title: AWS re:Inforce 2023 - Policy and Suricata compatible rule creation for AWS Network Firewall (NIS308) YouTube URL: https://www.youtube.com/watch?v=67pVOv3lPlk PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS308_Policy-and-Suricata-compatible-rule-creation-for-AWS-Network-Firewall.pdf Title: AWS re:Inforce 2023 - How AWS threat intelligence becomes managed firewall rules (NIS301) YouTube URL: https://www.youtube.com/watch?v=oURlWfLjdqE PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS301_How-AWS-threat-intelligence-becomes-managed-firewall-rules.pdf Title: AWS re:Inforce 2023 - Outbound security implementation with AWS Network Firewall & Route 53 (NIS305) YouTube URL: https://www.youtube.com/watch?v=9zDk-EaMUpc PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS305_Outbound-security-implementation-with-AWS-Network-Firewall-and-Route-53.pdf Title: AWS re:Inforce 2023 - Build secure global connectivity with AWS (NIS302) YouTube URL: https://www.youtube.com/watch?v=4pywOCWTXyQ PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS302_Build-secure-global-connectivity-with-AWS.pdf Title: AWS re:Inforce 2023 - Advanced approaches to traffic inspection & network diagnosis w/ AWS (NIS304) YouTube URL: https://www.youtube.com/watch?v=c3xzxvyD14U PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS304_Advanced-approaches-to-traffic-inspection-and-network-diagnosis-with-AWS.pdf Title: AWS re:Inforce 2023 - Achieving Zero Trust with AWS application networking (NIS307) YouTube URL: https://www.youtube.com/watch?v=PiCtF_XbZTM PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS307_Achieving-Zero-Trust-with-AWS-application-networking.pdf Title: AWS re:Inforce 2023 - Firewalls, and where to put them (NIS306) YouTube URL: https://www.youtube.com/watch?v=lTJxWAiQrHM PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS306_Firewalls-and-where-to-put-them.pdf Title: AWS re:Inforce 2023 - Setting up AWS Verified Access (NIS223) YouTube URL: https://www.youtube.com/watch?v=GaDqIZ5bQBc PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS223_Setting-up-AWS-Verified-Access.pdf Title: AWS re:Inforce 2023 - Use AWS Network Firewall for enterprises: Egress & ingress inspection (NIS222) YouTube URL: https://www.youtube.com/watch?v=lDavmXWdBTI PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS222_Use-AWS-Network-Firewall-for-enterprises-Egress-and-ingress-inspection.pdf Title: AWS re:Inforce 2023 - Deploy distributed egress policies with a central AWS Network Firewall (NIS233) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS233_Deploy-distributed-egress-policies-with-a-central-AWS-Network-Firewall.pdf Title: AWS re:Inforce 2023 - Enhance network security by integrating with AWS Security Hub (NIS251) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS251_Enhance-network-security-by-integrating-with-AWS-Security-Hub.pdf Title: AWS re:Inforce 2023 - Managing multi-Region & multi-account AWS Network Firewall resources (NIS341) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS341_Managing-multi-Region-and-multi-account-AWS-Network-Firewall-resources.pdf Title: AWS re:Inforce 2023 - Codify your network security compliance at scale with AWS Network Firewall and IaC (NIS342) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS342_Codify-your-network-security-compliance-at-scale-with-AWS-Network-Firewall-and-IaC.pdf Title: AWS re:Inforce 2023 - AWS Network Firewall & DNS Firewall security in multi-VPC environments (NIS373) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS373_AWS-Network-Firewall-and-DNS-Firewall-security-in-multi-VPC-environments.pdf Title: AWS re:Inforce 2023 - Stopping zero-day attacks and ransomware with effective egress controls (NIS374) YouTube URL: PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS374_Stopping-zero-day-attacks-and-ransomware-with-effective-egress-controls.pdf
Knowledge Baseの作成
字幕テキストファイル、プレゼン資料、資料一覧をひとつのS3バケットに放り込み、対応リージョン(今回はオレゴンを利用)のAmazon Bedrock → ナレッジベース から、ナレッジベースを作成します。ナレッジベースの作成は、下記記事を参考にしました。
ナレッジベースに質問してみる
今回は私自身がNetwork Firewallの勉強をできればそれでよいので、ナレッジベースに付属しているテスト画面で早速質問を入れてみます。基盤モデルにはAnthropic Claude 2.1を使用しました。また、ほぼ英語しか入っていないナレッジベースに日本語で質問しても翻訳の問題に悩まされそうなので、英語で質問して英語で回答してもらっています。
ネットワークファイアウォールのベストプラクティスを聞く
Network Firewallの設計・設定のベストプラクティスを10個挙げてもらうことにしました。実は事前に(聞き取れないのを頑張って)『Policy and Suricata compatible rule creation for AWS Network Firewall (NIS308)』の動画を視聴しており、その中で10個のベストプラクティスが紹介されていることを知っていました。ですので、AIが回答しやすい、易しい質問のはずです。
回答がこちら。
わりとしっかり回答できている感じがしますね。回答をどのデータソースから引っ張ってきたのか分かるように注がつくのもありがたいです。ただ、データソースの一覧を見ていると、字幕ファイルがひとつもないことが分かりました。
……調べてみるとPDFの方に10個のベストプラクティスを一覧にしたスライドがあり、回答はそのスライドをまるまる引っ張ってきているだけでした。……まあ今回の質問はPDFの方に「正解」がそのまま書かれているわけですから、仕方ない。
返してきたベストプラクティスのうちのひとつについて詳しく説明するようにお願いしてみます。
詳細を尋ねる
ちゃんと説明にはなっています。ただやっぱり気になるのは、データソースがPDFしかありません。字幕ファイルが仕事してくれない……。他にもいくつか詳細を聞いてみましたが、データソースになるのはPDFばかりで、字幕ファイルが出てきません。
ちなみに、PDFをナレッジベースに入れる前(字幕ファイルしかないとき)に同じ質問(ベストプラクティス10個)をしたらどうなったかというと、こちら。
10個挙げてくれていないし、回答も嘘ではないけれども特に意味もない情報という感じです。動画字幕から適切な情報を得るのは難しいのかな??
ここに至り、複数の動画字幕/プレゼン資料から適切な情報を抜き出してくてくれると期待するのはあきらめて、動画を指定して内容の要約をやってもらうことにします。
動画の要約を作成する
ナレッジベースに登録したうちのひとつのプレゼンテーションを指定して要約を作成してもらうことにします。
字幕ファイルの冒頭にプレゼンテーションタイトルを追記しておいたので、それを足掛かりにうまく要約してくれるかもしれません……!
……唯一の引用マークは、私が作った動画一覧を参照しています……。これでまともな要約が作れるわけがない……と思いきや、要約自体はそこまで悪くない感じがします。
BedrockにはretrieveというAPIがあり、プロンプトを投げるとナレッジベースから情報を検索し、検索結果と関連度スコアを表示してくれます。これを使って、いったいどういう情報を使って答えてくれたのか確認してみましょう。
以下、APIのレスポンスです。
{ "ResponseMetadata": { (略) "retrievalResults": [ { "content": { "text": "v=oURlWfLjdqE\r PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS301_How-AWS-threat-intelligence-becomes-managed-firewall-rules.pdf\r \r Title: AWS re:Inforce 2023 - Outbound security implementation with AWS Network Firewall & Route 53 (NIS305)\r YouTube URL: https://www.youtube.com/watch?v=9zDk-EaMUpc\r PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS305_Outbound-security-implementation-with-AWS-Network-Firewall-and-Route-53.pdf\r \r Title: AWS re:Inforce 2023 - Build secure global connectivity with AWS (NIS302)\r YouTube URL: https://www.youtube.com/watch?v=4pywOCWTXyQ\r PDF URL: https://d1.awsstatic.com/events/Summits/awsreinforce2023/NIS302_Build-secure-global-connectivity-with-AWS.pdf\r \r Title: AWS re:Inforce 2023 - Advanced approaches to traffic inspection & network diagnosis w/ AWS (NIS304)\r YouTube URL: https://www.youtube.com/watch?" }, "location": { "type": "S3", "s3Location": { "uri": "s3://xxxxxxxxxxxxxxxx/KnowlegeBase/file_list.txt" } }, "score": 0.80244076 }, (略) { "content": { "text": "\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Codify your network security compliance at scale with AWS Network Firewall and IaC Adil Kazi (he/him) N I S 3 4 2 Cloud Infrastructure Architect AWS Pradeep Kumar (he/him) Cloud Infrastructure Architect AWS \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Problem statement \u2013 Why? Solution \u2013 What and how? Let\u2019s code Agenda \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Prerequisites \u2022 Terraform installed \u2022 AWS Organizations \u2022 AWS Config enabled \u2022 AWS Resource Access Manager (AWS RAM) enabled \u2022 Management AWS account with an IAM user that has the appropriate permissions \u2022 Spoke AWS account with an AWS Network Firewall policy deployed \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved." }, "location": { "type": "S3", "s3Location": { "uri": "s3://xxxxxxxxxxxxxxxx/KnowlegeBase/NIS342_Codify-your-network-security-compliance-at-scale-with-AWS-Network-Firewall-and-IaC.pdf" } }, "score": 0.7409537 }, (略) { "content": { "text": "Title: AWS re:Inforce 2023 - Outbound security implementation with AWS Network Firewall & Route 53 (NIS305) - Hello everyone and welcome to our session on Outbound security with AWS Network Firewall and DNS Firewall. Super excited to be with our customer, Robinhood. - I'm Paul Radulovic, head of platform security for Robinhood. - All right, so agenda-wise we're gonna be looking at what is egress security, a quick overview of this two primary security services that we see customers being successful with around egress control. And then why are customers doing this? You know, why are customers investing and spending time on this? Then we'll zoom in a little bit on a specific exploit just to understand how these things typically work and the opportunities that we have to both detect and block bad things from happening. And then I'll pass it off to Paul to talk about Robinhood's egress security journey. So what in the world is egress security? Egress security, in terms of an AWS VPC, it's really your workloads making a network connection out to somewhere else, usually the internet, right?" }, "location": { "type": "S3", "s3Location": { "uri": "s3://xxxxxxxxxxxxxxxx/KnowlegeBase/[English] AWS re_Inforce 2023 - Outbound security implementation with AWS Network Firewall & Route 53 (NIS305) [DownSub.com].txt" } }, "score": 0.73764765 }, (略) { "content": { "text": "\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Outbound security implementation with AWS Network Firewall & Route 53 Jesse Lepich N I S 3 0 5 Sr. Security Solutions Architect AWS Paul Radulovic (he/him) Head of Platform Security Robinhood \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Agenda What is egress security Quick overview of AWS Network Firewall & Route 53 Resolver DNS Firewall Why are AWS customers spending time on egress security? Anatomy of an exploit Robinhood\u2019s egress security journey, lessons learned, and best practices \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.\u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. What is egress security? \u00a9 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. What is egress security?" }, "location": { "type": "S3", "s3Location": { "uri": "s3://xxxxxxxxxxxxxxxx/KnowlegeBase/NIS305_Outbound-security-implementation-with-AWS-Network-Firewall-and-Route-53.pdf" } }, "score": 0.7173835 }, (略)
uriが、S3のどのファイルから情報を検索してきたか、textが抜き出してきたテキスト、scoreが関連度スコアです。uriを見ると、要約したかったNI305の字幕ファイルもPDFも含まれているので、虚空から回答を作り出したわけではなさそうです。
まとめ
AWSのイベントの動画(字幕)とプレゼン資料PDFをRAG(Knowledge Base for Amazon Bedrock)のデータソースにして、AWS Network Firewallの勉強に使えるかを試してみました。所感は以下の通りです。
- 字幕情報だけではろくな回答が出力されず、予想以上に役に立っていなかった。なぜこれほど有用情報の検索に寄与しなかったのか考えるのは今後の課題。
- プレゼン資料PDFは逆に予想よりは役に立った。パワーポイント系の資料がもとになっているので、文字が細切れになっていたり、画像化されている文字情報も多く、あまり役に立たないのではないかと予想していた。細切れにはなっていても要点はしっかりまとめられていたということだろうか。
- Knowledge Base for Amazon Bedrockが裏でプロンプトエンジニアリングを頑張ってくれている[1]とはいえ、より適切な情報を引き出すためにプロンプトエンジニアリングをもっと頑張る必要があったのかもしれない。
- 結果的には、自分の知らない情報を効率よく知ることができたとは言い難い。(この記事を執筆するために結局一部のプレゼンPDFを読むことになり、そちらの作業の方が実りあるものだった)
おまけ
この動画を要約してください。
この動画の要約 [00:00:02]1 – [00:28:13]2:
この動画では、AWS Network FirewallとSuricata互換のルール作成について説明しています。Suricataのベストプラクティスやポリシーの考慮事項について解説し、カスタムSuricataルールの作成方法をデモで紹介しています。
ハイライト:
[00:01:07]3 AWS Network Firewallの概要
高可用性、フルマネージド、スケーラブルなサービス
AWSが提供する脅威シグネチャやドメインの管理ルールセットを利用可能
Suricataという強力で柔軟なルールエンジンを使用
ディープパケットインスペクションやプロトコル検証などの機能を提供
(以下略)
いいですね!実行するたびに出力内容が違って、要約の品質にもだいぶ幅があるのが気になりますが、嘘らしい嘘はついていないように思います。その内容が動画のどの時間で言及されているか記載があるのもとてもありがたいです。
動画内容の詳細を質問してみます。
この動画で説明されているSuricataルールの例について、この動画で説明されている範囲でできる限り詳しく説明してください。
この動画では、カスタムSuricataルールの例として、以下のようなルールを紹介しています。
TLSトラフィックを許可するルール:このルールは、TLSプロトコルを使用しているトラフィックを検出し、パスアクションで許可します。2このルールは、tls.versionというキーワードを使って、TLSのバージョンを指定します。34このルールは、tls.sniというキーワードを使って、TLSのサーバ名を指定します。
TCPトラフィックをブロックするルール:このルールは、TCPプロトコルを使用しているトラフィックを検出し、ドロップアクションでブロックします。5このルールは、flowというキーワードを使って、トラフィックの方向と状態を指定します。67このルールは、flow:to_server,establishedというオプションを使って、TLSトラフィックを許可するルールと同じレベルで評価されるようにします。8
HTTPトラフィックをログに記録するルール:このルールは、HTTPプロトコルを使用しているトラフィックを検出し、アラートアクションでログに記録します。このルールは、http.methodやhttp.hostといったキーワードを使って、HTTPのメソッドやホスト名を指定します。このルールは、msgやsidといったキーワードを使って、ログに表示するメッセージやルールのIDを指定します。
UDPトラフィックをポート番号で制限するルール:このルールは、UDPプロトコルを使用しているトラフィックを検出し、ドロップアクションで制限します。このルールは、ヘッダー部分にポート番号を指定することで、特定のポートに対するトラフィックをフィルタリングします。このルールは、dsizeというキーワードを使って、データサイズを指定します。
ドメイン名を許可するルール:このルールは、TLSやHTTPの通信におけるドメイン名を検出し、パスアクションで許可します。2このルールは、tls.sniやhttp.hostといったキーワードを使って、ドメイン名を指定します。4このルールは、contentやpcreといったキーワードを使って、ドメイン名のパターンを指定します。
これらのルールの詳細な説明やデモは、動画の[00:36:00] 1 から[00:49:54] 2 までの部分をご覧ください。この部分では、ルールの構文やオプション、効果やログの確認方法などを具体的に示しています。この情報が役立つことを願っています。9他に何か質問がありましたら、お気軽にどうぞ。10よろしくお願いいたします。11
「この動画で説明されている範囲で」という限定をつけてみましたが、どうやら動画で触れられていない内容が紛れ込んでいるように見えます(UDPトラフィックのdsizeキーワードとか)。このあたりはもっと厳密にプロンプトエンジニアリングをしてあげなければいけないところなのでしょうか。Knowledge Base for Amazon Bedrockを使って得た回答に比べるとはるかに内容が充実していて勉強できている感はありますが、誤情報が紛れ込んでいないか油断のできないところです。最後の段落の「この情報が役立つことを願っています」「他に何か質問がありましたら、お気軽にどうぞ」あたりがいかにもChatGPTっぽく、不安を増幅してくれます。
また、「dsizeというキーワードを使って、データサイズを指定します」とか「contentやpcreといったキーワードを使って、ドメイン名のパターンを指定します」とか、詳細を語っているっぽいキーワードを散りばめていて何だか分かった気分になれますが、結局どう使えばよいのかまではよくわかりません。これは動画ではスライドを使って「このルールはこれこれこういう意味で…」と説明しているのに対して、おそらく音声(字幕)情報だけ使用して回答を生成していることを考えると仕方のないことかもしれませんが、結局、詳細を知ろうとすると動画の該当箇所を観ることは避けられないようです。もちろん、この出力を読んだうえで動画を観るのとそうでないのとでは理解度が全く違うので、これだけでも非常にありがたいことではあります。
おまけ その2
この記事を書くためにPDF資料を読み込んでいたら、半月ほどず~っと悩んでいた事象に対する答えが見つかりました。