$EXTERNAL_NET any (tls.sni; content:"evil.com"; startswith; nocase; endswith; msg:"matching TLS denylisted FQDNs"; priority:1; flow:to_server, established; sid:1; rev:1; gid:255;) , reason: GIDs are not" /> $EXTERNAL_NET any (tls.sni; content:"evil.com"; startswith; nocase; endswith; msg:"matching TLS denylisted FQDNs"; priority:1; flow:to_server, established; sid:1; rev:1; gid:255;) , reason: GIDs are not" />

ヤマムギ

growing hard days.

*

AWS Network Firewallの入門

      2021/10/05

公式のGetting started with AWS Network Firewallを参考に試してみました。

構成

最終形はこうなるように試してみました。
VPCのサブネットはあらかじめ作成しておきました。

ルールグループの作成

ステートレスルールを選択して作成しました。
キャパシティはチュートリアルどおり10にしました。

これもチュートリアルどおり、アクションはドロップで、指定のCIDRを設定しました。

これでステートレスルールの設定は完了です。
存在しないIPアドレスに設定しても面白くないので、後に送信元をVPCのCIDRにして、実在するWebサーバーへの送信をブロックしてみました。

ステートフルルールも作成しました。
5-tuple、Domain list、Suricata互換のIPSルールから選択できますが、Suricata互換のIPSルールを選択しました。

stateful rule is invalid, rule: drop tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:”evil.com”; startswith; nocase; endswith; msg:”matching TLS denylisted FQDNs”; priority:1; flow:to_server, established; sid:1; rev:1; gid:255;) , reason: GIDs are not allowed. Illegal option(s): [gid:255]

チュートリアルの上記のルールでは、gidをサポートしてないってエラーになったので、最終的にgidを抜いて作りました。

ステートフルとステートレスのルールができました。

ルールポリシーの作成

先程作ったステートレスルールとステートフルルールを選択しました。

ファイヤーウォールの作成

Network Firewall用に作成したサブネットを指定しました。

さきほど作成したポリシーを関連付けしました。

ログの設定

アラートが出力されるように設定しました。

ルートテーブルの設定

以下を追加しました。

IGWイングレスルートテーブル

FirewallエンドポイントのVPCエンドポイントIDをターゲットとして、NATゲートウェイが配置されたサブネットを指定しました。

Firewallエンドポイントのサブネット

0.0.0.0/0へのターゲットにインターネットゲートウェイを指定しました。

NATゲートウェイのサブネット

0.0.0.0/0へのターゲットにFirewallエンドポイントのVPCエンドポイントIDを指定しました。

プライベートサブネット

従来のプライベートサブネットと変わりなく、NATゲートウェイへ向けています。

確認

SSMManagedInstanceCoreポリシーをアタッチしたIAMロールを設定したEC2インスタンスをプライベートサブネットで起動して、セッションマネージャで接続しました。

Suricata互換のIPSルールでは、どうやら”https://evil.com”へのリクエストがブロックされるのかなと思い試しました。
念の為、手元のMacからは、https://evil.comもhttps://www.evil.comも接続できることを確認しています。

ステートフルルールが効いているようです。

CloudWatch Logsにもalertログが出力されていました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS ,

ad

ad

  関連記事

JAWS DAYS 2018 「Cost-Driven AWS クラウドアーキテクチャデザインとコスト最適化方法 – Cost-Driven AWS Cloud Architecture Design : The Lean Startup on AWS」を聞きました

以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …

「AWS認定試験対策 AWS クラウドプラクティショナー」の出版が確定したのでAmazon著者セントラルに登録した

初の執筆本、「AWS認定試験対策 AWS クラウドプラクティショナー」の出版が確 …

EC2 Auto Recovery機能を設定しておいた

以前EC2インスタンスのリタイア対象になったこともあり、というより、やっておいて …

「AWSではじめるLinux入門ガイド 」を執筆しました

2020年4月30日に、「AWSではじめるLinux入門ガイド」という本を発行い …

Backlogの実績工数をAmazon QuickSightでの可視化 – 仕組み編

Backlogの実績工数をAmazon QuickSightで可視化してわかった …

AWS CodeStarのプロジェクトテンプレートLambda+Pythonによって生成されるもの

勉強会のデモで、AWS CodeStarのプロジェクトテンプレートLambda+ …

AWS Secrets ManagerのローテーションでLambda関数の管理が必要なくなりました

Amazon RDS と AWS Secrets Manager の統合を発表と …

VPC新コンソールの日本語UIでルートテーブル編集時のエラー(2021/6/10)が発生したのでフィードバックを送った

VPCの新コンソールがリリースされていたので使って作業してましたところ、こんなエ …

S3に置いたMP3ファイルをTwilioから電話再生する(AWS Lambda Python)

Google Calendar Twilio ReminderのTwilioを使 …

Cloud9初回アクセス時にCodeCommitのリポジトリを自動でクローンする

CloudFormationからCloud9環境を作成する際に、Reposito …